ここから本文です

Excelのマクロを教えてください。 一括変換をしたいのですがうまくいきません。...

アバター

ID非公開さん

2019/12/717:17:05

Excelのマクロを教えてください。

一括変換をしたいのですがうまくいきません。
やりたいのは、
sheet1にA列に1000行程度に数字が入っています。

sheet2にA列に上記の数字、B列に商品名が入っています。
sheet1のA列の数字からsheet2のB列の商品名に一括変換したいです。

sheet1
A列のみ
A1 123
A2 456
A3 123
A4 123

sheet2
A列 B列
A1 123 たまご
A2 456 弁当

件数がかなり多いので手動ではすごく時間がかかってしまいます。
ネットで調べてコピペしてもうまくいかず困っています。
詳しい方よろしくお願いいたします。

閲覧数:
50
回答数:
3
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

30246kikuさん

2019/12/717:35:05

以下でどうなりますか

★部分は、どちらかを有効にしてください


Option Explicit

Public Sub Samp1()
   Dim dic As Object
   Dim vA As Variant
   Dim i As Long

   Set dic = CreateObject("Scripting.Dictionary")

   With Worksheets("Sheet2")
      With .Range("A1", .Cells(Rows.Count, "A").End(xlUp))
         vA = .Resize(, 2).Value
      End With
   End With
   For i = 1 To UBound(vA)
      dic(vA(i, 1)) = vA(i, 2)
   Next

   With Worksheets("Sheet1")
      With .Range("A1", .Cells(Rows.Count, "A").End(xlUp))
         vA = .Value
         For i = 1 To UBound(vA)
            vA(i, 1) = dic(vA(i, 1))
         Next
         .Offset(, 1).Value = vA ' ★ B 列に書き出す
'         .Value = vA ' ★上書きするのならコッチ
      End With
   End With

   Set dic = Nothing
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

aid********さん

2019/12/717:29:06

こんな感じでしょうか。

Sub test()

Dim Lrow As Long

Lrow = Sheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To Lrow

Sheets("sheet1").Range("A:A").Replace What:=Sheets("sheet2").Cells(i, 1), Replacement:=Sheets("sheet2").Cells(i, 2), LookAt:=xlPart, MatchCase:=False

Next i

End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

hmm********さん

2019/12/717:25:06

sheet1のB列にVLOOKUP関数→値貼り付けでは駄目なの?
VBAでも同じ手法だと思うが?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる