こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excel 検索の式を教えてください

すいません エクセルで検索の式がわからなくて困っています。
A B C D
1 果実 みかん  りんご  ばなな
2 野菜 きゅうり かぼちゃ もやし
3 魚  たこ  いわし  まぐろ

というセルで、例えばかぼちゃを入力すると野菜、まぐろと入力すると魚というように B1~D3を検索してその行のA列の内容を表示することは可能でしょうか。if、INDEX、MATCH関数などをネストすれば出来そうな気がするのですが思いつきません。
わかる方、ご教授願えませんでしょうか

投稿日時 - 2006-11-22 01:11:04

QNo.2554599

困ってます

質問者が選んだベストアンサー

>SUMPRODUCT(($A$1:$D$3=入力セル)*ROW($A$1:$A$3)))の意味が…

これを理解する解説ですが

みかん  りんご  ばなな
きゅうり かぼちゃ もやし
たこ    いわし  まぐろ

は{みかん,りんご,ばなな;きゅうり,かぼちゃ,もやし;たこ,いわし,まぐろ}
とexcel上では認識されます

これに対し「=入力セル」とするわけですが
例えば「=入力セル」の値が「みかん」だったとしますと
{true,false,false;false,false,false;false,false,false}
という回答になります

ここで話は変わりますがexcelでは
Trueは0以外の数、Falseは0と
それぞれ同値と見なされています
特にTrueに0を足したり、1を掛けた場合
値が変わらないはずですが
1が回答されます

話を戻して
ご質問の部分は先ほど挙げた例で言うと
{true,false,false;false,false,false;false,false,false}
これに{1;2;3}を掛ける行列演算の解を出し
その総和を求めています

下に参考URLを示します
少し内容にずれがあるかも知れませんが
基本的にこのWEBページを理解したら
このご質問の辺りも理解できると思います

参考URL:http://pc.nikkeibp.co.jp/pc21/special/hr/index.shtml

投稿日時 - 2006-11-23 01:49:28

お礼

説明ありがとうございました。

最終的にこれを使わせていただきました。配列という考え方と、SUMPRODUCT関数の応用を知ることができました。EXCELも奥が深いものですね。 若干判り難いところとして、検索マッチした行をROW($A$1:$A$3)で取れるというのは便利というか理解できないというか・・
EXCELも判れば楽しいものですね

投稿日時 - 2006-11-25 20:54:09

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

◆ANo.3のmaronです
  A    B      C    D     E     F    G
1 果実 みかん  りんご  ばなな      かぼちゃ 野菜 
2 野菜 きゅうり  かぼちゃ もやし      たこ    魚  
3 魚   たこ    いわし  まぐろ      ばなな  果実

◆上のような場合、F1に「かぼちゃ」を入力すると、G1に「野菜」と表示
G1=INDEX($A$1:$A$3,SUM(INDEX(($B$1:$D$3=F1)*ROW($1:$3),)))
★下にコピー

>SUM関数以降が何をしているのかわかりません
◆G1(式が入力されているセル)を選択して、数式バーの
INDEX(($B$1:$D$3=F1)*ROW($1:$3),) の部分を指定して、「F9」をクリックします、次に
SUM(INDEX(($B$1:$D$3=F1)*ROW($1:$3),)) の部分を指定して、「F9」をクリックします、いかがでしょうか?

投稿日時 - 2006-11-23 07:41:37

お礼

上記の方法で問題解決いたしました。
最初上手くいかなかった理由としてINDEX関数の範囲とROW関数の先頭範囲が一緒であった為でした。

対応どうも有難う御座いました。

投稿日時 - 2006-11-25 20:47:35

ANo.5

次の方法は如何でしょうか。
=IF(COUNTIF($A$1:$D$3,入力セル),INDEX(A:A,SUMPRODUCT(($A$1:$D$3=入力セル)*ROW($A$1:$A$3))),"想定外")

投稿日時 - 2006-11-22 18:29:01

補足

返答ありがとうございます。

仕事時間外なのでまだためしてはいませんが、
SUMPRODUCT(($A$1:$D$3=入力セル)*ROW($A$1:$A$3)))の意味がわかりません。もしよろしければ説明お願いできないのでしょうか
もしくは参考URLなどを教えてください。

投稿日時 - 2006-11-22 23:52:17

ANo.4

=IF(COUNTIF($B:$D,$F$1)=1,MATCH(1,FIND($F$1,$B:$B&$C:$C&$D:$D),0),"Mis Match")

これで如何でしょうか?

投稿日時 - 2006-11-22 16:59:35

お礼

返答有難うございました

投稿日時 - 2006-11-25 21:10:13

ANo.3

◆「かぼちゃ」等、検索語を入力するセルをF1だとして、
=INDEX($A$1:$A$3,SUM(INDEX(($B$1:$D$3=F1)*ROW($1:$3),)))

投稿日時 - 2006-11-22 02:55:18

補足

返答ありがとうございます。
使わせていただきましたが、思った結果が得られませんでした。
1列目の値は取得できているのですが、行があいません。
式についてですがSUM関数以降が何をしているのかわかりません、お手数ですが説明していただけないでしょうか。

投稿日時 - 2006-11-22 22:53:39

ANo.2

「かぼちゃ」等、検索語を入力するセルをF1だとして、
空いている列に
=COUNTIF(B1:D1,F$1)
下へコピー。

上の式をE列に入れたとして、A列の内容を表示するセルに、
=INDEX(A:A,MATCH(1,E:E,0))

作業列を使わずに関数のネストだけで求めるのは、
100行で20~30列もあると、ちょっと無理かも。

投稿日時 - 2006-11-22 02:41:12

お礼

返事有難うございました

投稿日時 - 2006-11-25 21:14:57

ANo.1

別シートに

A  B
みかん 果実
りんご 果実
ばなな 果実
きゅうり 野菜
かぼちゃ 野菜
もやし 野菜
たこ 魚
いわし 魚
まぐろ 魚

という表をつくって、そこからVLOOKUP関数というのはだめですか。
http://www3.tokai.or.jp/excel/kansu/vlookup.htm

投稿日時 - 2006-11-22 01:26:03

補足

返答ありがとうございます。

実際、検索するシートは100行くらいで20~30列くらいになってしまうもので列を入れ替えるくらいならできそうなのですが・・・

投稿日時 - 2006-11-22 01:31:47

あなたにオススメの質問