質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

7718閲覧

Excel Xlookup Vlookup で2つ目の値を拾う方法

access

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/03/06 11:29

編集2023/03/07 05:32

実現したいこと

Excelで実現したいことが2つあります。
①2項目の条件を含んだVlookup
②Vlookupで複数HITした場合、2つ目以降の値も拾いたい

実現したいこと①(詳細)

2項目の条件を含んだVlookup

以下の表があります。(以降、表A)
イメージ説明
[到着予定日]を埋めたいのですが、それが記載された表が以下になります。(以降、表B)

イメージ説明

表Aの[輸送コード]と[輸送グループ]の組み合わせで、表Bの到着予定日を求めたい場合、
VlookupやXlookupなどで実現可能でしょうか?(もちろん、他の関数でも大丈夫です。)

試したこととしては、[輸送コード]と[輸送グループ]を文字列で繋いだ列をつくり、それをVlookupで求めた。
ただ、今回の状況が列を挿入できない為、断念しました。

実現したいこと②(詳細)

Vlookupで複数HITした場合、2つ目以降の値も拾いたい

以下の表があります。(以降、表A)
イメージ説明

[輸送グループ]を埋めたいのですが、それが記載された表が以下になります。(以降、表B)
イメージ説明
表Aの[輸送コード]002をVlookupで表Bを検索すると、2件HITし、[輸送グループ]1のもののみを引っ張ってきてしまいます。これを、[輸送コード]002の場合は、[輸送グループ]1と2それぞれの戻り値がほしいのですが、どのように関数を組めばよろしいでしょうか?

具体的に欲しい表Aのイメージ
イメージ説明

セルB2にはどのような関数を組めばよろしいでしょうか?

【03/07追記】

表B
イメージ説明

具体的に欲しい表Aのイメージ
イメージ説明

セルB2にはどのような関数を組めばよろしいでしょうか?

前提

実務上では、こういった複数キーで他の表との結合を何度も繰り返します。
いずれもExcel関数で実現する必要があります。
(どうしようもない場合に限ってパワークエリを使用しても良いという状況です)

補足情報(FW/ツールのバージョンなど)

Office365
Vlookupに拘ってるわけではなく、関数なら何でもアドバイス頂きたく存じます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

access

2023/03/06 13:18

qnoir様、①について、おっしゃる通りの手順で成功いたしました。ありがとうございます。 ②についてなのですが、私の書き方が悪く、表Aの欲しい値の画像を補足いたしました。1つ目には1つ目の[輸送グループ]の値、2つ目には2つ目の[輸送グループ]の値がほしい状況です。
退会済みユーザー

退会済みユーザー

2023/03/06 14:47

修正しました。
access

2023/03/07 05:27

qnoir様、何度も有難うございます。関数について調べて理解いたしました。 ②について、実は [輸送コード] は連番ではなく、countif関数で実現できない状況です。(参考の画像を追記いたしました) 何かよい方法はございますでしょうか。
退会済みユーザー

退会済みユーザー

2023/03/12 01:07 編集

私の環境では輸送コードや輸送グループが連番ではなくても、うまくいっています 「countif関数で実現できない状況」とは、具体的にどのような状況なのでしょうか。 私が回答した数式を、その画像の表AのB2セルに入力し、下方向にコピーした結果を記載してください。または「回答した数式ではうまくいかないパターン」を第三者にもわかるように具体的に説明してください。
guest

回答1

0

<前提>

「表A」という名前のシート → 数式を入力するシート
「表B」という名前のシート 
→ 参照される側。
1行目は「輸送コード」「輸送グループ」というラベル。
2行目から100行目まで実データが入っているとします。

(あと、図では表Aと表BでA列にあるデータの桁数が違っていますが、おそらく勘違い?)


①(2項目の条件を満たす列を検索)

→INDEX と MATCHを使用します。

以下の数式を「表A」シートの C2 セルに入力し、下にコピーしてください。

=INDEX(表B!$A$2:$C$100, MATCH(A4&B4, 表B!$A$2:$A$100 & 表B!$B$2:$B$100, 0), 3)

 

② 一致したもの全部(複数)の結果を返す数式

→INDEX関数と FILTER関数、COUNTIF関数を組み合わせます。

下記の数式を 「表A」シートの B2 セルに入力し、下方向にコピーしてください。

=IFERROR(INDEX(FILTER(表B!$A$2:$B$100, 表B!$A$2:$A$100=A2), COUNTIF($A$2:$A2,A2), 2), "")

回答にあたって参考にした資料
INDEX関数 - Microsostサポート
MATCH関数 - Microsostサポート
FILTER関数 - Microsostサポート
COUNTIF関数 - Microsoftサポート

投稿2023/03/06 12:38

編集2023/03/06 15:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問