• ベストアンサー

エクセル 重複数字の書き換えについて

シート1のA列に番号(重複番号あり) B列に項目。シート2のA列に番号(重複番号なし) B列に項目。シート2の順番を正としてシート1のA列重複番号をVBAで書き換えるには、どうしたらよろしいか。 【シート1】   【シート2】    【シート1】 1 りんご     1 バナナ     3 りんご 2 バナナ     2 すいか     1 バナナ   2 バナナ     3 りんご ⇒   1 バナナ   2 バナナ               1 バナナ  3 すいか               2 すいか

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Private Sub CommandButton1_Click() Dim cMax As Integer Dim i As Long On Error Resume Next cMax = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To cMax Cells(i, 1).ClearContents Cells(i, 1).Value = Worksheets("シート2").Cells(Application.WorksheetFunction.Match(Cells(i, 2), Worksheets("シート2").Range("B:B"), 0), 1).Value Next i End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

シート1の項目名でシート2の項目名を引き、見つかった同行の番号を検索したら、しまいではないのか。 結果的にシートの番号列を残すのか上書きするのかあると思うが。 全くVLOOKUP関数(FALSE型)の利用問題ではないか。 ただし番号列が項目列より左列にあるので、同じ項目名がどの行にあるかをMatch関数で見つければ、できる。 同一シートの場合 A B C D E F 1 りんご 1 バナナ 3 りんご 2 バナナ 2 すいか 1 バナナ 2 バナナ 3 りんご 1 バナナ 2 バナナ     1 バナナ 3 すいか     2 すいか F列はB列を持ってくる。=B2など。 E2セルの式は =MATCH($B2,$D$1:$D$4,)-1 下hプkプに式を複写。 結果は上記E列

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

VBAではなく普通のエクセルですが以下の方法ではいかがでしょう。 シート1のシート名はSheet1、シート2のシート名はSheet2の場合です。 Sheet2のA列とB列のデータを入れ替える→Sheet1のA1セルに以下の式を入れて下にドラッグコピー =VLOOKUP(B1,Sheet2!A:B,2,FALSE)