我需要帮助在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
答案 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