VBA 代码 mod 将 sheet 上的 4 个范围复制到摘要 sheet 中

VBA code mod to copy 4 ranges on a sheet to summary sheets

您好,我正在寻找这样的代码,但我需要设置一个范围,比如 B4 到 M35 以复制到 sheet,然后驱动一个枢轴 table,我也找到了这个代码不断覆盖以前复制的数据,所以我需要它来找到要粘贴到的空行。 所以说一个名为 day1 的 sheet 我需要通过将宏添加到每个范围的按钮来复制从 B4 到 J35 的范围。到总结。 然后在另一个单独的摘要 sheet 上我需要说范围 B40 到 M70。 然后再从 B75 到 M105 再到另一个 sheet 和 B110 到 M140 到另一个 sheet.

然后我需要将相同的代码复制到其他 sheet 的第 2 天、第 3 天、第 4 天

在 4 天结束时,我将从每个 sheet 的四个范围中得到 4 个摘要 sheet,然后从每个摘要 [=] 中驱动一个枢轴 table 22=] 每天每保存一个范围就会增加。

Sub CopyRows1()
Dim bottomL As Integer
Dim x As Integer
bottomL = Sheets("day1").Range("A" & ROWS.Count).End(XLUP).Row: x = 1

Dim c As Range
For Each c In Sheets("day1").Range("A4:A" & bottomL)
    If c.Value >= "" Then
        c.EntireRow.Copy Worksheets("sheet1").Range("A" & x)
        x = x + 1
    End If
Next c

结束子

这有点令人困惑,但我想你是在说每天你都会有多个按钮。每个人都会从那天起分配一个部分,并将该部分写入单独的摘要 sheet?

试试这个,这将涉及为每个按钮设置一个单独的宏,指定您要复制的范围以及您希望它转到哪个摘要sheet:

Sub ButtonDay1()
    Dim wsSource As Worksheet
    Dim ThisDayRange As Range

    Set wsSource = ActiveSheet
    'Set this to the range you want to move to a summary sheet
    Set ThisDayRange = wsSource.Range("B4:M35")

    'Call the AddToSummary function to send to the desired sheet
    AddToSummary ThisDayRange, Sheets("Summary1")

End Sub

然后调用这个函数来写吧:

Function AddToSummary(DayRange As Range, SummarySheet As Worksheet)
    Dim AddRow As Integer
    Dim Item As Range
    Dim i As Integer

    AddRow = SummarySheet.UsedRange.Rows.Count
    If AddRow <> 1 Then
        AddRow = AddRow + 1
    End If

    For i = 1 To DayRange.Rows.Count
        If DayRange.Cells(i, 1).Value <> "" Then
            For b = 1 To DayRange.Columns.Count
                SummarySheet.Cells(AddRow, b).Value = DayRange.Cells(i, b).Value
            Next b

            AddRow = AddRow + 1
        End If
    Next i

End Function

如果您只想为每个按钮重复使用相同的宏,您可以编写一个输入框来询问范围和摘要 sheet 值