• ベストアンサー

検索結果の値を返すマクロ

以下のような表で列「A」にある値を「C1~I1」より検索し 一致するものがあれば、列名を「B列」に返すマクロを作りたいのですが、どのようにマクロを記述したら良いでしょうか? A  B  C  D   E   F   G   H   I       10 20 30 40 50 60 80 10 20 10 50 60 勉強してみたのですが、変数をどのように使っていいか判りません。 ご助言いただければと思います。

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんばんは。 A列は2行目からデータがあるとして 最も基本的なコードを書くと --------------------------------------------------- Sub Test()  Dim Rw As Long  Dim Clm As Integer  For Rw = 2 To Range("A65536").End(xlUp).Row   For Clm = 3 To 9     Cells(Rw, "B") = ""     If Cells(Rw, "A") = Cells(1, Clm) Then       Cells(Rw, "B") = Chr(Clm + 64)       Exit For     End If   Next Clm  Next Rw End Sub ------------------------------------------------- 以上です。

junna_hana
質問者

お礼

ありがとうございます。 助言どころか、丸々教えてくださり感謝です。 普段ならもう少し勉強するのですが、会社からせかされていたのでとても助かりました。 本当にありがとうございました。

その他の回答 (2)

回答No.3

マクロの勉強のためでしょうか? それなら、ANo.2さんの回答でいいと思いますが。 蛇足ながら、ご質問のコトを関数でも可能です。 =CHAR(66+MATCH(A3,$C$1:$I$1,0))

junna_hana
質問者

お礼

勉強のためというわけではなく、関数の勉強がたりなかったようです。関数で出来るとは思いませんでした。 最終的には、返ってきた列にある数値から、検索値と同じ行数にあるものを拾いたいと思っていたのでマクロでしか出来ないと思っていました。 必要な運賃を表示するエクセルを目指してます。 マクロと関数の方法を教えていただけましたので、使い分けれるようになればいいなと思います。 ありがとうございました。

noname#112583
noname#112583
回答No.1

VLOOKUPとIFを使えばできそうですが マクロがよろしいんですよね

関連するQ&A