• ベストアンサー

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

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

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

  • ベストアンサー
  • 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

  • EXCELで指定した文字列のアドレスを取得したい

    Excelで指定した文字列を検索し、その文字列があるセルのアドレスを取得する方法はないのでしょうか? マクロは使用せず、関数のみでやれたらいいのですが、なかなかうまい方法が見つかりません。 Excel2007、VISTAを使用しています。

  • エクセルで文字列検索

    OS2000 エクセル2000です セルの中から文字を検索するにはどうしたらよいでしょうか?関数を使わないとできませんか? 例えば1000行のセルの中に「デジカメ」の文字が 入ってるのかどうか調べたいのですが。 スクロールで追っていくのが大変だったので、質問 させていただきました。 初心者ですみません!

  • エクセルで任意の文字を指定範囲から検索

    お世話になります。 エクセルにて特定のセルに入力した文字を指定してある範囲から検索し、指定した位置に表示をさせると言った事は出来るのでしょうか? 例 シート1:A1に検索したい文字を入力 シート2:A1~A50までの行を検索 シート1:上記検索で該当する行をA2~A50に表示 こういった検索は可能なのでしょうか? Ctrl+Fやフィルタではなく、セルに入力した文字を検索するようにしたいのです。 可否のみでも、こうゆうマクロを使えば出来ると言った事でも構いません。 よろしくお願いします。

  • 文字列検索の参照文字列の指定について

    Excelでセルに任意の文字列をペーストします。そのセルは別のブックにリンクしているのでペーストする度にリンク先のセルでは文字列が更新されます。リンク先のブックにはワークシートが10あっていづれかのシートのA列にその文字列がある事になっています。更新された文字列を検索する作業を繰り返すのでマクロで組み込もうと思ったのですがFIND関数にしても、VBでCell.Find(What:=....と書くにも参照する文字列を直接指定してやらないと動きません。参照する文字列が相対的に変化するので「特定のセルの中に入力された文字列」を参照してブック内を検索したいということなのですが、実現するにはどうしたらようでしょうか?

  • エクセルマクロで検索

    エクセル初心者です。 エクセルで表を作ったのですがその中の計算式で月が変わるたびに参照するワークシートが変わるのでマクロの検索をつかいたいと考えています。 表の横に検索するワークシート名と置き換えするワークシート名をいれるセルをつくりマクロを組んで実行すると置き換えが完了するというようなマクロはできませんか?セル自体を検索置き換えはできるのですがセルの中の文字を指定の仕方がわかりません。 説明がヘタなのでわかりにくいかと思いますがよろしくおねがいします。

  • エクセル関数 ひとつのセルに含まれる、指定した文字の数を知りたい

    初めての質問になります。 ひとつのセルの中に、指定した文字がいくつ入っているかを確認できる関数を探しています。 たとえば、ひとつのセルの中に 『AABCDAADBCA』 といった文字列があったとき、その中で『A』はいくつ含まれているかをいうのを即座に知りたい のですが、それを調べる関数がどうしてもわかりません。 ヘルプで調べてみたのですが、結局わかりませんでした。 どなたかわかる方がいたら、ご教授願えませんでしょうか? ポイントは、『指定した文字が含まれているセルの個数』ではなく、 『ひとつのセルの中に、指定した文字がいくつ含まれるか』 です。 よろしくお願いします。

  • 複数のXLSファイルのうち、特定のセルだけに注目して文字列を検索したい

    複数あるExcelファイルの中から、特定の文字列が存在するファイルを検索して、そのファイル名を取得するというマクロを作成しています。 この検索時、検索するのはファイル全体ではなく、1シート目のこのセルというのを明示したいのですが、そのような方法はありますでしょうか? また、ファイルを明示的に開かないようにもしたいです。 簡単になら、FileSearchがありますが、これはどうやらフォルダまでは指定できますが、セルの場所までは指定できないみたいです。 ファイルをオープンにすると、可能でしょうけどそうなると処理が重くなりそうです。 また、ファイル全体を検索すると、いくつもの単語が引っかかる可能性があるので不可能です。 各単語を配列に格納して、どの単語と一致するのか調べ、一致した場合そのファイルと検索単語の配列が、同じ番号になるようにソートする、方法となります。 どのような関数を使ったら可能なのか、ヒントだけでもお教えいただけないでしょうか。 よろしくお願い致します。

  • エクセルで、入力された文字を検索して表示

    よろしくお願いします。 例えば、 「B1~H1 セルのどれかに任意の文字を入力すると、A1セルに同じ文字を表示する」 というようなことをエクセル関数を使って実現可能でしょうか。 VBマクロは使えないものとします。

  • EXCELで、指定セルにある文字列が入っていれば、別のセルに指定文字を入れたい

    EXCELで、指定するセルに、例えば「猫」という文字列が入っていれば、 別の指定セルに1という数字をいれ、 入っていなければ、0という数字を入れたいです。 IF関数を使えばよいのかと思ったのですが、 よくわかりません。 すみませんが教えていただけないでしょうか。

  • エクセル関数(文字検索で・・・)

    初めまして。今ある特定範囲の中から指定した文字があるかないかを検索してその文字があれば○・なければ×と言う事をしたいのです。IFを使ってするのはわかっているのですが、特定範囲の中から指定した文字を検索することはできますか?今やっているものの例ですが、セルA1に"あ"・B1に"い"・C1に"う"とあったとします。作成した式は"あ"があれば○としたとき、=IF(A1:C1="あ","○","×")としました。関数のダイアログボックスでは答えがでているのですが、実際に式を確定するとVALUEのエラーがでます。なぜでしょうか?根本がちがってますか?今の例のような範囲のなかから指定する文字を探す関数などありますか? 意味が伝わるでしょうか?どう書いていいのか・・。すみません教えて下さいm(__)m

専門家に質問してみよう