需要匹配不同工作表中的数据并替换另一个单元格中的数据(如果匹配)

时间:2014-01-31 18:59:48

标签: excel excel-vba excel-formula formulas array-formulas vba

我需要将第A2列中的数据和第1列中的数据匹配到第A2列中的数据,依此类推第2页中的数据。如果第1页和第2页的A列中的数据匹配,我需要B列和B列中的数据;表2中的C代替B列和B列中的数据。第1页的C.我知道做这种事情很少,所以任何帮助都会非常感激!
第1页

     A     B     C
2  12345  5.35  9.95
3  15874  4.22  10.99
4  11111  2.24  5.99
5  98745  5.33  9.95
6  88552  4.24  8.95


第2页

     A     B     C
2  11111  2.09  5.79
3  12345  5.11  9.89
4  88552  4.01  8.79


需要第1页改为

     A     B     C
2  12345  5.11  9.89
3  15874  4.22  10.99
4  11111  2.09  5.79
5  98745  5.33  9.95
6  88552  4.01  8.79

2 个答案:

答案 0 :(得分:1)

在第三张纸上使用这些功能

column a ='sheet1'!a2
column b =if('sheet1'!b2='sheet2'!b2,'sheet2'!b2,'sheet1'!b2)
column c =if('sheet1'!c2='sheet2'!c2,'sheet2'!c2,'sheet1'!c2)

复制sheet3并将值粘贴到sheet1中。 除非列a匹配,否则这应该有效。或者如果你需要动态地这样做。如果列a不匹配,则可以抛出一些vlookup。

我的数据在列中匹配,您的公式看起来像这样。

column a ='sheet1'!a2
column b =if(not(iserror(vlookup(a2,'sheet2'!a:c,2,false))),vlookup(a2,'sheet2'!a:c,2,false),vlookup(a2,'sheet1'!a:c,2,false))
column c =if(not(iserror(vlookup(a2,'sheet2'!a:c,3,false))),vlookup(a2,'sheet2'!a:c,3,false),vlookup(a2,'sheet1'!a:c,3,false))

答案 1 :(得分:0)

这太过于无法发表评论所以我正在回答它。

我所处的方式是,因为sheet1有更多数据,所以当sheet1和2都有行数据时,你只想进行这种比较。所以如果sheet1的行数为1 - 100,而sheet2的行数为1到50,那么你只想对sheet1中的前50行进行这种比较吗?

因此,您可以在sheet1中找到未使用的列,而不是复制和粘贴公式。转到第一行。在公式框中,键入:“= if(”不带引号。现在,选择要比较的第一个单元格,根据您的示例选择sheet1,A2。然后键入“=”不带引号。然后选择第二个单元格你想要比较 - 在​​你的例子中,sheet2,A2。然后键入“,”不带引号。然后选择你想要数据的单元格,如果前两个单元格相等。在你的例子中,sheet2 B2。然后输入“, “如果前两个单元格不相等,则选择具有要使用的数据的单元格。在您的示例中,sheet1 b2。然后键入”)“,不带引号。

所以使用你的例子,该函数看起来类似于bigtree的含义:=if('sheet1'!A2='sheet2'!A2,'sheet2'!b2,'sheet1'!b2)

所以,这会将sheet1单元格A2与sheet2 A2进行比较,如果它们相等,则放入公式的单元格将具有sheet2 b2的值,如果它们不相等,则具有此公式的单元格将具有sheet1 B2的值。然后,将此公式向下拖动所需的行数,然后公式将自动调整每行。你会看到数字增加。然后,选择包含公式的列,右键单击并选择复制,然后右键单击并转到粘贴特殊,然后单击值。这将使列只包含值,而不包含公式,现在您可以将此数据粘贴到B列表1中。

您可以将此公式重复用于任何列,只需按照步骤操作即可。

HTH,祝你好运!