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 值
您好,我正在寻找这样的代码,但我需要设置一个范围,比如 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 值