[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 複数条件を検索し値を表示したい』(みや)
VLOOKUP関数の複数条件みたいな事をマクロでしたいです。
検索するシート1にはA〜M列までデータが入力されています。
行数は都度変わりますが、列数は変わりません。
空白が存在するのはG、H、K、L列
検索するのはB列とE列になります。
(1)B列の表記は数字2桁とアルファベット3文字(すべて半角)で25VVVという様な表記になります。
(2)E列の表記はアルファベット・数字・#の組み合わせでS1G#1という様な表記になります。
検索結果を表示するシート2は
C列のC3以降(行数は変わる可能性があるが、必ず入力があります)に(1)が表記されています。
2行目G列〜AE列まで(2)が表記してあります。
G3以降に(1)と(2)を参照してシート1のJ列の値を返すという事をしたいのですが、可能でしょうか?
色々調べてみましたが、ヒットせず断念しています。。。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
フィルターオプションじゃだめですか?
最近似たような質問多いけどなんでだろう (稲葉) 2019/03/07(木) 18:06
あ、質問読み違えてるかもしれない。 シート2はクロス・・・? 例として、シート1のA B列を検索して、 シート2の交わるところに、シート2のC列の値を出したいってことかしら? シート1 |[A] |[B] |[C] [1]|型番 |仕様 |発注番号 [2]|25VVV|S1G#1|A [3]|26VVV|S2G#1|B [4]|27VVV|S3G#1|C
シート2 |[C] |[D]|[E]|[F]|[G] |[H] |[I] [2]| | | | |S1G#1|S2G#1|S3G#1 [3]|25VVV| | | |A | | [4]|26VVV| | | | |B | [5]|27VVV| | | | | |C
(稲葉) 2019/03/07(木) 18:20
> シート2の交わるところに、シート2のC列の値を出したいってことかしら? ~~~~~~~↑~~ シート1の間違いでした。すみません。
(稲葉) 2019/03/07(木) 18:35
そろそろ店じまいするので、たたき台おいておきます。 また明日見させてください。 Sub クロス() Dim dic As Object Dim cB As String, cE As String, cJ As String Dim i As Long, j As Long Set dic = CreateObject("Scripting.Dictionary") With Sheets("Sheet1") For i = 2 To .Cells(Rows.Count, "B").End(xlUp).Row cB = .Cells(i, "B").Value: cE = .Cells(i, "E").Value: cJ = .Cells(i, "J").Value If Not dic.exists(cB) Then Set dic(cB) = CreateObject("Scripting.Dictionary") dic(cB)(cE) = cJ Next i End With With Sheets("Sheet2") For i = 3 To .Cells(Rows.Count, "C").End(xlUp).Row For j = Range("G1").Column To .Cells(2, Columns.Count).End(xlToLeft).Column cB = .Cells(i, "C").Value: cE = .Cells(2, j).Value If dic.exists(cB) Then If dic(cB).exists(cE) Then .Cells(i, j).Value = dic(cB)(cE) Next j Next i End With End Sub
(稲葉) 2019/03/07(木) 19:55
ありがとうございます。
バッチリでした!
(みや) 2019/03/08(金) 09:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.