将数据从一个工作表列匹配到另一个工作表列

时间:2012-09-24 10:18:15

标签: loops vbscript matching vlookup if-statement

我有两个包含两列数据的工作表。工作表的A列是项目的名称,B列是项目的价格。工作表1的价格来自去年,工作表2的价格来自今年。工作表1中的项目名称可能在工作表2中,也可能不在。

我需要一个与每个工作表中的名称相匹配的流程,如果匹配则确定该项目的价格差异。价格差异将在工作表2的C列中。

我考虑过使用带有vlookup函数的if-then函数但是,我需要在工作表1的所有列A和所有记录的工作表2中检查匹配。我相信VB循环过程可能更有效。

1 个答案:

答案 0 :(得分:0)

因为在我看来你只需要这一次(或一年一次)效率似乎不是很重要,所以公式可以服务。

假设Row1中的Sheet1(Sheet1中的Item_NamePrice_OItem_NamePrice_N中的标签分别为Diff#N/A,则以下公式(已复制)应该指出哪里没有匹配(用=IF(MATCH(A2,Sheet2!A:A,0)>0,"")或者,如果有的话,应该指出相对于去年的价格变化:

在Sheet1 C2中:=B2-VLOOKUP(A2,Sheet1!A:B,2,FALSE)
在Sheet2 C2中:=IF(OR(ISBLANK(F5),ISBLANK(G5)),"No Match",G5-F5)


或者,数据透视表可以提供更好的概述,并结合:

在Sheet2 H5中:=$E$3(向下复制以适应)。

  1. 在Sheet2 E1中调用数据透视表向导(Alt + D,P,如果需要),选择多个合并范围和数据透视表,下一步。
  2. 选择我将创建页面字段,下一步。
  3. 在范围内选择或插入Sheet1!$ A:$ B,添加,然后是Sheet2!$ A $ B,添加,接下来,选择现有工作表并输入PriceN,完成。
  4. 右键单击表格,如有必要,将Σ值从计数值更改为值总和(左键单击值计数,左键单击值字段设置...并选择总和中的总和),确定。
  5. 右键单击表格,左键单击数据透视表选项,左键单击Totals&过滤器,如有必要,请取消显示行的总计,确定。
  6. 如有必要,右键单击表格中的{{1}},排序,排序Z-A。

  7. SO12563000 example