我在两个工作表上有两个表--比如tblFruits 1和tblFruits 2。这两个表都有一个列“Name”。例如,Apple在这两个表上都存在。这两个表的行数可能不同
- 工作表1上的tbl水果1 *
| 名称名称名称|颜色|
| - -|- -|
| 苹果公司|红色的|
| 桃色|黄色的|
| 菠萝属|黄色的|
- 工作表2上的tblFruits 2 *
| 名称名称名称|颜色|
| - -|- -|
| 苹果公司|红色的|
| 樱桃色|红色的|
| 香蕉色|黄色的|
| 梅洛内|绿色|
现在我想在第三张纸上得到两个表的唯一名称列表。
工作表3上的预期结果
| 名称名称名称|
| - -|
| 苹果公司|
| 桃色|
| 菠萝属|
| 樱桃色|
| 香蕉色|
| 梅洛内|=UNION((tblFruits1[Name],tblFruits2[Name]))
会传回错误。
我尝试了SEQUENCE
和INDEX
的变体,但没有成功。
所以问题是:
如何从两个不同工作表上的两个列区域中“构造”UNIQUE的矩阵参数?
(What我正在寻找的是非VBA-解决方案-我知道如何在VBA中处理此问题。)
6条答案
按热度按时间r6hnlfcb1#
VSTACK
函数使Union过时(在编写时仅内部人员可用)由于查找多个范围的并集本身是一个非常有用的函数,因此我使用LAMBDA函数来实现。
Lambda,我毫无想象地称之为UNION
然后
提供您所寻求的结果
gzszwxb42#
请尝试:
tyky79it3#
这是我创建的一个解决方案,你可以用任意两个数组,动态数组等替换a2#和c2#。它还可以删除重复数据并排序。这在Excel for Mac上工作(不支持FILTERXML)
roqulrg34#
你可以试着这样做,把你的Sheet 1数据和Sheet 2数据放入Table中,然后在你的Sheet 3单元格A2复制粘贴下面的公式
=唯一(过滤器XML(“"&文本连接(“****",1,(IFNA(IF({0,1},表1 [名称],表2 [名称]),"”)))&"","//b”),FALSE,FALSE)
x33g5p2x5#
有一个新的函数可以简化这一过程:VSTACK
对于唯一(不同)联合(根据原始问题),请尝试以下操作:
要对它们进行分类:
yc0p9oo06#
此时我没有
VSTACK
或HSTACK
(或者LAMDA
),除非我把工作簿保存在又慢又笨重的Excel Online上。(命名为× ×三× ×、× ×四× ×、× ×五× ×)、然后(为了保持可读性)使用一个命名公式combo,定义为=SEQUENCE(ROWS(three)+ROWS(four)+ROWS(five))
。如果你愿意,你可以用
UNIQUE
和/或SORT
环绕它。如果数组有3列而不是2列,那么在公式中使用{1,2,3}
。显然,你可以通过在IFS
公式中构建更多的条件来扩展到3个以上的数组。也许值得注意的是,
three
与INDEX(three,combo,{1,2})
是一样的,使用COLUMN(three)
会使语法更具有普遍性,尽管如果您希望在输出中出现类似{2,1,3}
的内容,它不允许您对列进行重新排序。TRUE
实际上是在IFS
公式中表示“ELSE”的方式--它比combo<=ROWS(three)+ROWS(four)+ROWS(five)
更简洁。使用这些较长的形式会使公式更对称,但也更冗长!(It如果
VSTACK
在桌面上可用,那就太好了。)