对于复杂的Macro,这是一个新问题,下面是我的问题。我在excel sheet1中有列标题,我正在尝试将所有(总计SUM)数据复制到“ Sheet2”中;几列已合并,我希望宏读取C38列的最后一行标题,并使副本与F38上的总和相匹配。
示例:假设宏要读取标题列C列的标题为“总计资产”的C38行,然后在F38列中搜索提供的总数,但是F,G,H列当前已合并,F20跨F38,G38,H38。
向下移动空白行后,搜索下一个不同的标题名称,例如“ Total Funds”,然后重复该过程。我尝试了2种不同的脚本。下面列出了我提供的宏脚本。也许,有一种更好的方法可以按列收集所有数据。
宏脚本:
Sub Macro3()
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[18]C[-3],R[3]C[-3]:R[18]C[8],4,FALSE)"
Selection.Copy
Sheets("sheet2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
End Sub
答案 0 :(得分:0)
如果它们保持不变,则不需要VBA即可,只需将=Sheet1!F38
,=Sheet1!F45
和=Sheet1!F90
放在Sheet2的相应单元格中即可。
如果它们是变量,则可以在Sheet1的单元格上循环搜索这样的标题(如果我理解正确的话):
Sub CopyFromSheet1()
Dim i as Long
For i = 1 to Sheet1.Cells(Sheet1.Rows.Count, 6).End(xlUp).Row ' Last Cell of Column F
Select Case CStr(Sheet1.Cells(i, 3).Value) ' Looks at the Value in Column C
Case "Total Amount"
Sheet2.Cells(1, 1).Value = Sheet1.Cells(i, 6).Value
Case "Other Assets"
Sheet2.Cells(2, 1).Value = Sheet1.Cells(i, 6).Value
Case "Total Other Assets"
Sheet2.Cells(3, 1).Value = Sheet1.Cells(i, 6).Value
End Select
Next i
End Sub
如果此循环与“总金额”,“其他资产”或“其他资产总计”匹配,则该循环将查看C列中的值,并将该行的值从Sheet1
的F列复制到{ {1}}分别进入单元格“ A1”,“ A2”和“ A3”。在此代码中,Sheet2
和Sheet1
是指工作表的Sheet2
。