
部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列 B列 C列
商品名 商品番号 コード
モータ U-1325-L
ホルダ R-134256
また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。
やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。
部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。
自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…
Sub 別ブックから貼り付ける()
Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd
と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。
基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。
どうぞよろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
Application.ScreenUpdating = False
Dim I As Long
Dim xlBook
Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
I = 2
Do While Range("A" & I).Value <> ""
ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
I = I + 1
Loop
xlBook.Close
Application.ScreenUpdating = True
MsgBox ("完了")
End Sub
検索のセル範囲を指定する Range("A2:B65535")
を参考にさせていただきました
ありがとうございました
みなさんのアドバイスを組合わせて、単語の意味を検索しながら
思い通りのものができました!
みなさまに感謝いたします。
No.3
- 回答日時:
>基本事項は本で学びましたが、呪文のようなコードはよく理解できません。
呪文は分らないようなので
基本的なコードしか使用していません
'サンプルコード
Sub test()
Dim x As Long, y As Long
For x = 2 To Workbooks("book1.xls").Worksheets("sheet1").Cells(Rows.Count, 2).End(xlUp).Row
For y = 2 To Workbooks("book2.xls").Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
If Workbooks("book1.xls").Worksheets("sheet1").Cells(x, 2).Value = Workbooks("book2.xls").Worksheets("sheet1").Cells(y, 1).Value Then
Workbooks("book1.xls").Worksheets("sheet1").Cells(x, 3).Value = Workbooks("book2.xls").Worksheets("sheet1").Cells(y, 2).Value
Exit For
End If
Next y
Next x
End Sub
しかし、呪文を使用しないと長くなりますね
後は自分の環境に合わせてアレンジしてください
勉強頑張って
よく理解できました!
Dimは、まとめて宣言できるものなのですね?
今までは、それぞれ行を変えて宣言していたので、
何行にもなっていました…。
また、元気にがんばれます。
ありがとうございました。
No.2
- 回答日時:
>関数ではなく、マクロで処理を希望します
生半可な知識で言ってませんか。
関数VLOOKUPでやれる。
VBAでもVLOOKUP関数は使える。
それを知った上で言ってますか。
ーー
それ(いや)なら、ややこしいほうのFindメソッドを勉強したら良い。(背伸びすることは無いと思うが。時間をかけて勉強しないと。入門本を一読して達せられるものではない。)
WEBには「VBA Find FindNext」で照会すればコード例が沢山在る。
普通は、AutoFilterを使うものではない。
この回答への補足
ネットで質問すると
ほんとうに勉強になって感謝の気持ちで一杯になるときと、
質問しなければ良かった、といやな気持ちになる両極端なことが起こります。
それでも、仕事上どうしても必要なときは嫌なことも我慢して質問しています。
相手の状況を良く知りもしないで、馬鹿にするような言い方はほんとうに失礼だと思う。何様なんでしょう。
こんな馬鹿な質問で頭にくるんなら、見ないで無視すればいいでしょう。
この質問は、今回組んだマクロの、ほんの一部の動作です。
何百枚の表を、(1)図番を規則的に書き換える、(2)セレクトケースで場合わけする、(3)別の一覧から書き換えた番号に該当する関連項目を引っ張ってくる、(4)新しい図番番号で保存する など。
他のものは組めたので、最後に残った今回の件をマクロに組み込みたかったのです。

No.1
- 回答日時:
マクロでやりたいなら、ツール、マクロの記録で実際にやりたいことを
やって記録終了とすると、自動でマクロが書かれていますので
それを見て修正していくと分かりやすいです。
でもKeyと一致する項目を探して、取得したいのであるなら
エクセル関数で簡単に出来ますけど、Vlookupとか
それが同じブックにあるのかないのかの違いなので、
Workbooks("ブック名").Worksheets("シート名").cells(セルの位置)で指定すればいいのでは。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
このQ&Aを見た人はこんなQ&Aも見ています
-
昔のあなたへのアドバイス
過去のあなたへ一度だけアドバイスを送れる電話があったとします。
-
【お題】甲子園での思い出の残し方
【お題】「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
準・究極の選択
「年収1000万円で一生カレーライス」か「年収180万円で毎日何でも食べ放題」
-
VBAで別ブックの列を検索し、該当があれば行ごと新規ブックにコピーしたい。
Excel(エクセル)
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
エクセルマクロで、他ブックからオートフィルタ抽出
Visual Basic(VBA)
-
-
4
エクセル vba ある検索値を別ブックから参照し一致したすべての行で特定の列の値を返す
Visual Basic(VBA)
-
5
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
6
エクセル VBA find は別シートを検索できますでしょうか?
Excel(エクセル)
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
13
エクセルのマクロで全シートを検索したい
Excel(エクセル)
-
14
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
15
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
16
参照先のブックを開かずに内容をコピーしたい
Excel(エクセル)
-
17
EXCELマクロで全シート対象の検索マクロを教えて
Excel(エクセル)
-
18
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
19
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
20
エクセルのマクロで検索・抽出したデータを修正及び更新して元データに反映
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
videopadについて
-
コンパイルエラー 変数が定義...
-
フィルターかけた後、重複を除...
-
wechatアプリについての質問で...
-
こんばんは。COBOLを初めて学ん...
-
多数のExcelファイルからVBAの...
-
access でエラーを回避するには?
-
Javaの問題で質問あります。 コ...
-
2つの住所録の照合
-
SQL
-
JANコードとPOSコードは同じ?
-
VSコードでHTMLに(リンク)フ...
-
スキャンコード取得は MapVirtu...
-
VBSでメール内容を指定のエクセ...
-
ゲームのアルゴリズム
-
VBAでファイルオープン後にコー...
-
VBA リストボックス(複数条件...
-
マザーボードの名前を知る方法
-
Gitのクローンについて
-
access2021 VBA メソッドまたは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
access2021 VBA メソッドまたは...
-
Excel VBA素人です。VBAで図形...
-
Exel VBA 別ブックから該当デ...
-
access2003 クエリSQL文に...
-
エクセルに見えない文字(JISX0...
-
Nullの使い方が不正です。
-
【VB6】実行ファイルとした後、...
-
VBAでファイルオープン後にコー...
-
オートフィルタで抽出結果に 罫...
-
PreviewKeyDownイベントが2回...
-
JavaScriptの定数名が取り消し...
-
Excel VBAでOpenTextのFieldInf...
-
COBOLの文法
-
ACCESSユニオンクエリでORDER B...
-
Access DCountでの連番について
-
VBA リストボックス(複数条件...
-
C# コードビハインドについて
おすすめ情報