VBA代码迭代工作表并将特定数据复制到特定单元格

时间:2012-08-04 07:17:39

标签: excel excel-vba vba

指向示例工作簿的链接:http://www.wikisend.com/download/245286/MIS%20-%20July%20%20(1).xlsm

该工作簿具有vba代码,该代码删除所有sheeets,然后通过复制其他工作簿中的工作表来创建新工作表。

我想要另一个vba代码自动生成包含所有格式化和数据的执行摘要表。有些公式没有很好地定义,因此必须稍后手动编辑它们。由于其他工作表每个月都会发生变化,因此手动引用会很乏味

我目前的代码:

    Sub WorksheetLoop()

        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Select
        Sheets(Sheets.Count).Name = "Executive Summary"


        Sheets("Executive Summary").Select
'Some formatting code on sheet Executive Summary

    Dim ws As Worksheet
       ' Begin the loop.
currentRow=6 'start entering data from row 6
     For Each ws In ThisWorkbook.Worksheets

'Assign cell at row=current row and col B reference to cell G5 at sheet ws
'Assign cell at row=current row and col F reference to cell J15 at sheet ws

'Assign cell at row=current row and col H reference to cell T5 at sheet ws


'increment Current row by 1
    'don't know what to do here    
    Next ws

'select entire region( all filled cells)
'format text, add border etc

    End Sub

请告诉我参考语法

1 个答案:

答案 0 :(得分:0)

解决了问题

Sub test()

    Sheets("Executive Summary").Select
    Range("A6:P23").Select
    Range("P6").Activate
    Selection.ClearContents
    'Dim ws As Worksheet
    Dim Row As Integer
    Row = 6
    For Each ws In ThisWorkbook.Worksheets
     If ws.Name <> "Executive Summary" Then
        Range("A" & Row).Value = "='" & ws.Name & "'!C3"
        Range("B" & Row).Value = "='" & ws.Name & "'!G5"
        Range("C" & Row).Value = "='" & ws.Name & "'!G39"
        Range("D" & Row).Value = "='" & ws.Name & "'!H39"
        Range("E" & Row).Value = "=D" & Row & "-C" & Row
        Range("F" & Row).Value = "=IF(A" & Row & "=" & Chr(34) & "POWER" & Chr(34) & ",+E" & Row & "*B" & Row & ",+E" & Row & "*B" & Row & "/100)"
        Range("G" & Row).Value = "=IF(A" & Row & "=" & Chr(34) & "POWER" & Chr(34) & ",+(J" & Row & "-D" & Row & ")*B" & Row & ",+(J" & Row & "-D" & Row & ")*B" & Row & "/100)"
        '"=(J" & Row & "-D" & Row & ")*B" & Row & "/100"
        Range("H" & Row).Value = "=I" & Row & "-F" & Row & "-G" & Row
        Range("I" & Row).Value = 0
        Range("J" & Row).Value = "='" & ws.Name & "'!I39"
        Range("K" & Row).Value = "='" & ws.Name & "'!L5"
        Range("L" & Row).Value = "='" & ws.Name & "'!K39"
        Range("M" & Row).Value = "=G" & Row
        Range("N" & Row).Value = "=O" & Row & "-L" & Row & "-M" & Row
        Range("O" & Row).Value = "=I" & Row
        Range("P" & Row).Value = "='" & ws.Name & "'!M39"
        Row = Row + 1
     End If

     Next ws

End Sub