シート1枚とシート2枚が2枚あります。2枚のシートを比較し、シート1の値を置き換えるVBA
私はsheet1に17列あり、sheet2には14列あります。
私はsheet1の列LにIDを持っています(idはD2Bと4で始まります)。 1つのIDは11〜13桁のロングですが、もう1つは8桁のロングです。最後の結果では、私はD2BだけIDが必要です。
シート2の列Lには、IDが4から始まり、8digit Longです。また、D2Bのみを含むColumn Aを持っています。
私はシート1とshee2の両方の列(L)を比較しています。 Idがsheet1に存在する場合は、結果をsheet2のM列にコピーします。 D2BでIdだけ必要なので、シート2の列LとMが一致しているかどうかを確認します。一致している場合、列Nのシート2の列Aから対応するID d2Bをコピーします。
これまで私はコーディングを完了しました。
ID4で始まっているシート1を調べたいと思いますが、シート2に対応するD2C Idがあることが判明した場合は、sheet1のM列にコピーする必要がありますシート1の列LのIDを列Mにコピーする必要があります。どのように私がこれを行うことができますか。
以下は、シート1の値をチェックしてシート2に貼り付けるためのコードです。
Sub lookuppro()
Dim totalrows As Long
Dim Totalcolumns As Long
Dim rng As range
totalrows = ActiveSheet.UsedRange.Rows.Count
Sheets("Sheet2").Select
For i = 1 To totalrows
Set rng = Sheets("Sheet1").UsedRange.Find(Cells(i, 12).Value)
'If it is found put its value on the destination sheet
If Not rng Is Nothing Then
Cells(i, 13).Value = rng.Value
End If
Next
End Sub
以下がコードです。これは、シート2の対応するD2C番号と一致して貼り付けられているかどうかを確認するためのコードです。
Sub match()
Dim i As Long
Dim lngLastRow As Long
Dim ws As Worksheet
lngLastRow = range("A1").SpecialCells(xlCellTypeLastCell).Row
Set ws = Sheets("Sheet2")
With ws
For i = 1 To lngLastRow
If .Cells(i, 12).Value = .Cells(i, 13).Value Then
.Cells(i, 14).Value = .Cells(i, 1).Value
Else
'nothing
End If
Next i
End With
End Sub
はこれを見てください:https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macrosと選択を使わないでください。あなたはDim sht1、sht2をワークシートとして使うことができますし、コードにsht1 = ThisWorkbook.Worksheets( "Sheet1")を設定してください – danieltakeshi
最初の文字か最初の3文字を確認できますhttps://stackoverflow.com/questions/34713100/how-最初の文字をセル内の値にチェックし、Forの式を使用して各行を検索し、残りのID文字列を抽出します – danieltakeshi
@danieltakeshiを左の使用法と一緒に使用します。どのようにして、sheet2からsheet1に対応する値を再現するのですか?申し訳ありませんが、私はVBAの初心者です – Mikz