VBA値が一致する場合に/の場合に行をコピーします* Brain Fried *

JCアギレ

列Aに一意の識別子が付いたMasterlist(古いデータ)とResults(新しいデータ)の2枚のワークブックがあります。

ResultsタブからMasterlistシートの一致する行に最新のデータを含む行をコピーする方法を見つけようとしています

下部にある新しいデータをコピーする方法を見つけることしかできませんでした Masterlist

Sub UpdateML()

Dim wM As Worksheet,  wR As Worksheet
Dim r1 As Range, r2 As Range
Dim cel1 As Range, cel2 As Range
Dim LastRow As Long
Application.ScreenUpdating = False

Set wM = ThisWorkbook.Worksheets("MasterList")
Set wR = ThisWorkbook.Worksheets("Results")

    With wM
    Set r1 = .Range("A1", .Cells(.Rows.Count, .Columns("A:A").Column).End(xlUp))
End With

With wR
    Set r2 = .Range("A1", .Cells(.Rows.Count, .Columns("A:A").Column).End(xlUp))
End With

On Error Resume Next
For Each cel1 In r1
    With Application
        Set cel2 = .Index(r2, .Match(cel1.Value, r2, 0)) 'find match in Masterlist
        If Err = 0 Then
            copyResult cel2 'copy result to masterlist
        End If
        Err.Clear

End With

Next cel1

End Sub

Sub copyResult(cel As Range)

Dim w As Worksheet, r As Range
Set w = ThisWorkbook.Worksheets("Masterlist")
Set r = w.Cells(w.Rows.Count, Columns("A:A").Column).End(xlUp).Offset(1) 'next row
cel.EntireRow.Copy w.Cells(r.Row, 1)

End Sub
ジョニフェン

copyResultメソッド(rの値を設定する場合)は一番下の行+ 1を取得しているため、リストの一番下にダンプされます。

ただし、UpdateMLメソッドにLastRow変数がありますが、これは使用されていません。これをカウンター変数として使用して行インデックスを追跡し、それをcopyResultメソッドに渡すことで機能するようになりました。このような:

Sub UpdateML()
    Dim wM As Worksheet, wR As Worksheet
    Dim r1 As Range, r2 As Range
    Dim cel1 As Range, cel2 As Range
    Dim LastRow As Long
    Application.ScreenUpdating = False

Set wM = ThisWorkbook.Worksheets("MasterList")
Set wR = ThisWorkbook.Worksheets("Results")

With wM
    Set r1 = .Range("A1", .Cells(.Rows.Count, .Columns("A:A").Column).End(xlUp))
End With

With wR
    Set r2 = .Range("A1", .Cells(.Rows.Count, .Columns("A:A").Column).End(xlUp))
End With

LastRow = 1

On Error Resume Next
For Each cel1 In r1
    With Application
        Set cel2 = .Index(r2, .Match(cel1.Value, r2, 0)) 'find match in Masterlist
        If Err = 0 Then
            copyResult cel2, LastRow 'copy result to masterlist
        End If
        Err.Clear
        LastRow = LastRow + 1
    End With
Next cel1
End Sub

Sub copyResult(cel As Range, row As Long)
    Dim w As Worksheet
    Set w = ThisWorkbook.Worksheets("Masterlist")
    cel.EntireRow.Copy w.Cells(row, 1)
End Sub

私はVBAに少し錆びているので(約1年は使用されていません)、よりエレガントなソリューションがあるかもしれませんが、これは間違いなく1つのオプションです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの列のセル値が一致する場合、一致する場合は別の値を空白のセルにコピーします

分類Dev

列2の値が値と一致する場合は、FormSubmitの最後の行をコピーします

分類Dev

Excel vba:データが別のシートの列の値と一致する場合に行をコピーする

分類Dev

Jet BrainのdotTraceでプロファイリングする場合、ネイティブコードの約85.5%?

分類Dev

VBA | 列が条件に一致する場合は、各行をループして行をコピーして貼り付けます

分類Dev

列名が一致する場合は、データフレームの列値を行に変更します

分類Dev

属性が一致した場合にファイルをコピーする

分類Dev

一部の値が一致し、一部が一致しない場合に行を削除する

分類Dev

他の列の値が一致する場合、VBAは列を互いに等しく設定します

分類Dev

R:列の値が他のファイルの値と一致する場合に行を出力します

分類Dev

Excel VBA 10行が特定の基準に一致する場合、trueまたはfalseを返します

分類Dev

VBA-条件が満たされた場合は、最初に別のシートの範囲で値を確認します。一致する場合は設定値を返し、一致しない場合は新しい行にデータを追加します

