在列内提供总计,移至同一行列上的下一个标题名称,复制粘贴

时间:2019-03-31 21:24:47

标签: excel vba

对于复杂的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

1 个答案:

答案 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”。在此代码中,Sheet2Sheet1是指工作表的Sheet2