vlookup VBA 複数列の条件に合致した値を取り出

vlookup VBA 複数列の条件に合致した値を取り出。VBA。VBA 複数列の条件に合致した値を取り出す

いつもお世話になっております
知恵袋で相談させて頂いて、毎回素晴らしい回答を頂戴し感謝しております さっそくですが、タイトルにあります通り複数列の条件に合致した値を取り出したいのです
画像を貼り付けておりますが、sheet1の特定の列にある検査値を拾って
sheet2から検索し“CD”を見つけ、sheet1のA列に記載したいです
sheet1?2はどちらも行が増減します
列は固定ですが、sheet1は飛び飛びの列を検索値としています (C?G?I列)

例)“東京店” で “現金” で “ヤマト運輸” の場合CDが “1002”
と言うような形で絞り込み、CDをsheet1のA列に取り出す

しかし、sheet2にある“その他”の分類は実際にはその他で表示される意味ではなく
【この販売店の中で】支払いがどれも該当しない物 と言う意味です
sheet1の2行目にあるように支払い分類には“クレジットが”存在していないので
2行目のCDは1001になります (発送の分類は無視します)

検索して取り出すとすればVLOOKUPやMATCH、INDEX、フィルタオプションを使用しますが
飛び飛びの列を検索値にすることや、その他だった場合などを考えると
どのように作り込んで良いのか解りません

皆様のお力をお貸しください
宜しくお願い致します

※Excel2013以降のPCで使用します条件に一致した複数のセルを選択するRangeプロパティとUnion。条件に一致した複数のセルを選択するプロパティとメソッド|
次のサンプルは。条件に一致したセルのアドレスを変数
にカンマ区切りで次々と連結し。最後にそれらのセルを選択します。

表の中から同じ検索条件で条件に合うデータだけを順に取り出す。成績表や住所録などの表の中から条件に合うデータだけ取り出して。リスト
アップした一覧表を作りたいって事リストアップする内容がいつも同じならば
。ボタン一つで一瞬で男性リスト?女性リストとかできると便利です。 目次
メソッド つの条件に合うデータを繰り返し取り出してリストアップ;
つの条件を複数検索条件として条件別に転記する使うコードは
メソッドで。メソッドで設定した検索条件で連続して検索を行います。vlookup。以前。関数と関数で関数のように条件に一致した値を返す
使い方を記事に今回は。関数を使用して。条件を満たす複数のデータを表から
取り出す検索条件に一致したデータを検索し。指定した列を参照コピーする
関数。最初に引っかかった値しか抽出しない 複数条件の
いつも

vba。==*, 複数条件に一致したセルを合計
複数条件のいつもこちらの識者の方々にはお世話になっています
はじめに 関数の論理式で複数列全てが一致の条件を簡単に指定する列の条件
に合致したものを取り出す関数。関数」で値を取り出せ
ます

VBA で良かったですか?ダメならスルーということで標準モジュールに以下を記述して、Samp1 を実行してみますどうなりますかOption ExplicitPublic Sub Samp1???Dim dic As Object, dicW As Object???Dim vA As Variant, vK As Variant, v As Variant???Dim i As Long???Const CAM As String = その他???Set dic = CreateObjectScripting.Dictionary???With WorksheetsSheet2??????vA = .RangeA1.CurrentRegion.Value???End With???For i = 2 To UBoundvA??????If Not dic.ExistsvAi, 1 Then?????????dic.Add vAi, 1, CreateObjectScripting.Dictionary??????End If??????Set dicW = dicvAi, 1??????If vAi, 2 = CAM Then?????????vK = CAM??????Else?????????vK = vAi, 2vbTabvAi, 3??????End If??????dicWvK = vAi, 4???Next???With WorksheetsSheet1??????With .RangeC1, .CellsRows.Count, C.EndxlUp.EntireRow?????????vA = .ColumnsC.Value?????????vA1, 1 = CD?????????For i = 2 To UBoundvA????????????If dic.ExistsvAi, 1 Then???????????????Set dicW = dicvAi, 1???????????????With .Rowsi??????????????????vK = .RangeG1.ValuevbTab.RangeI1.Value??????????????????If Not dicW.ExistsvK Then vK = CAM??????????????????v = dicWvK???????????????End With????????????Else???????????????v = ????????????End If????????????vAi, 1 = v?????????Next?????????.ColumnsA.Value = vA??????End With???End With???Set dic = Nothing???Set dicW = NothingEnd Sub

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です