需要根据匹配将一个工作表中多个列的值添加到另一工作表中

时间:2019-02-04 16:35:40

标签: excel vba excel-formula excel-2010

一个工作簿,多个工作表(选项卡)

工作表 1 A – K列中的每个单元格中都有数据。 对于任何给定的行,列G, H, I, J, K中的值直接对应于列B

中的值

工作表 2 A – P列中的每个单元格中都有数据。

我想要一个公式,以便: 每当工作表 1 上的列B中的值与工作表 2 上的列N中的任何相同值匹配时, 将相应的值从工作表 1 中的列G, H, I, J, K传递到工作表 2 中的列Q, R, S, T, U

1 个答案:

答案 0 :(得分:0)

这可以使用INDEX和MATCH完成。

INDEX从数组返回一个值,我们必须提供行和列。 MATCH返回值在数组中的位置。如果数组是列,则将返回行号;如果数组是行,则将返回列号。 说这就是您的sheet1的样子。:

Sheet 1

在这种情况下,我们想在工作表2的N列中找到“高兴”,看起来像这样:

Sheet 2

“快乐”出现在第10行的N列中。因此,我们要从G3工作表1中检索“测试”,并希望其出现在Q10工作表2中。为此,我们可以使用以下代码:

=INDEX(Sheet1!$A$1:$K$10,MATCH(Sheet2!$N10,Sheet1!$B$1:$B$10,0),7)

要对此进行细分(关注第1和第3个项目[暂时忽略MATCH部分]):

INDEX(array,row,col) 

其中数组是sheet1 A1:P15。在Q列工作表2中,我们需要G列工作表1中的值,因此列号为6(6 ='7',出现在右括号之前)。

但是哪一行?这是MATCH发挥作用的地方:

MATCH(lookup_value, lookup_array, [match_type])

我们希望B栏第1页中出现“ happy”的行,而我们编写的MATCH公式为:

MATCH(Sheet2!$N10,Sheet1!$B$1:$B$10,0)

在这里,我们要查找的值是N10中的“ happy”,所以这就是我们的lookup_value(注意$N10,N列是绝对的,而row是相对的)。 现在我们要在哪里尝试寻找“快乐”?是的,在工作表1的B列中,所以我们有Sheet1!$B$1:$B$10(如果要搜索整列,也可以使用Sheet1!$B:$B)。 最后,我们将match_type设为0,因为0代表精确值。我们想找到确切的短语“ happy”。

将它们放在一起,我们为Q列提供以下代码:

=INDEX(Sheet1!$A$1:$K$10,MATCH(Sheet2!$N10,Sheet1!$B$1:$B$10,0),7)

对于R列,唯一改变的是我们不再需要G列第1页中的值,我们想要H列第1页中的值,因此末尾的7变为8:

=INDEX(Sheet1!$A$1:$K$10,MATCH(Sheet2!$N10,Sheet1!$B$1:$B$10,0),8)

enter image description here

很抱歉,冗长的解释只是想确保您理解代码,以便您可以根据需要对其进行编辑。希望这会有所帮助。