• ベストアンサー

エクセルで配列の中から指定文字を検索

エクセルで配列の中から指定の文字を検索し、そのセルのアドレスを求めたいのですが、マクロを使わず一般の関数で出来ないでしょうか? 既にある質問かも知れませんが、よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#03です。同じ値が複数ある場合に対応するようにしました。 A1:D3の配列でA8セルの値と一致する一番左上のセルのアドレスを表示する式です。 =IF(COUNTIF(A1:D3,A8)=0,"該当なし",ADDRESS(SUMPRODUCT((A1:D3=A8)*ROW(A1:D3)),MATCH(A8,INDIRECT("R"&SUMPRODUCT((A1:D3=A8)*ROW(A1:D3)),0),0),1,1))

gchanpe
質問者

お礼

zap35さま 早速の回答、感謝に堪えません。 特殊な技を教えて戴いたような気がします。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

A1:D3の配列でA8セルの値と一致するセルのアドレスを表示するなら、次の式です。 =ADDRESS(SUMPRODUCT((A1:D3=A8)*ROW(A1:D3)),SUMPRODUCT((A1:D3=A8)*COLUMN(A1:D3)),1,1) でも一致する値がなかったり、複数ある場合は期待通りにならないので以下のようなエラー処理が必要です =IF(COUNTIF(A1:D3,A8)=0,"該当なし",IF(COUNTIF(A1:D3,A8)=1,ADDRESS(SUMPRODUCT((A1:D3=A8)*ROW(A1:D3)),SUMPRODUCT((A1:D3=A8)*COLUMN(A1:D3)),1,1),"複数あります")) やはりマクロを使用するほうが制約なくできると思います。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

   A   B   C   D   E 1  あ   A   a   C   B3 2  い   B   b 3  う   C   c 4  え   D   e ◆同じ文字が無ければ ★D1の文字のアドレスです E1=ADDRESS(SUM(INDEX(EXACT(A1:C5,D1)*ROW(A1:C5),)),SUM(INDEX(EXACT(A1:C5,D1)*COLUMN(A1:C5),)),4)

gchanpe
質問者

お礼

maron-5さま ありがとうございました。 一つずつ関数を理解しながら使用してみます。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

配列、というのは複数の行列にわたるセルのことでしょうか。 たとえばA列だけの中から"A"という文字を検索するのであれば、 =IF(COUNTIF(A:A,"A")>0,ADDRESS(MATCH("A",A:A,0),1,4),"") という感じでできます。行列が複数に及ぶのであれば、ちょっとわかりません。(マクロでユーザ定義関数を作れば別ですが)

gchanpe
質問者

お礼

ham_kamoさま 早速回答いただきまして有り難うございます。 今回は1列だけなのでそのまま使用させて貰います。 やはりマクロを勉強しないとダメですね。

関連するQ&A