我试图比较两个工作簿,如果前3列匹配,将第5列复制到第5列第一个工作簿。
必须在整个工作表中完成此检查。
工作表1:
| Heading 1 | Heading2 | Heading 3 | Total | Number1 |
|-----------|----------|-----------|-------|---------|
| ABC | EF | GH | | |
| XYZ | AB | EF | | |
| HIK | IJ | PQ | | |
工作表2:
| Heading 1 | Heading2 | Heading 3 | Total | Number1 |
|-----------|----------|-----------|-------|---------|
| QRS | EF | GH | | 5 |
| XYZ | AB | EF | | 4 |
| DEF | QR | IV | | 16 |
| HIK | IJ | PQ | | 8 |
期望的输出:
| Heading 1 | Heading2 | Heading 3 | Total | Number1 |
|-----------|----------|-----------|-------|---------|
| ABC | EF | GH | | |
| XYZ | AB | EF | | 4 |
| HIK | IJ | PQ | | 8 |
我尝试了以下操作,但它不起作用:
Dim i As Integer
Sheets("Sheet1").Activate
For i = 2 To 100
ActiveSheet.Cells(i,5).Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(AND(Table2[@[Heading1]]=Consolidated!RC[-4],Table2[@[Heading2]]=Consolidated!RC[-3],Table2[@[Heading3]]=Consolidated!RC[-2]),Table2[Number1],"" ""),"" "")"
Next i
我是VBA新手,非常感谢任何帮助。
你可以用公式做到这一点,不需要代码。我假设“标题1”在单元格A1中为此:在标题3和总计之间添加一个新列。在第一个单元格中添加公式= A2&B2&c2并向下复制。在其他工作簿中执行相同的操作。现在在第一本书的Number1中输入这个公式
=IFERROR(OFFSET([OtherWorkbook]SheetName!D2,MATCH(D2,[OtherWorkbook]Sheetname!D2:D5),2),"")
(使用工作簿和工作表名称。现在复制下来。然后,您可以通过在两本书中将其宽度设置为零来隐藏我们在开始时添加的列。