我想根据一列中的以下条件将行从一个工作表复制到另一个工作表:
我写了一些逻辑,但它没有用 - 这是相关的片段:
If wks.Range("N" & CStr(LSearchRow)).Value = "NULL" Or Not _
wks.Range("N" & CStr(LSearchRow)).Value = optionCode Then
'Select row in master to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
'Paste row into new worksheet in next row
wksCopyTo.Select
wksCopyTo.Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
wksCopyTo.Paste
optionCode = wks.Range("N" & CStr(LSearchRow)).Value
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Remove blank rows
wksCopyTo.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'Go back to Master Sheet to continue searching
wks.Select
End If
有人可以帮忙吗?
答案 0 :(得分:0)
这是一个小Sub,你可以将你的Range参考和复制工作表上的Row传递给那个应该可以解决的问题。如果您无法弄清楚如何合并它,请稍微吹嘘您的代码,我会告诉您如何将其压缩。
Sub copyrow(rng As Range, LCopyToRow As Long)
If rng = vbNullString Then rng.EntireRow.Copy wksCopyTo.Cells(LCopyToRow, 1)
If rng.Offset(1) <> rng Then rng.EntireRow.Copy wksCopyTo.Cells(LCopyToRow, 1)
End Sub
另外,在上面的代码中,编写VBA时无需使用select。它更慢,效率更低。 上面的第5到14行(计算空白行和注释)可以像这样编写
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Copy wksCopyTo.Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow))