我的 Excel 工作簿中有 3 张工作表,我想比较工作表 1 中的 C 列和工作表 2 中的 C 列,如果在任何地方都存在相同的数字,那么我希望将工作表 2 中的 G 列的值放入工作表 3 中的 G 列中
答案1
假设你有 sheet1:
a b 1
a b 2
a b 3
a b 4
a b 5
和 sheet2:
a b 6 ... x
a b 2 ... gg
a b 7 ... x
a b 5 ... zz
a b 8 ... x
因此,在 Sheet3 上您想要(有或没有列 A..F)
a b 2 ... gg
a b 5 ... zz
最简单的解决方案,但需要一些手动操作:
在 Sheet2 中添加一列,使用以下公式(假设标题在第 1 行)
=IF(ISERROR(MATCH(C2,Sheet1!$C$2:$C$100000,0)),FALSE,TRUE)
向 sheet2 添加一个过滤器并过滤 TRUE。复制并粘贴到 sheet3
仅使用公式(无需手动复制和粘贴):
Excel 中并不存在公式“如果为真则复制”。它要求具有公式的单元格可以更改另一个单元格中的值(而不仅仅是其自身的值)。这与电子表格的工作方式背道而驰,会导致各种令人讨厌的循环逻辑和缓慢的计算。想象一下,您正在将公式输入要复制到的单元格(Sheet3!G2...)。此公式可以查找 Sheet2!G 列,参考它的价值(但不是硬拷贝)。
因此,您可以在 Sheet3!G2 中输入:
=IF(ISERROR(MATCH(Sheet2!C2,Sheet1!$C$2:$C$100000,0)),"",Sheet2!G2)
您将获得比较数据,但也有许多未发生匹配的空行。您可以再次添加过滤器以删除空白行。
要完全使用公式解决这个问题,您必须对 Sheet2 中的匹配项进行编号,如下所示:
a b 6 ... x 0
a b 2 ... gg 1
a b 7 ... x 1
a b 5 ... zz 2
a b 8 ... x 2
在 Sheet2 的 H 列中使用此公式,从 H2 开始:
=IF(ISERROR(MATCH(C2,Sheet1!$C$2:$C$100000,0)),IF(ROW() = 2,0,H1+1), IF(ROW() = 2,1,H1+1))
然后使用 Sheet3 的 G 列中的 INDEX、MATCH 和 ROW 函数查找这些匹配项,从 G2 开始:
=INDEX(Sheet2!$G$2:$G$100000,MATCH(ROW()-1,Sheet2!$H$2:$H$100000,0))