分類Dev

行が「foo」に一致し、上の行が「bar」に一致し、下の行が「baz」に一致する場合、行を削除しますか?

分類Dev

一致する場合は余分な列の行をコピーしますが、後続の同様の一致は無視します

分類Dev

コピーされた行の最初の列の値が一致する場合は、行全体を上書きして貼り付けます

分類Dev

複数の値に一致する場合は、Pandasデータフレームの行を削除します

分類Dev

一致するレコードが存在しない場合に「0」の戻り値を強制する

分類Dev

行に一致がある場合は列名を返し、複数の一致を探します

分類Dev

2つの異なる列を検索し、一致する場合は値をコピーします

分類Dev

2つのデータフレームの列名が一致する場合に値を検索します

分類Dev

Excel VBA 3 つの値が一致する場合、または 3 つの値のいずれかが空白の場合、行を削除します

分類Dev

値が配列内の名前と一致する場合にのみ実行するように関数にパラメーターを追加します

分類Dev

MySqlは、他の値と一致する場合に値を更新します

分類Dev

キーが一致する場合、Javaは既存のHashMapに「HashMap」値を追加します

分類Dev

特定の列の値が両方のデータフレームで一致する場合は、あるデータフレームの行を別のデータフレームにコピーします

分類Dev

Oracleは、すべての結合条件が一致する場合にのみ行を返します

分類Dev

列がテキストと一致する場合は、行全体を新しいファイルにコピーします

分類Dev

列がテキストと一致する場合は、行全体を新しいファイルにコピーします

分類Dev

2つ以上のレコードが単一の値に一致する場合、それらを除外するようにクエリします

Related 関連記事

  1. 1

    2つの列のセル値が一致する場合、一致する場合は別の値を空白のセルにコピーします

  2. 2

    列2の値が値と一致する場合は、FormSubmitの最後の行をコピーします

  3. 3

    Excel vba:データが別のシートの列の値と一致する場合に行をコピーする

  4. 4

    Jet BrainのdotTraceでプロファイリングする場合、ネイティブコードの約85.5%?

  5. 5

    VBA | 列が条件に一致する場合は、各行をループして行をコピーして貼り付けます

  6. 6

    列名が一致する場合は、データフレームの列値を行に変更します

  7. 7

    属性が一致した場合にファイルをコピーする

  8. 8

    一部の値が一致し、一部が一致しない場合に行を削除する

  9. 9

    他の列の値が一致する場合、VBAは列を互いに等しく設定します

  10. 10

    R:列の値が他のファイルの値と一致する場合に行を出力します

  11. 11

    Excel VBA 10行が特定の基準に一致する場合、trueまたはfalseを返します

  12. 12

    VBA-条件が満たされた場合は、最初に別のシートの範囲で値を確認します。一致する場合は設定値を返し、一致しない場合は新しい行にデータを追加します

  13. 13

    行が「foo」に一致し、上の行が「bar」に一致し、下の行が「baz」に一致する場合、行を削除しますか?

  14. 14

    一致する場合は余分な列の行をコピーしますが、後続の同様の一致は無視します

  15. 15

    コピーされた行の最初の列の値が一致する場合は、行全体を上書きして貼り付けます

  16. 16

    複数の値に一致する場合は、Pandasデータフレームの行を削除します

  17. 17

    一致するレコードが存在しない場合に「0」の戻り値を強制する

  18. 18

    行に一致がある場合は列名を返し、複数の一致を探します

  19. 19

    2つの異なる列を検索し、一致する場合は値をコピーします

  20. 20

    2つのデータフレームの列名が一致する場合に値を検索します

  21. 21

    Excel VBA 3 つの値が一致する場合、または 3 つの値のいずれかが空白の場合、行を削除します

  22. 22

    値が配列内の名前と一致する場合にのみ実行するように関数にパラメーターを追加します

  23. 23

    MySqlは、他の値と一致する場合に値を更新します

  24. 24

    キーが一致する場合、Javaは既存のHashMapに「HashMap」値を追加します

  25. 25

    特定の列の値が両方のデータフレームで一致する場合は、あるデータフレームの行を別のデータフレームにコピーします

  26. 26

    Oracleは、すべての結合条件が一致する場合にのみ行を返します

  27. 27

    列がテキストと一致する場合は、行全体を新しいファイルにコピーします

  28. 28

    列がテキストと一致する場合は、行全体を新しいファイルにコピーします

  29. 29

    2つ以上のレコードが単一の値に一致する場合、それらを除外するようにクエリします

ホットタグ

アーカイブ