- ベストアンサー
[Excel]行列の中の検索について
現在使用しているのがExcel2007です。 例えば以下のような配列があったとします。 A1(=りんご) B1(=1) C1(=3) D1(=5) A2(=みかん) B2(=2) C2(=4) D2(=6) A3(=ばなな) B3(=7) C3(=8) D3(=9) このときにA4に"3"を入力したらB4に"りんご" A4に"8"と入力したら"ばなな" などと選択されるような関数がどうしても作成できません。 ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
例えば =INDEX(A1:A3,SUMPRODUCT((B1:Z3=A4)*ROW(B1:Z3))) こんな感じでは如何でしょうか。 B1~Z3に同じ番号がないことが条件です。
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますので・・・ 参考程度で目を通してみてください。 他の方々とほとんど似たような回答になってしまいます。 作業用の列を使う方法になります。 ↓の画像の作業用列のH2セルに =IF(COUNTIF(E2:G2,$A$2),"○","") としてオートフィルでずぃ~~!と下へコピーします。 そして、結果を表示させたいB2セルに =IF(A2="","",INDEX(D2:D100,MATCH("○",H2:H100,0))) (「○」部分を「1」のように数字に替えたほうが簡単かもしれません) という数式を入れています。 数式は100行まで対応できるようにしています。 尚、数値に重複があると正確な結果を返しませんので 重複はないものとしての回答です。 以上、参考になれば幸いです。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
解答No1です。 行や列が多くなるのでしたら作業列を作って対応するのが判りやすいでしょう。 E1セルに次の式を入力して下方にオートフィルドラッグします。 =COUNTIF(B1:D1,A$4) 答えのB4セルには次の式を入力します。 =INDIRECT("A"&MATCH(1,E:E,0))
- ka_na_de
- ベストアンサー率56% (162/286)
作業列を使う方法です。 E1に =COUNTIF(B1:D1,$A$4) を入力しE3までコピペ F2に =A1 を入力しF3までコピペ A4に 検索する数値 B4に =VLOOKUP(1,E1:F3,2,FALSE) 行数、列数が増えても応用しやすいと思います。 作業列が邪魔なら非表示にしてください。 検索する数値は一箇所にしかない前提です。
- imogasi
- ベストアンサー率27% (4737/17069)
こんな内容は、エクセルの常識。最近エクセルをやり始めたのかな。 >A4に"3"を入力したらB4に"りんご"、A4に"8"と入力したら"ばなな" 3や4は、C列を参照しているようだがそれを明記のこと。 C列コードが名前列A悦より右にあると都合が悪い・ 名前をC列より右列に吹くさする方法があるが、すっきりしない。 それならA列はデータを入力せず、別列に たとえばE,F列に 3 りんご 4 りんご 8 ばなな ・・ の表を作る。表を分離しないと可笑しな課題になる。 そしてA列に=VLOOKUP(A1,$e$1:$f$199,2,FALSE) この式をデータ入力可能性のある行まで式を複写。 === 既に質問のような、表が出来上がっていて、その最下行の次から後の行において質問のことを、したいなら データーフィルターフィルタオプションの設定ー重複するレコードを無視するで、A列のデータで重複果物行の無い、果物のリストが出来る。 それを使うと上記のE,F列に当たる表が作れる。 以下は上記と同じ。 上記で言っているやり方わかるかな?
- KURUMITO
- ベストアンサー率42% (1835/4283)
B4には次の式を入力します。 =IF(COUNTIF(B1:D1,A4)>0,A1,"")&IF(COUNTIF(B2:D2,A4)>0,A2,"")&IF(COUNTIF(B3:D3,A4)>0,A3,"") なお、C1からC3の間にある数値が対象であるなら次の式でもよいでしょう。 =INDIRECT("A"&MATCH(A4,C1:C3,0))
補足
回答ありがとうございます。 私の説明が足りなくて申し訳ないのですが、お教えいただいた関数だと、 行数が例えば50列とかになってしまう場合、 式が非常に長くなってしまいます。 もう少しコンパクトな関数はないでしょうか?
お礼
返信が遅れてすみません。 この一行の数式に回答者様のセンスを感じます。 本当にありがとうございました。