- ベストアンサー
A1:D10のような複数範囲でセル位置を検索したい
エクセルで1列や1行であれば指定の文字を探す関数は知っていますが A1:D10のような複数の列、行の範囲の中から指定の文字が入っている セルの位置を調べる関数はないでしょうか? これか出来たら他の作業が出来るのですがずっと作業が止まったままです。 お願いします!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
セルの位置を調べてもあんまりそれだけでコタエになるワケじゃないので,もっと具体的に「それを調べた後に更にどういう結果が欲しい(実際には何をしたい)」のか,別途改めてご相談を投稿してみてください。 とりあえず今回のご質問の範疇では。 ○条件に該当するデータが必ず一つあり,必ず1つしか無い事が判っている場合 該当の行番号 =SUMPRODUCT((A1:D10="目的値")*ROW(A1:D10)) ○条件に該当するデータが幾つあるのか無いのか判らない場合 該当の列番号 =IF(COUNTIF(A1:D10,"目的値")=1,SUMPRODUCT((A1:D10="目的値")*COLUMN(A1:D10)),"N/A") #言わずもがなですが勿論,探したい目的値が文字なのか数値なのかに応じて,適切に数式を修正しなければいけません。 #セル番地を取り出しても殆ど使い道はありませんが,そういう結果が欲しいならADDRESS関数などを併用します。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17070)
(1)関数 MATCH関数やVLOOKUP関数は1列内を捜します。 また1列内でも複数該当があるときに、2つ目以降を探すのは難しいです。 そういうことを質問に注意書き出来て無いというのは、勉強が足りません。 関数では非常に式が複雑になって難しい。 ーー (2)操作 操作ならセル選択状態を示すだけだが、検索操作があるでしょう。そういうことも質問に述べてない。 ーー (3)VBA (2)の操作をして、マクロの記録を取れば、コードがどういうものになるかがわかる。 繰返しに持って行くところと検索終了の処理が難しいが、WEB照会すればコード例は沢山見つかる。 ーーー 該当セルを選択されたとして、質問者はそのセルの情報から何を知り(取り)たいのか、も書いてなくて、この質問はザルのような質問。 >字を探す関数 補足では数値を探すようでも在る。この点がやり方の死命を制す場合もあるので、明確にして質問を書くこと。 エクセルのバージョンも書いておくのが常識。
お礼
NO.2さんの回答で解決できました!
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 No.1さんの補足を読ませてもらうと >検索したいセルの範囲はA2からDQ1000まであって >そこにランダムに1~500までの数字が入っています とありますので、範囲内に複数あっても表示するようにしてみました。 VBAになってしまいますが・・・ 範囲内のデータは文字列ではなく、数値とします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim vl As Variant Dim str As String vl = Val(InputBox("検索したい数値を入力。")) If WorksheetFunction.CountIf(Range("A2:DQ1000"), vl) Then Application.ScreenUpdating = False For j = 1 To 121 For i = 2 To 1000 If Cells(i, j) = vl Then str = str & WorksheetFunction.Substitute(Cells(i, j).Address, "$", "") & " " End If Next i Next j Application.ScreenUpdating = True MsgBox (vl & " のセル番地は" & vbCrLf & Left(str, Len(str) - 1) & vbCrLf & "です。") Else MsgBox "該当データはありません。" End If End Sub 'この行まで ※ INPUTBOXが表示されますので、検索したい数値を入力すると、そのセル番地がメッセージボックスに表示されると思います。 ご希望の方法でなかったらごめんなさいね。m(_ _)m
お礼
NO.2さんの回答で解決できました!
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばE1セルに指定文字を入力するとしてその文字の入力されているセル番地は次の式で求めることができます。 =IF(COUNTIF(A1:A10,E1),ADDRESS(MATCH(E1,A1:A10,0),1),IF(COUNTIF(B1:B10,E1),ADDRESS(MATCH(E1,B1:B10,0),2),IF(COUNTIF(C1:C10,E1),ADDRESS(MATCH(E1,C1:C10,0),3),IF(COUNTIF(D1:D10,E1),ADDRESS(MATCH(E1,D1:D10,0),4),""))))
お礼
NO.2さんの回答で解決できました!
- pentium100
- ベストアンサー率45% (689/1517)
どんなことをしようとしているのかがいまいちよく分かりませんが、 条件1と条件2の組み合わせ表があって、 指定した条件が交差するところの値を求めるなら INDEX関数とMATCH関数の組み合わせはいかがですか? http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/index_function.htm セル範囲内にそれぞれどんな内容が入っていて、 どんな検索の仕方、条件の与え方をして、 どんな結果(セルの番地なのか、内容なのか)を返したいのかがよく分からないので 外していたらごめんなさいね。
補足
ご返答ありがとうございます。 検索したいセルの範囲はA2からDQ1000まであって そこにランダムに1~500までの数字が入っています。 例えば345が入っているセルの番地を返したいです。 MATCH関数だと1列しか指定が出来ないので複数の列から検索したいです。
お礼
こちらの回答を応用して解決できました! 有難うございました。