使用INDIRECT比较多个Excel选项卡中的列

时间:2015-06-03 20:24:14

标签: excel concatenation excel-indirect

我正在寻找一种非常广泛且动态的方法来检查并查看两列中的内容是否相同(列位于两个不同的选项卡中)。内容因文字,数字和日期而异。

到目前为止,我尝试这样做的唯一方法是组合每列中的所有条目并进行比较。例如,我会将列的所有条目附加在一起,并将其与其他附加列进行比较。不幸的是,我无法找到一种快速有效地附加列的方法。

我从CONCATENATE函数开始,但很快意识到此函数需要手动输入值,并且无法识别使用INDIRECT创建的范围。如果我可以INDIRECT使用CONCATENATE,那么我就可以轻松地比较两列的值。

我最好使用INDIRECT来创建范围,因为我需要比较数千个列,因为我知道我要比较的所有列的位置。

以下示例非常基本,仅用于解释我的需求。我试图将单元格C7:C16与位于“Sheet1”中的列进行比较,单元格A1:A10。

另一个例子,CONCATENATE(D7:16)会导致abcdefghij,并会与Sheet3中找到的CONCATENATE进行比较!A1:A10。

需要:使用INDIRECT连接指定范围内的条目的方法,以便比较它们的正确性。

关于如何实现这一目标的任何意见?

enter image description here

1 个答案:

答案 0 :(得分:1)

您正尝试使用Concatenate附加范围内的所有单元格。那样不行。连接需要单独的参数,而不是范围。

对于这样的比较,您需要一个数组公式。

从C7到C100选择所有单元格(或者对于数据最多的列,您需要多行),然后输入此公式

=INDIRECT("'"&C$1&"'"&"!"&C$2&C$3&":"&C$2&C$4)

并使用 Ctrl 确认 - Shift - 输入

将立即填充所有单元格,您将看到在前四行中指定的范围值。

将公式复制到D列。

在E7中输入公式

=C7=D7

并复制下来。现在,您可以使用Countif来计算E列中的FALSE值,并使用它来确定列是否相同。在C6:

=IF(COUNTIF(E:E,FALSE),"not the same","identical")

您可以使用条件格式来突出显示“FALSE”值。

参考屏幕截图。

enter image description here