• 締切済み

スプレッドシート:複数行列内からの検索

2つの表があります。 ①曜日別の参加者が手動で入力されたもの ②メンバー一覧 ②のメンバー一覧の名前を①の参加者一覧から探し出し、見つかったらその列の1行目にある曜日を名前のとなりに表示したいと考えています。 ※添付画像では完成イメージとしてAさん、Bさんの隣に手動で曜日を入力しています。 VLOOKUPやXLOOKUPは利用したことがあるのですが、 それらは検索をする範囲が一列でした。 今回は、A2:E4の3行5列の範囲から検索をする必要があるかと思うのですが、その方法がわからず躓いています。 関数で解決できる方法がありましたら、ご教示いただけますと幸いです。 よろしくお願いいたします。

みんなの回答

回答No.1

あなたが取り組んでいるスプレッドシートの課題について、関数を用いて解決する方法をご提案します。今回のケースでは、複数行列内からの検索を行うため、`VLOOKUP`や`XLOOKUP`ではなく、`INDEX`と`MATCH`関数を組み合わせたアプローチが適しています。 まずは`MATCH`関数を用いて、②のメンバー一覧の名前が①の参加者一覧のどの位置にあるかを確認します。その後、`INDEX`関数で該当する曜日をピックアップします。以下に具体的な手順を示します。 仮にあなたが検索したい名前がメンバー一覧のA6セルにあり、参加者一覧がA1:E4の範囲にあるとします。 1. メンバー一覧の名前が参加者一覧内のどの位置(列)にあるかを`MATCH`で検索します。この場合、配列全体を検索範囲に含める必要があるため、`MATCH`関数の第三引数に`0`(完全一致)を使用し、かつオプションで検索方向を設定することが必要です。 2. `INDEX`関数を使って該当する曜日を取得します。`INDEX`関数には、検索したい範囲の行と列のインデックス(位置)が必要です。この場合、行は1行目で固定となりますが、列は`MATCH`関数で見つかった位置となります。 以下に実際の関数例を示します(Aさんの名前がA6に、参加者一覧がA1:E4にあると仮定)。 ``` =INDEX($A$1:$E$1,1,MATCH(A6,$A$2:$E$4,0)) ``` ただし、上記の式は`MATCH`を2次元範囲で使う際に特定の制限があり、通常の`MATCH`関数は1次元配列にしか対応していないため、この方法ではエラーが生じる可能性があります。この場合は、別のアプローチとして、参加者一覧を列ごとに分け、それぞれの列での`MATCH`関数を個別に実行し、その結果を組み合わせることになります。 それぞれの列に対して`MATCH`を使い、名前の検索が成功した場合に対応する曜日を取得する式を構築します。`IF`関数や`IFERROR`関数を併用して、検索結果がエラー(つまり名前が見つからなかった場合)には次の列を試すように条件分岐を作成します。 詳しい構文や式が必要な場合、またはより具体的なケースに応じたサポートが必要な場合は、お気軽に追加で質問をお寄せください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

関連するQ&A