VBA excel - 将数据粘贴到另一个包含列匹配数据的工作表中

时间:2016-04-01 07:21:54

标签: excel vba

我需要帮助在vba中将第2页,第3页,第4页中的数据列插入到第1列中的列标题和生效日期中的第1页

Order date on column B to be paste into sheet 1 with the effective date matches Sheet 1 overview

1 个答案:

答案 0 :(得分:0)

您可以直接在表单元格中键入公式,并正确使用MATCH()和INDEX()函数

这是在这些公式中键入的相应VBA代码

Sub pastebetweensheets1()

With Worksheets("Sheet1").Range("A3", "A" & Worksheets("Sheet1").Rows.Count).SpecialCells(xlCellTypeConstants)
    .Offset(, 1).FormulaR1C1 = "=IF(isnumber(match(RC1,Sheet2!C1,0)),index(Sheet2!C2,match(RC1,Sheet2!C1),0),"""")"
    .Offset(, 2).FormulaR1C1 = "=IF(isnumber(match(RC1,Sheet3!C1,0)),index(Sheet2!C2,match(RC1,Sheet3!C1),0),"""")"
    .Offset(, 3).FormulaR1C1 = "=IF(isnumber(match(RC1,Sheet4!C1,0)),index(Sheet2!C2,match(RC1,Sheet4!C1),0),"""")"
End With
End Sub

假设:

  • “数据”表单名称为“Sheet1”,“Sheet2”和“Sheet3”

  • “摘要”表格名称为“Sheet1”

  • “数据”表和“摘要”表格根据您的示例具有“结构”

但当然你可以根据你需要的名字进行调整

灵活方式可能会有所改善:如果您在“摘要”表格的单元格“B1:D1”中键入“数据”表的名称,那么子将缩短为

Sub pastebetweensheets2()
Worksheets("Sheet1").Range("A3", "A" & Worksheets("Sheet1").Rows.Count).SpecialCells(xlCellTypeConstants).Offset(, 1).Resize(, 3).FormulaR1C1 = "=IF(isnumber(match(RC1,indirect(concatenate(""'"",R1C,""'!C1""),False),0)),index(indirect(concatenate(""'"",R1C,""'!C2""),False),match(RC1,indirect(concatenate(""'"",R1C,""'!C1""),false)),0),"""")"
End Sub