EXCEL VBA存储/保存整行数组?

已经收到帮助如何search一个string的列,然后将其存储在一个数组中。 是否可以存储整个行? 已经find它,但找不到它。

我想在一个包含数据的工作表中search一个string。 然后将包含该string的那些行复制到另一个工作表。

我的代码看起来像这样。

Set wsRaw = Worksheets("raw_list") Set phaseRange = wsRaw.Columns(PhaseCol) SearchString = "start" Set aCell = phaseRange.Find(What:=SearchString, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not aCell Is Nothing Then Set bCell = aCell ReDim Preserve arrStart(nS) arrStart(nS) = aCell.Row nS = nS + 1 Do While ExitLoop = False Set aCell = phaseRange.FindNext(After:=aCell) If Not aCell Is Nothing Then If aCell.Row = bCell.Row Then Exit Do ReDim Preserve arrStart(nS) arrStart(nS) = aCell.Row nS = nS + 1 Else ExitLoop = True End If Loop Else End If 

感谢任何帮助:)

既然你是根据你的search条件在相关的列中复制Sheet1到Sheet2的数据,那么我会build议使用Autofilter。

看到这个

 Sub Sample() Dim wsRaw As Worksheet Dim strSearch As String Dim PhaseCol As Long, LastRow As Long Dim phaseRange As Range, rng As Range strSearch = "start" '~~> Change this to the relevant column PhaseCol = 1 Set wsRaw = Sheets("raw_list") With wsRaw LastRow = .Range(Split(Cells(, PhaseCol).Address, "$")(1) & _ .Rows.Count).End(xlUp).Row Set phaseRange = wsRaw.Range( _ Split(Cells(, PhaseCol).Address, "$")(1) & _ "1:" & _ Split(Cells(, PhaseCol).Address, "$")(1) & _ LastRow) '~~> Remove any filters .AutoFilterMode = False '~~> Filter, offset(to exclude headers) and copy visible rows With phaseRange .AutoFilter Field:=1, Criteria1:=strSearch Set rng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow '~~> Chnage Sheet2 to the relevant sheet name where you want to copy rng.Copy Sheets("Sheet2").Rows(1) End With '~~> Remove any filters .AutoFilterMode = False End With End Sub 

快照

在这里输入图像说明