VLOOKUP関数を使用していて質問です。
A1からE10までサイズや商品コード商品名等が入っているとします。
A1のサイズに該当するものがあれば5列目(E列)の商品コードが出るようにしてあるのですが、A1のサイズが重なってきました。
つまり、A列には横幅、B列には高さ、C列には奥行きが入ってます。
今まで横幅100高さ100奥行き100しかなかったのですが、横幅100高さ100奥行き150のサイズが増えてきたというわけです。A1の100、B1の100、C1の100や、A2の100、A2の100、A3の150のように横・高さ・奥行きの三つがぴたりと合えばE列の商品コードが出るようにするにはどうしたらいいのでしょうか?
VLOOKUP関数ではないような気がするのですが・・・。
よろしくお願いします。
No.11ベストアンサー
- 回答日時:
補足情報があるのを見落としていました。
>>「挿入」「名前」「定義」で例えば「A列」と名前を付け、参照範囲に以下の数式を入力します。
>これはシート1のA1のセルでよろしいのですね?
最初に提示したSheet1のA1セルの絶対参照の数式ならどのセルで名前定義してもOKですが、相対参照にしてほかの行のデータにも反映させたい場合は、数式を入力するセル(D1セル)ですべて名前定義する必要があります。
実際のデータにあわせて数式を変更すると数式を間違える可能性が考えられるので、ひとまず新規ブックのA1セルにたとえば「100」の数字を入力し、Sheet2のA列に「100」B列とC列にSheet1のB1とC1セルの値があるデータを作って、すべての数式をコピー貼り付けして設定してみて、Sheet2のE列のデータがうまく引っ張ってこられるかどうか確認してください。
最終的にシート名を変更したようなブックで設定する場合は、シート名とA列のデータの一覧表を使って、それをセル参照するほうが間違いが少ないかもしれません。
No.10
- 回答日時:
補足情報です。
名前定義で数式に利用する場合、D1セルだけでなく(A1セルを参照するだけでなく)その下のセルにも同様の数式を入力するなら、名前定義の際にD1セルを選択した場合は以下の相対参照した数式を入力してください。
=LOOKUP(Sheet1!A1,{100,200,300},{"Sheet2","Sheet3","Sheet4"})&"!A1:A100"
No.9
- 回答日時:
シート2のデータベースとなる表に様々な横、高さ、奥行きの違うデータを下の行に入力してそれに対する商品コード番号を入力ことで、それぞれのシートに商品コードとサイズの関係を記した表を作ることは必要ありません。
シート2まとめておくことですべての他のシートで同じ式をコピーして使うことができます。No.8
- 回答日時:
>シート1に先ほどの式を入れたら、横100高さ・・奥行き・・を入れたらシート2から探してくれる。
また横400高さ・・奥行き・・と入れたらシート5から探してくれる。 というわけにはいかないのでしょうか?もちろん、いろいろなアプローチで実行可能ですが、私の回答に対する補足がないようなのでExcel2007の場合で回答すると、以下のようなIFERROR関数で条件を分岐して追加するのが最も簡単な対応です。
=IFERROR(IFERROR(Sheet2を検索する数式,Sheet3を検索する数式),Sheet4を検索する数式)
検索する数式が多い場合や、古いバージョンのエクセルを使用している場合は、例えば以下のような名前を定義します。
「挿入」「名前」「定義」で例えば「A列」と名前を付け、参照範囲に以下の数式を入力します。
=LOOKUP(Sheet1!$A$1,{100,200,300,400},{"Sheet2","Sheet3","Sheet4","Sheet5"})&"!A1:A100"
上記の,{100,200,300,400}や{"Sheet2","Sheet3","Sheet4","Sheet5"}の部分は一覧表を作成してセル参照することもできます。
同様に「B」列」と名前をつけA1:A100の部分をB1:B100に変更した数式を入力します(コピーしてAをBに変更)。
同様に「C列」「E列」の名前を定義しておきます。
このように名前定義しておけば、Sheet1のA1、B1、C1セルに3つの数字が入力してある場合、D1セルに以下の数式を入力すれば該当するシートのE列のデータを表示することができます。
=INDEX(INDIRECT(E列),MATCH(A1&B1&C1,INDEX(INDIRECT(A列)&INDIRECT(B列)&INDIRECT(C列),),))&""
この回答への補足
ご丁寧にありがとうございます。
チャレンジしてみましたがうまくいきません。
>「挿入」「名前」「定義」で例えば「A列」と名前を付け、参照範囲に以下の数式を入力します。
これはシート1のA1のセルでよろしいのですね?B1のセルにはB列C1のセルにはC列と名前・定義・参照範囲を行いました。シート1のD1に最後に書いてくださった数式をそのまま貼り付けましたが、D1には「#N/A」と出ます。
また、上記の,{100,200,300,400}や・・は、便利そうなのはわかりますが今は、シンプルにこの数式を理解していきたいので、後回しにします。
遅くなりましたがエクセルは2003です。該当するサイズのものがない場合はエラーが出るほうがよいのです。よろしくお願いします。
No.7
- 回答日時:
多数のシートで商品コードを表示させることが必要な場合にはお示ししたように例えばシート2にデータベースを用意しておき、それを他のシートで利用すればよいでしょう。
同じシートの中にデータベースとなるものを取り入れて使うのはあまり推奨できません。
例えばシート1で入力した式は他のシート3やシート5でもそのまま使用することができます。
この回答への補足
ありがとうございました。
私の説明不足のようでした。
シート2に横幅が100で高さと奥行きがさまざまなものが入ってます。
シート3には横幅が200で高さと奥行きがさまざまなものが入ってます。同様にシート4には横幅300のものシート5には横幅400のものがあるとします。
シート1に先ほどの式を入れたら、横100高さ・・奥行き・・を入れたらシート2から探してくれる。また横400高さ・・奥行き・・と入れたらシート5から探してくれる。 というわけにはいかないのでしょうか?
No.6
- 回答日時:
参考までに。
該当データがない場合にエラー表示させないなら、条件部分に元の数式をISNA関数などで判定する必要がありますが、同じ配列を繰り返し用いると数式が重くなるので、間違えたデータの入力(#N/Aエラー)には対応する数式を提示しませんでした。
ご使用のエクセルのバージョンが明記されていないのですが、エクセル2007ならIFERROR関数で簡単にエラー処理をすることができます。
=IFERROR(元の式,"")
#バージョンによって使用できる機能や操作方法が異なりますので、質問の際にはご使用のバージョンなどを明記するようにしましょう。
ちなみに、No4の回答者のIF関数の「COUNTIF(Sheet2!A:A,A1)=0」などの部分ですが、この条件では各列の値は存在するが、該当するデータの組み合わせのない場合にはエラー表示されることになりますので注意してください。
No.5
- 回答日時:
A列からE列に元データがあり、G2、H2、I2セルに横・高さ・奥行きのデータが入力されている場合、以下のような配列数式の方がいく分計算負荷が少ないかもしれません。
=INDEX(E:E,MATCH(G2&H2&I2,INDEX($A$1:$A$100&$B$1:$B$100&$C$1:$C$100,),))&""
No.4
- 回答日時:
例えばシート2にはデータベースの表があるとして、A1セルから以降には横幅、B1セルから以降には高さ、C1セルから以降には奥行きの数値がそれぞれあり、E1セルから以降には相当する商品コードがあるとします。
そこでシート1の作業でA1セル以降には横幅、B1セル以降には高さ、C1セル以降には奥行きのデータをそれぞれ入力するとして、D1セル以降に商品コードを表示させるとしたらD1セルには次の式を入力して下方にオートフィルドラッグします。
=IF(OR(COUNT(A1:C1)<>3,COUNTIF(Sheet2!A:A,A1)=0,COUNTIF(Sheet2!B:B,B1)=0,COUNTIF(Sheet2!C:C,C1)=0),"",INDEX(Sheet2!E:E,SUMPRODUCT((Sheet2!A$1:A$100=A1)*(Sheet2!B$1:B$100=B1)*(Sheet2!C$1:C$100=C1)*ROW(Sheet2!A$1:A$100))))
この回答への補足
できました。ありがとうございました。
ところで、シート1とシート2にまたがらないといけないのでしょうか?シート1にデーターがあり、その中で探すことはできないのでしょうか?一枚のシートではムリなのでしょうか?
また、逆になるのですが、シート2シート3シート4などと多数のシートにデーターがある場合はどうしたらよいのでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- 家具・インテリア これは搬入可能ですか?机買います 幅68センチ奥行き70センチ高さ70センチ 重さ8キロ 手すりなし 3 2023/03/29 23:36
- 家具・インテリア これは搬入可能ですか?机買います 幅50センチ奥行き68センチ高さ110センチ 重さ40キロ 手すり 1 2023/04/18 22:44
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Excel(エクセル) Excelの関数についての質問です。(vlookup関数) A列 B列. C 1 大阪 50. 検索 6 2023/08/11 13:35
- Excel(エクセル) エクセル関数のXlookupのフィルハンドル機能(類した機能でも可)を知りたいです。 3 2022/09/20 20:02
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
office365って抵抗感ないですか?
-
以下、可能性ある原因と対策を...
-
Windows 11で、IME言語バー(IM...
-
大学のレポート A4で1枚レポー...
-
VBAで横データを縦データに変換...
-
PC officeのアイコンを触ってい...
-
会社のTeamsのことで相談です。...
-
outlookのメールが固まってしま...
-
【スプレドシート】IMPORTRANGE...
-
EXCELでの文字列連続抽出について
-
Microsoft 365 の支払いが反映...
-
エクセルにリンクされるのをし...
-
Office2021を別のPCにインスト...
-
Outlookを立ち上げたらGoogleロ...
-
マイクロソフトオフィス
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
複数の写真を1枚に印刷
-
パソコン買い換え Office移行 ...
-
PCを買い換えました。 今使って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
会社PCのメールが更新されない
-
Excel 日付を比較したら、同じ...
-
マイクロソフト 一時使用コード...
-
ウィンドウィズ メモ帳で日付だ...
-
MicrosoftOfficeの1ユーザー2...
-
Microsoft Formsの「個人情報や...
-
Officeの字体
-
エクセルでXLOOKUP関数...
-
Microsoft365で自動保存が出来...
-
Outlookで、任意のメールアドレ...
-
outlookのメールが固まってしま...
-
Microsoft 365 の一般法人向け...
-
Office2021を別のPCにインスト...
-
Microsoft 365のディフェンダー...
-
Excelに貼ったリンクについて E...
-
MicrosoftOffice2019なんですが、
-
Outlook で宛先が複数の場合の人数
おすすめ情報