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
转换为1
和FALSE
转换为0
A1:D1=E1:H1
,作为数组公式求值,给出数组A1=E1,B1=F1,C1=G1,D1=H1
因此,数组被计算为TRUE
和FALSE
的列表。 --
将其转换为1
s 和0
s 的列表,PRODUCT
将列表中的所有值相乘。 (1
和 0
的乘法与 AND
与 TRUE
和 FALSE
的乘法相同) - 如果你使用“评估公式”,你可以逐步观察它的发生
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 列中的值?