合并/堆叠 excel 列范围定义,不带 VBA
Merge / stack excel columns range definition without VBA
我想合并/堆叠 2 个不同列的值并获得唯一值。
如果范围相邻,则可以正常工作。例如:
=UNIQUE(FILTERXML("<a><b>"&SUBSTITUTE(TEXTJOIN(",",TRUE,TRANSPOSE(SRC!$A:$C)),",","</b><b>")&"</b></a>","//b"))
但是,我不知道如何对非相邻列(例如 A 列和 C 列)执行此操作。
像这样定义转置区域 A:A,C:C 不起作用。
所以基本上,我有两个问题:
- 如何堆叠/合并非相邻列(我假设有多种方法)?
- 如何在像 (A1:A12,C2:C22) 这样的公式中定义不规则范围?
我需要使用公式,而不是 VBA 或 Excel GUI。
谢谢!
由于简短(目前在 ms365 的 BETA-channels 中),可以选择 VSTACK()
将不同的范围合并到一个列中。参数可以是non-contiguous不规则(但垂直)的数组:
E1
中的公式:
=UNIQUE(VSTACK(A2:A5,C3:C7))
请注意,即使您有不规则的 non-contiguous 范围,TEXTJOIN()
也可以轻松容纳多个范围,而不仅仅是一个范围。将该逻辑应用于上面的示例数据:
=UNIQUE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,A2:A5,C3:C7)&"</s></t>","//s"))
旁注;但可以找到相关问题 and here 以获得更多灵感。
我想合并/堆叠 2 个不同列的值并获得唯一值。 如果范围相邻,则可以正常工作。例如:
=UNIQUE(FILTERXML("<a><b>"&SUBSTITUTE(TEXTJOIN(",",TRUE,TRANSPOSE(SRC!$A:$C)),",","</b><b>")&"</b></a>","//b"))
但是,我不知道如何对非相邻列(例如 A 列和 C 列)执行此操作。 像这样定义转置区域 A:A,C:C 不起作用。 所以基本上,我有两个问题:
- 如何堆叠/合并非相邻列(我假设有多种方法)?
- 如何在像 (A1:A12,C2:C22) 这样的公式中定义不规则范围?
我需要使用公式,而不是 VBA 或 Excel GUI。 谢谢!
由于简短(目前在 ms365 的 BETA-channels 中),可以选择 VSTACK()
将不同的范围合并到一个列中。参数可以是non-contiguous不规则(但垂直)的数组:
E1
中的公式:
=UNIQUE(VSTACK(A2:A5,C3:C7))
请注意,即使您有不规则的 non-contiguous 范围,TEXTJOIN()
也可以轻松容纳多个范围,而不仅仅是一个范围。将该逻辑应用于上面的示例数据:
=UNIQUE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,A2:A5,C3:C7)&"</s></t>","//s"))
旁注;但可以找到相关问题