• 締切済み

VBAのVLOOKUP

VBAのVLOOKUPについて質問です。 VBAでVLOOKUPの式を作りたいのですが、ネット検索し式を見ても意味がわかりません。 式のSubのしたにCellsと書いている人もいるし、Dim as longから始まっている人もいます。 そもそもDIMの意味がわからないのですが。 どなたかVLOOKUPの式の作り方とそのコマンドの意味を教えていただけないでしょうか

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>そのすべての111111の右側の合計を新しい列に出す マクロ以前にエクセルの基本的な使い方の知識の問題です。 そういうのはVLOOKUPじゃなくSUMIFで計算します。 ふつーにやるなら =SUMIF(A:A,111111,B:B) 同じようにマクロにすると sub macro2() msgbox application.sumif(range("A:A"), 111111, range("B:B")) end sub >それが下を見るとランダムにならんでいます どれも111111でイミフメイです。 >ただ補足があります。 それは補足じゃなくて、全く別の新しいご相談です。元のご相談と、一体どういうつながりがあると思ったのですか。 そういうのは元のご相談を「解決」の操作でキチンと閉じてから、新しい(詳しい、正確な、ちょこちょこっと思い付きで書いてみたんじゃない)具体的な状況を添えて、新しいご相談として投稿し直して下さい。 今回は回答しましたが、これはこちらのような質問相談掲示板での、ごく基本的なマナーなので覚えておいてください。次からは原則スルーしますので悪しからず。

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>式を作りたい どーしたらいいのか教わりたいのでしたら、まず「自分は何をしたいのか」を考えながら聞くようにしてください。 準備: A列に検索値を並べる B列に取ってきたい結果を並べる 【やりたいことその1】 D1に検索したい値を記入しておく E1に検索結果を出力する ふつーならE1に =VLOOKUP(D1,A:B,2,FALSE) と計算すればよいところを、わざわざマクロを使ってやってみる。 sub macro1() range("E1") = application.vlookup(range("D1").value, range("A:B"), 2, false) end sub 解説: E1セルに、VLOOKUPの結果を記入する VLOOKUP関数の使い方は  第一引数 検索したい値 D1セルの値を与える  第二引数 検索対象範囲 A:B列のセル範囲を与える  第三引数 対象範囲から2列目を取ってきたいので数字の2を与える  第四引数 あなたが何を計算したいのか不明なのでとりあえずFALSEを与える 以上です。 あとは、VLOOKUPとは全く無関係に、単にマクロの書き方(知識)の問題です。 【やりたいことその2】 D列のD2から下に検索値が幾つか並べて記入してあるときに、 それぞれ隣のE列に検索結果を並べて出力したい ふつーならE2セルに =VLOOKUP(D2,A:B,2,FALSE) と記入し以下コピーして埋めておけばよいことを、マクロを使って実施してみる sub macro2()  dim h as range  for each h in range("D2:D" & range("D65536").end(xlup).row)   h.offset(0, 1) = application.vlookup(h.value, range("A:B"), 2, false)  next end sub 解説: D列のセルの上から順に1つずつ巡回する 右隣のセルにVLOOKUPの計算結果を一つずつ記入していく  VLOOKUP関数に与えた中身は前述と一緒なので省略 リストの下端まで繰り返す #参考 sub macro3()  with range("E2:E" & range("D65536").end(xlup).row)   .formula = "=VLOOKUP(D2,A:B,2,FALSE)"   .value = .value  end with end sub

suns
質問者

お礼

すみませんSUMIFでできました!お手数おかけしました。Vlookupした後に、Sumifの式が作れたらすごく便利なんですけどね。そんなことは可能なのでしょうかね。

suns
質問者

補足

そうですね。質問が雑すぎました。すみませんでした。教えてもらう姿勢ではなかったです。反省します。 そして上記どうもありがとうございました。大変助かりました やりたい事その1を試したところ成功しました!他はちょっと式が初心者の私にはよくわからないので、再度ゆっくり挑戦していきます。 ただ補足があります。 VBAがでできるかわかりませんが、例えば、 下記の左側に111111とあり、それが下を見るとランダムにならんでいます。右側には違う数字(129.15など)が記載されていますが、そのすべての111111の右側の合計を新しい列に出す場合どういう式を作ればよいのでしょうか? 111111 129.15 111112 130.2 111113 131.25 111114 132.3 111115 133.35 111116 134.4 111111 135.45 111112 136.5 111113 137.55 111114 138.6 111115 139.65

すると、全ての回答が全文表示されます。

関連するQ&A