Excel 将以前筛选的所有数据从所有工作表复制到另一个工作表
我有一本大约63页的工作簿。我想从所有工作表中获取所有过滤数据(由宏过滤),并将它们粘贴到单独的工作表中 工作表的数据范围不同。如果有任何数据,它们都将从第15行的A列开始。filter宏将筛选其中一列中的特定值,从而区分每个工作表中的行 我需要复制从A15范围开始的所有过滤数据,该范围的最后一行是AI。这只是一个问题,如果有任何行可以得到AI复制范围内的数字,那么需要多少行 我让它复制整个工作表,而不是过滤数据到另一个工作表,但它只复制了工作表1Excel 将以前筛选的所有数据从所有工作表复制到另一个工作表,excel,vba,Excel,Vba,我有一本大约63页的工作簿。我想从所有工作表中获取所有过滤数据(由宏过滤),并将它们粘贴到单独的工作表中 工作表的数据范围不同。如果有任何数据,它们都将从第15行的A列开始。filter宏将筛选其中一列中的特定值,从而区分每个工作表中的行 我需要复制从A15范围开始的所有过滤数据,该范围的最后一行是AI。这只是一个问题,如果有任何行可以得到AI复制范围内的数字,那么需要多少行 我让它复制整个工作表,而不是过滤数据到另一个工作表,但它只复制了工作表1 Sub rangeToNew_Try2() D
Sub rangeToNew_Try2()
Dim newBook As Excel.Workbook
Dim rng As Excel.Range
Set newBook = Workbooks.Add
Set rng = ThisWorkbook.Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeVisible)
rng.Copy newBook.Worksheets("Sheet1").Range("A1")
End Sub
您可以使用
工作表。使用Drange
只提供包含数据的范围,然后您可以应用范围。SpecialsCells
只提供过滤后的数据
要帮助调试代码,请设置断点并使用即时窗口查看范围,即:
?rng.Address
(问号打印出以下内容。)
此功能应满足您的需要:
Sub CopyFilteredDataToNewWorkbook()
Dim newBook As Excel.Workbook
Dim rng As Excel.Range
Dim sht As Excel.Worksheet
Dim rowoffsetcount As Long
Dim newsht As Excel.Worksheet
Set newBook = Workbooks.Add
' ThisWorkbook.Worksheets is the same as the Sheets or Worksheets object, but more explicit
For Each sht In ThisWorkbook.Worksheets
' Get the used rows and columns
Set rng = sht.UsedRange
' Offset the range so it starts at row 15
rowoffsetcount = 15 - rng.Row
Set rng = rng.Offset(rowoffsetcount)
' Check there will be something to copy
If (rng.Rows.Count - rowoffsetcount > 0) Then
' Reduce the number of rows in the range so it ends at the same row
Set rng = rng.Resize(rng.Rows.Count - rowoffsetcount)
' Check that there is a sheet we can copy it to
On Error Resume Next
Set newsht = Nothing
Set newsht = newBook.Worksheets(sht.Index)
On Error GoTo 0
' We have run out of sheets, add another at the end
If (newsht Is Nothing) Then
Set newsht = newBook.Sheets.Add(, newBook.Worksheets(newBook.Worksheets.Count))
End If
' Give it the same name
newsht.Name = sht.Name
' Get the range of visible (i.e. unfiltered) rows
' (can't do this before the range resize as that doesn't work on disjoint ranges)
Set rng = rng.SpecialCells(xlCellTypeVisible)
' Paste the visible data into the new sheet
rng.Copy newsht.Range("A1")
End If
Next
End Sub
您可以使用
工作表。使用Drange
只提供包含数据的范围,然后您可以应用范围。SpecialsCells
只提供过滤后的数据
要帮助调试代码,请设置断点并使用即时窗口查看范围,即:
?rng.Address
(问号打印出以下内容。)
此功能应满足您的需要:
Sub CopyFilteredDataToNewWorkbook()
Dim newBook As Excel.Workbook
Dim rng As Excel.Range
Dim sht As Excel.Worksheet
Dim rowoffsetcount As Long
Dim newsht As Excel.Worksheet
Set newBook = Workbooks.Add
' ThisWorkbook.Worksheets is the same as the Sheets or Worksheets object, but more explicit
For Each sht In ThisWorkbook.Worksheets
' Get the used rows and columns
Set rng = sht.UsedRange
' Offset the range so it starts at row 15
rowoffsetcount = 15 - rng.Row
Set rng = rng.Offset(rowoffsetcount)
' Check there will be something to copy
If (rng.Rows.Count - rowoffsetcount > 0) Then
' Reduce the number of rows in the range so it ends at the same row
Set rng = rng.Resize(rng.Rows.Count - rowoffsetcount)
' Check that there is a sheet we can copy it to
On Error Resume Next
Set newsht = Nothing
Set newsht = newBook.Worksheets(sht.Index)
On Error GoTo 0
' We have run out of sheets, add another at the end
If (newsht Is Nothing) Then
Set newsht = newBook.Sheets.Add(, newBook.Worksheets(newBook.Worksheets.Count))
End If
' Give it the same name
newsht.Name = sht.Name
' Get the range of visible (i.e. unfiltered) rows
' (can't do this before the range resize as that doesn't work on disjoint ranges)
Set rng = rng.SpecialCells(xlCellTypeVisible)
' Paste the visible data into the new sheet
rng.Copy newsht.Range("A1")
End If
Next
End Sub
嗨,车头。我能确认一下你想要实现什么吗?您是否试图循环所有过滤值,并在newbook的“Sheet1”中一个接一个地显示所有范围,然后依次显示。或者你想为那本书中的每一页都创建一个新的工作表?@Trum我有一个宏,可以根据某些条件过滤63页中的K行。我希望将所有过滤后的数据复制并粘贴到新工作表,以便对其应用透视表。过滤后的数据始终从A15行开始,到A15行结束AI@Trum问题是,当工作完成时,它就完成了,我只过滤打开的工作。因此,每张图纸中的行数将减少。所以我只需要选择在任何给定的基础上改变的过滤数据。我能确认一下你想要实现什么吗?您是否试图循环所有过滤值,并在newbook的“Sheet1”中一个接一个地显示所有范围,然后依次显示。或者你想为那本书中的每一页都创建一个新的工作表?@Trum我有一个宏,可以根据某些条件过滤63页中的K行。我希望将所有过滤后的数据复制并粘贴到新工作表,以便对其应用透视表。过滤后的数据始终从A15行开始,到A15行结束AI@Trum问题是,当工作完成时,它就完成了,我只过滤打开的工作。因此,每张图纸中的行数将减少。所以我只需要选择在任何给定基础上改变的过滤数据。嘿,谢谢你的回复。我想你在这里比我早几光年,而我并没有遵循你发布的答案。你能举个例子吗?嘿,尼克,谢谢你的回复。我认为你在这里比我早几光年,而我没有遵循你发布的答案,你能举个例子吗?