• ベストアンサー

エクセルで表の検索方法を教えてください。

エクセルで表の検索方法を教えてください。 添付画像のように A1:D16 に表があります。 A18:D18 に1行のデータがあります。 このデータが、表の何番目にあたるのか検索する方法を知りたいです。 すぐに思いつくのは、作業列を1列用意し、そこにA列からD列の各行の値を結合して表示させ、作業列の値で検索することですが、それ以外の関数での方法を知りたいです。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.1

=MATCH(A18&B18&C18&D18,A1:A16&B1:B16&C1:C16&D1:D16,0) 【お断り】上式は必ず配列数式として入力のこと

emaxemax
質問者

お礼

体調がわるく、お礼が遅くなりました。申し訳ありませんでした。 求めていた結果が出ました。 ありがとうございます。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

すでに、もっと進歩した方法の解法が出ていますから、今更ですが理解がむつかしい。 下記は配列数式を素直に適応した方法です。 こういうのはVBAで考えれば、無理なく、また複数該当でも拾える。 質問者に多いが、関数へなぜそんなにこだわるのか。 ーー 空いているセル範囲の16行を範囲指定し 数式バーへ=IF((A1:A16=$A$18)*(B1:B16=$B$18)*(C1:C16=$C$18)*(D1:D16=$D$18)=1,ROW(A1:A16),"") と入れて、SHIFT+CTRL+ENTERを同時押しする。 本件の場合は、3(番目の)行目に 3と出ます。 A3にあることを示しています。

emaxemax
質問者

お礼

ありがとうございます。 残念ながら正しい答えは返りませんでした。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.6

添付は4ビットのコード表ですね この表は必要りません ですので0~15 「=A18*8+B18*4+C18*2+D18+1」

emaxemax
質問者

お礼

ありがとうございます。 残念ながら正しい答えは返りませんでした。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

回答ではないのですが、添付画像のセルに見えて居る「TRUE、FALSE」は真理値なのか、2種類の文字列「A,B」の代わりと言えるものなのか、はっきりさせるべきです。あるいは例としてはTRUE等は適当では無い(大げさ)のかも。 普通にTRUEを入れると下記実行では-1が返る。 ’trueなら方が一致しませんと返る。 Sub test01() MsgBox Range("A1") * 1 End Sub Sub test02() MsgBox VarType(Range("A1")) End Sub test02()では、A1セルにTrueと入れると、11=ブール型と返る。 ーー ブール型ならそれ相応な回答もありそうなので、注意してほしい。

emaxemax
質問者

お礼

ありがとうございます。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.4

E1に以下の数式を入力し,E16までコピー =AND(A1=$A$18,B1=$B$18,C1=$C$18,D1=$D$18) TRUE が一致した行です. 一致する行が複数あっても対応可能です.

emaxemax
質問者

お礼

ありがとうございます。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

[条件付き書式]の“お遊び”です。(*^_^*) ルールの適用先: =$A$1:$D$16 ルールの種類:“数式を…を決定” ルールの内容↓  ̄ ̄数式→ =COUNTIF($E$18:$E$22,ROW($A1))  ̄ ̄書式→ 黄の塗りつぶし色

emaxemax
質問者

お礼

ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

18行目の組み合わせが1行目から16行目の組み合わせで複数見つかることはありませんか? また、18行目の組み合わせが見付からないときの処理をどうしますか? 複数の組み込み関数を併用すれば作業列を使わなくても検出可能です。 MAX関数、INDEX関数、MMULT関数、ROW関数を組み合わせる方法で良いと思います。 =MAX(INDEX((MMULT((A1:D16=A18:D18)*1,{1;1;1;1})=4)*ROW(A1:A16),0)) 一致する組み合わせが複数のときは最下行の値になります。 見付からないときは0が戻ります。

emaxemax
質問者

お礼

体調がわるく、お礼が遅くなりました。申し訳ありませんでした。 MMULTは初めて見る関数です。 求めていた結果が出ました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう