我的 Excel 电子表格包含 2 列国家代码。我想比较这两列并返回其中一列中存在但不存在于另一列中的任何值。
A | 乙 | C | 德 |
---|---|---|---|
英国、德国、美国 | 英国、德国、南非 | 我们 | 南非 |
我有一个很大的 Excel 文件,我想使用公式来提取它。
答案1
一种方法是使用以下方法将两个文本字符串转换为数组文本分割然后使用地图在每个数组上检查每个值与另一个数组进行比较,以确定拉姆达函数。使用让函数可以将中间值存储在变量中,以便可以在计算中重复使用
脚步
- 检查是否匹配,尝试筛选在每个值上对立数组。如果值存在,则返回该值;如果不存在,则返回错误
FILTER(<array>,<array>=<value>)
- 包装筛选功能错误信息允许返回
0
(任意选择)而不是错误。
IFERROR(FILTER(<array>,<array>=<value>),)
- 如果为 TRUE,则返回 IF 条件的
0
值;如果为 FALSE,则返回 NULL
IF(IFERROR(FILTER(<array>,<array>=<value>),)=0,<value>,"")
- 地图用于将要测试的值数组传递到拉姆达包含公式的函数。输出将是一个行数组,这些行要么为空,要么具有唯一值。
- 文本连接将数组转换为字符串,同时删除所有空值
- 堆栈创建了一个 2 列数组,其中 col1 中包含来自 cell1 的唯一值,col2 中包含来自 cell2 的唯一值
Excel 公式
=LET(
ar1A, TEXTSPLIT(A2,,","),
ar2A, TEXTSPLIT(B2,,","),
ar1B, MAP(ar1A,LAMBDA(r,IF(IFERROR(FILTER(ar2A,ar2A=r),0)=0,r,""))),
ar2B, MAP(ar2A,LAMBDA(r,IF(IFERROR(FILTER(ar1A,ar1A=r),0)=0,r,""))),
HSTACK(TEXTJOIN(",",TRUE,ar1B),TEXTJOIN(",",TRUE,ar2B))
)
每个单元格找到一个值
在单元格中找到多个值
一个单元格中未找到值