アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの関数でできるかどうか分かりませんが、、

下記のように表があり、特定の値を含むセルが複数存在しています。


       “A列”   “B列”   “C列” ・・・
9/1(日)  111aaa  222bbb  333ccc
9/2(月)  444ddd   111eee  555eee
9/3(火)   666fff   777ggg  111hhh
 ・
 ・
 ・

このときに、「111」を含むセルを検索すると
そのセルが存在する【行名(日付)】と【列名】をずらーーっと
下記にように返す方法はなにかありますでしょうか??


“A列”の9/1(日)
“B列”の9/2(月)
“C列”の9/3(火)
 ・
 ・

尚、上記のように出力できなくても、
特定の文字列を含む行名と列名が
一括で確認できれば問題ありません。
(VBAとかだとできるのでしょうか、、)


可能な限り急ぎ方法を知りたいのですが、
ググってもvlookup、indexの解説ばかりで困ってしまっていますので、
どうかアドバイスのほど宜しくおねがいします。

A 回答 (1件)

次の通りに行います。




準備
1行目に「A列」とか「B列」のように各列のタイトルをキチンと記入する
A列,A2以下のセルに9/1以下の日付を記入する
B2セル以降にデータを記入する
一応簡単のため,データは全て「文字列」だとする(判らなければ無視)

手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim c as range
 dim c0 as string
 dim a as variant
 dim w0 as worksheet

 a = inputbox("SEARCH STRING")
 if a = "" then exit sub

 set w0 = activesheet
 set c = w0.cells.find(what:=a, lookin:=xlvalues, lookat:=xlpart)
 if c is nothing then
  msgbox "NOTHING FOUND"
  exit sub
 end if

 worksheets.add after:=activesheet
 activesheet.range("A1:B1") = array("COL","ROW")
 c0 = c.address

 do
  range("A65536").end(xlup).offset(1) = w0.cells(1, c.column).text
  range("B65536").end(xlup).offset(1) = w0.cells(c.row, 1).text
  set c = w0.cells.findnext(c)
 loop until c.address = c0
end sub

ファイルメニューから終了してエクセルに戻る
データを記入したシートを開く
ALT+F8を押してマクロを実行する。



>エクセルの関数でできるかどうか分かりませんが

良く寄せられるご相談の一種ですが,エクセルの関数はコタエを「1つだけ」返すモノで,「該当するリストをずらっと並べる」といった便利な関数はありません。なので探しても,通常はそういう使い方は見つかりません(他の表計算では,そういう事ができる関数を備えているモノも確かにあります)。

無理矢理すれば一応出来る計算式はありますが,通常は聞くだけで応用できないので役には立ちません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!

実行してみたところ、見事期待していた内容が出力されました!
検索の入力フォームまで出していただき、、感動です!


>良く寄せられるご相談の一種ですが,
そうなんですね。。
その点「使える」内容を教えていただき、非常に助かりました。



今日のところはこれで全く問題ないのですが、
もし可能であればもう1点だけ教えてください。

複数の値について、1回で検索を実行して出力するには
どう変えればいいでしょうか?


検索値1     検索値2
COL ROW    COL ROW
AA  9/1      BB    9/2
AA  9/3     DD     9/3


これも出力形式はこだわりませんが、
例えば上記のようなイメージです。

お礼日時:2013/09/05 18:08

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