プロが教える店舗&オフィスのセキュリティ対策術

エクセルで1列や1行であれば指定の文字を探す関数は知っていますが
A1:D10のような複数の列、行の範囲の中から指定の文字が入っている
セルの位置を調べる関数はないでしょうか?
これか出来たら他の作業が出来るのですがずっと作業が止まったままです。
お願いします!

A 回答 (5件)

セルの位置を調べてもあんまりそれだけでコタエになるワケじゃないので,もっと具体的に「それを調べた後に更にどういう結果が欲しい(実際には何をしたい)」のか,別途改めてご相談を投稿してみてください。




とりあえず今回のご質問の範疇では。

○条件に該当するデータが必ず一つあり,必ず1つしか無い事が判っている場合
該当の行番号
=SUMPRODUCT((A1:D10="目的値")*ROW(A1:D10))

○条件に該当するデータが幾つあるのか無いのか判らない場合
該当の列番号
=IF(COUNTIF(A1:D10,"目的値")=1,SUMPRODUCT((A1:D10="目的値")*COLUMN(A1:D10)),"N/A")


#言わずもがなですが勿論,探したい目的値が文字なのか数値なのかに応じて,適切に数式を修正しなければいけません。

#セル番地を取り出しても殆ど使い道はありませんが,そういう結果が欲しいならADDRESS関数などを併用します。
    • good
    • 0
この回答へのお礼

こちらの回答を応用して解決できました!
有難うございました。

お礼日時:2012/01/15 16:37

(1)関数


MATCH関数やVLOOKUP関数は1列内を捜します。
また1列内でも複数該当があるときに、2つ目以降を探すのは難しいです。
そういうことを質問に注意書き出来て無いというのは、勉強が足りません。
関数では非常に式が複雑になって難しい。
ーー
(2)操作
操作ならセル選択状態を示すだけだが、検索操作があるでしょう。そういうことも質問に述べてない。
ーー
(3)VBA
(2)の操作をして、マクロの記録を取れば、コードがどういうものになるかがわかる。
繰返しに持って行くところと検索終了の処理が難しいが、WEB照会すればコード例は沢山見つかる。
ーーー
該当セルを選択されたとして、質問者はそのセルの情報から何を知り(取り)たいのか、も書いてなくて、この質問はザルのような質問。
>字を探す関数
補足では数値を探すようでも在る。この点がやり方の死命を制す場合もあるので、明確にして質問を書くこと。
エクセルのバージョンも書いておくのが常識。
    • good
    • 0
この回答へのお礼

NO.2さんの回答で解決できました!

お礼日時:2012/01/15 16:38

こんばんは!


横からお邪魔します。

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
    • good
    • 0
この回答へのお礼

NO.2さんの回答で解決できました!

お礼日時:2012/01/15 16:38

例えば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),""))))
    • good
    • 0
この回答へのお礼

NO.2さんの回答で解決できました!

お礼日時:2012/01/15 16:38

どんなことをしようとしているのかがいまいちよく分かりませんが、


条件1と条件2の組み合わせ表があって、
指定した条件が交差するところの値を求めるなら
INDEX関数とMATCH関数の組み合わせはいかがですか?

http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/ …

セル範囲内にそれぞれどんな内容が入っていて、
どんな検索の仕方、条件の与え方をして、
どんな結果(セルの番地なのか、内容なのか)を返したいのかがよく分からないので
外していたらごめんなさいね。

この回答への補足

ご返答ありがとうございます。
検索したいセルの範囲はA2からDQ1000まであって
そこにランダムに1~500までの数字が入っています。
例えば345が入っているセルの番地を返したいです。
MATCH関数だと1列しか指定が出来ないので複数の列から検索したいです。

補足日時:2012/01/07 14:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!