部品表というブックがあります
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
エクセル VBA find は別シートを検索できますでしょうか?
Excel(エクセル)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
VBAで別ブックの列を検索し、該当があれば行ごと新規ブックにコピーしたい。
Excel(エクセル)
-
-
4
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
5
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
6
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
7
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
10
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
11
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
12
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
ブックを開かずに、フォルダ内にある複数ブックの、特定セルの値を抽出した
Excel(エクセル)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
19
エクセルVBAで開いているファイルをコピーする方法
Visual Basic(VBA)
-
20
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JavaScriptの定数名が取り消し...
-
VBA ユーザーフォームの印刷に...
-
ACCESSユニオンクエリでORDER B...
-
ペンダントライトのコードの色...
-
C#で入力可能なカウントダウン...
-
木偏に「久」
-
ブログ等で公開されているサン...
-
コード類の収納
-
【VB6】実行ファイルとした後、...
-
1日に1人がこなせるプログラム...
-
ASCIIコードを文字に変換したい
-
1、Rstudioで回帰直線を求める...
-
Excel VBA 空白をセルを探して...
-
JANコードとPOSコードは同じ?
-
Googleアドセンス広告の貼り方
-
PHPで無限ループしてしまっ...
-
多数のExcelファイルからVBAの...
-
差し込み後、元データを変更し...
-
「特になし」を英語で書くとき
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
オートフィルタで抽出結果に 罫...
-
変数名「cur」について
-
JavaScriptの定数名が取り消し...
-
ACCESSユニオンクエリでORDER B...
-
Exel VBA 別ブックから該当デ...
-
UWSCでMOUSEORG関数が上手く処...
-
COBOLの文法
-
PreviewKeyDownイベントが2回...
-
1、Rstudioで回帰直線を求める...
-
VBAでファイルオープン後にコー...
-
【VB6】実行ファイルとした後、...
-
Nullの使い方が不正です。
-
特定行の背景色を変えたいのですが
-
◾️Excel VBA 統合について Cons...
-
アルファベットに付いて質問し...
-
Excel VBAでOpenTextのFieldInf...
おすすめ情報