>式を作りたい
どーしたらいいのか教わりたいのでしたら、まず「自分は何をしたいのか」を考えながら聞くようにしてください。
準備:
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
お礼
すみませんSUMIFでできました!お手数おかけしました。Vlookupした後に、Sumifの式が作れたらすごく便利なんですけどね。そんなことは可能なのでしょうかね。
補足
そうですね。質問が雑すぎました。すみませんでした。教えてもらう姿勢ではなかったです。反省します。 そして上記どうもありがとうございました。大変助かりました やりたい事その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