仅当B列中的单元格具有特定值(即字符串)时,我才想从sheet1复制行。我使用了下面的代码,该代码似乎复制了行,但只是将空单元格粘贴到新表中。
我认为问题在于它正在寻找一个值,而不是一个字符串(字符串可以是一个值吗?)。我是否需要将单元格定义为字符串?很抱歉,如果这些是愚蠢的问题-编码新问题。
Sub copy_rows()
Sheets.Add After:=Sheets(1)
Sheets(2).Name = "New"
For Each cell In Sheets(1).Range("B:B")
If cell.Value = "banana" Then
matchRow = cell.Row
Rows(matchRow & ":" & matchRow).Select
Selection.Copy
Sheets("New").Select
ActiveSheet.Rows(matchRow).Select
ActiveSheet.Paste
End If
Next
End Sub
这是工作表1的示例:
apple 1 2 1
banana 1 3 5
carrot 1 1 1
banana 1 2 3
这是新表:
banana 1 3 5
banana 1 2 3
此外,我没有在代码中尝试此操作,但是如果行之间没有空格,那会很好。
谢谢
答案 0 :(得分:0)
这是我上面编辑的代码,可用于处理您的示例数据。在运行包含工作表的工作簿时,请确保该工作簿处于活动状态。
Sub copy_rows()
'create the new sheet
Sheets.Add After:=Sheets(1)
Sheets(2).Name = "New"
'get the number of rows you need to check
Dim RowCount As Integer
RowCount = WorksheetFunction.CountA(Sheets(1).Range("A:A"))
'iterate over the rows
For r = 0 To RowCount - 1
this_cell = Sheets(1).Range("A1").Offset(r, 0)
If this_cell = "bananas" Then
'iterate over the columns and copy cells to new sheet
For c = 0 To 3
Sheets(2).Range("A1").Offset(x, c) = Sheets(1).Range("A1").Offset(r, c)
Next c
'counter for the offset to next row in new sheet
x = x + 1
End If
Next r
End Sub