Google 将 table 转换为嵌套树输出或层次结构输出的工作表
Google Sheets to transform a table into a nested tree output or hierarchical structure output
嗨,
只是想知道是否有一种简单的方法可以将 Google Sheets 原始输入单元格转换为更具可读性的 table 选项 A 甚至选项 B?
我知道我可以使用 App Script 做到这一点,但我很好奇是否有一些智能解决方案,例如 Query/Filter/Sort 的组合,而不需要 App Script 解决方案。
尝试:
=ARRAYFORMULA(TRIM(FLATTEN(SPLIT(QUERY(FLATTEN(QUERY(TRANSPOSE(
QUERY(QUERY({A3:A&"×", "- "&B3:B&"×", B3:B},
"select Col1,max(Col2) where Col3 is not null group by Col1 pivot Col3"),
"offset 1", 0)),, 9^9)),,9^9), "×"))))
或:
=ARRAYFORMULA(TRIM(SPLIT(FLATTEN(SPLIT(QUERY(FLATTEN(QUERY(TRANSPOSE(
QUERY(QUERY({A3:A&"×", "¤"&B3:B&"×", B3:B},
"select Col1,max(Col2) where Col3 is not null group by Col1 pivot Col3"),
"offset 1", 0)),, 9^9)),,9^9), "×")), "¤")))
另一种方法(对于您的首选安排,假设 non-header 数据在 A3:B 中运行):
=ArrayFormula(SPLIT(QUERY({VLOOKUP(UNIQUE(FILTER(A3:A,A3:A<>""))&"*",{A3:A,ROW(A3:A)&"-"&COLUMN(A3:A)},{1,2},FALSE);FILTER({"|"&B3:B,ROW(B3:B)&"-"&COLUMN(B3:B)},A3:A<>"")},"Select Col1 ORDER BY Col2"),"|",1,0))
ADDENDUM(基于张贴者的附加评论):
此版本的公式适用于未排序的原始数据:
=ArrayFormula(SPLIT(QUERY({VLOOKUP(SORT(UNIQUE(FILTER(A3:A,A3:A<>"")))&"*",{SORT(FILTER(A3:A,A3:A<>"")),SEQUENCE(COUNTA(A3:A),1)&"-"&COLUMN(A1)},{1,2},FALSE);SORT(FILTER("|"&B3:B,A3:A<>""),1,1,2,1),SEQUENCE(COUNTA(A3:A),1)&"-"&COLUMN(B1)},"Select Col1 ORDER BY Col2"),"|",1,0))
嗨, 只是想知道是否有一种简单的方法可以将 Google Sheets 原始输入单元格转换为更具可读性的 table 选项 A 甚至选项 B?
我知道我可以使用 App Script 做到这一点,但我很好奇是否有一些智能解决方案,例如 Query/Filter/Sort 的组合,而不需要 App Script 解决方案。
尝试:
=ARRAYFORMULA(TRIM(FLATTEN(SPLIT(QUERY(FLATTEN(QUERY(TRANSPOSE(
QUERY(QUERY({A3:A&"×", "- "&B3:B&"×", B3:B},
"select Col1,max(Col2) where Col3 is not null group by Col1 pivot Col3"),
"offset 1", 0)),, 9^9)),,9^9), "×"))))
或:
=ARRAYFORMULA(TRIM(SPLIT(FLATTEN(SPLIT(QUERY(FLATTEN(QUERY(TRANSPOSE(
QUERY(QUERY({A3:A&"×", "¤"&B3:B&"×", B3:B},
"select Col1,max(Col2) where Col3 is not null group by Col1 pivot Col3"),
"offset 1", 0)),, 9^9)),,9^9), "×")), "¤")))
另一种方法(对于您的首选安排,假设 non-header 数据在 A3:B 中运行):
=ArrayFormula(SPLIT(QUERY({VLOOKUP(UNIQUE(FILTER(A3:A,A3:A<>""))&"*",{A3:A,ROW(A3:A)&"-"&COLUMN(A3:A)},{1,2},FALSE);FILTER({"|"&B3:B,ROW(B3:B)&"-"&COLUMN(B3:B)},A3:A<>"")},"Select Col1 ORDER BY Col2"),"|",1,0))
ADDENDUM(基于张贴者的附加评论):
此版本的公式适用于未排序的原始数据:
=ArrayFormula(SPLIT(QUERY({VLOOKUP(SORT(UNIQUE(FILTER(A3:A,A3:A<>"")))&"*",{SORT(FILTER(A3:A,A3:A<>"")),SEQUENCE(COUNTA(A3:A),1)&"-"&COLUMN(A1)},{1,2},FALSE);SORT(FILTER("|"&B3:B,A3:A<>""),1,1,2,1),SEQUENCE(COUNTA(A3:A),1)&"-"&COLUMN(B1)},"Select Col1 ORDER BY Col2"),"|",1,0))