0

ある列の次の条件に基づいて、あるシートから別のシートに行をコピーしたい:

  1. 行の列に値「AB」が含まれている場合は、その行をワークシートにコピーしますが、次の行の同じ列に同じ値がある場合は、この行を無視して次に進みます
  2. 行の列に値「NULL」が含まれている場合は、その行をワークシートにコピーします - ここには制限はありません

いくつかのロジックを作成しましたが、機能していません。関連するスニペットは次のとおりです。

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

誰でも助けることができますか?

4

1 に答える 1

0

Range 参照と Row on copy ワークシートを渡すことができる小さな Sub を次に示します。組み込む方法がわからない場合は、コードを少し吹き飛ばしてください。それを絞り込む方法を示します.

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))
于 2012-05-16T19:23:32.477 に答える