Excel如何比较2列范围

Posted

技术标签:

【中文标题】Excel如何比较2列范围【英文标题】:Excel How to compare 2 Column Ranges 【发布时间】:2018-03-09 07:56:06 【问题描述】:

我正在尝试比较 Excel 中的两组列范围。

我知道标准比较公式:

例如。 =(A1=E1)

我正在寻找的是以下公式的替代品 =AND(A1=E1,B1=F1,C1=G1)

由于列数很大,我在考虑是否可以使用单元格范围。

【问题讨论】:

【参考方案1】:

比@Chronocidal 慢一点,只是为了观察

=AND(A1:C1=E1:G1)

如果使用

作为数组公式输入也可以

CtrlShift回车

【讨论】:

【参考方案2】:

=SUMPRODUCT(PRODUCT(--(A1:D1=E1:H1)))

SUMPRODUCT 是强制它作为一个数组公式计算

PRODUCT 将所有值相乘

--TRUE 转换为1FALSE 转换为0

A1:D1=E1:H1,作为数组公式求值,给出数组A1=E1,B1=F1,C1=G1,D1=H1

因此,数组被计算为TRUEFALSE 的列表。 -- 将其转换为1s 和0s 的列表,PRODUCT 将列表中的所有值相乘。 (10 的乘法与 ANDTRUEFALSE 的乘法相同) - 如果你使用“评估公式”,你可以逐步观察它的发生

EDIT 正如 Tom Sharpe 在他的回答中指出的那样,我稍微复杂了一点 - 您可以使用 AND 而不是 PRODUCT,如下所示: =SUMPRODUCT(--AND(A1:D1=E1:H1))

【讨论】:

【参考方案3】:

也许,

=a1&b1&c1=e1&f1&g1

较新的textjoin 可以处理更大的范围。

=textjoin("", true, a1:c1)=textjoin("", true, e1:g1)

如果您没有较新的 TextJoin 函数,这里有一个快速 VBA UDF(用户定义函数),您可以使用它来替代。

function tj(rng as range, optional delim as string = ";") as string
   dim val as range, str as string
   for each val in rng
       str = str & delim & val.value2
   next val
   tj = mid(str, len(delim)+1)
end function

【讨论】:

我有 Office 2010,所以文本连接似乎不起作用。 为你添加了一个 udf 建议两个公式使用非空分隔符,否则 1 23 4 将匹配 12 3 4 等。

以上是关于Excel如何比较2列范围的主要内容,如果未能解决你的问题,请参考以下文章

Excel - 如何比较 2 列中的单元格,然后如果 B 列匹配,则使用 B 列中匹配单元格旁边的 C 列中的值?

Excel 2010 比较多列(2 列与其他 2 列)

如何比较excel两列数据是否相同

如何使用 VBA 在 Excel 宏中删除具有两列的重复项?

比较包含重复项的2列excel

如何比较重复的列,每个列都有一个数字范围,如果它们的数字范围相互重叠,则返回错误?