0

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

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

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

4

1 回答 1

0

由于在我看来,您可能只需要一次(或一年一次)效率似乎不是很重要,因此公式可能会起作用。

假设 Row1 中的标签(分别在 Sheet1Item_Name 和Sheet2 中) ,则以下公式(复制下来以适应)应指示不匹配的位置(或者,如果存在,则相对于去年的价格变化:Price_OItem_NamePrice_NDiff#N/A

在 Sheet1 C2 中:=IF(MATCH(A2,Sheet2!A:A,0)>0,"")
在 Sheet2 C2 中:=B2-VLOOKUP(A2,Sheet1!A:B,2,FALSE)


或者,数据透视表可能会提供更好的概览,并结合:

在 Sheet2 H5 中:(=IF(OR(ISBLANK(F5),ISBLANK(G5)),"No Match",G5-F5)复制下来以适应)。

  1. 在 Sheet2 E1 中调用数据透视表向导(Alt+D,P 如果需要),选择多个合并范围和数据透视表,下一步。
  2. 选择我将创建页面字段,下一步。
  3. 在 Range 中选择或插入 Sheet1!$A:$B, Add, 然后 Sheet2!$A$B, Add, Next, 选择 Existing worksheet 并输入=$E$3, Finish。
  4. 右键单击表格,如有必要,将 Σ 值从 Count of Value 更改为 Sum of Value(左键单击 Count of Value,左键单击 Value Field Settings... 并在 Summarize by 中选择 Sum),确定。
  5. 右键单击表格,左键单击数据透视表选项,左键单击总计和过滤器,如有必要,取消勾选显示行总计,确定。
  6. 如有必要,右击PriceN表格中的Sort,Sort ZA。

SO12563000 示例

于 2013-05-23T01:25:03.337 回答