
No.4ベストアンサー
- 回答日時:
まぁ,ヒトによって趣味もありますが,自分なら
dim lastRow as long
lastrow = range("A65536").end(xlup).row
range("E1") = application.vlookup(range("D1").value, range("A1:C" & lastrow), 2, false)
ぐらいにします。
どこをどう調べたら「一番下」を確定できるのか,実際のデータシートを見ながらマクロを書きます。
#「変数」にせずにrange("A:C")を検索対象範囲にして計算させてしまうのも,たしかに一つの合理的な解決策と思います。
ただVLOOKUP関数のFALSEの計算は「重たい」のが常ですので,可能なら「A1:C4」のように範囲を指定して計算させた方がモアベターと一般に考えられています。
マクロを使うなら「範囲を調べて限定して計算させる」のも,上述したようにその旨命令を書き足すだけのことですから。
ご回答ありがとうございます。
lastrow=Cells.SpecialCells(xlLastCell).Rowにして
動きました。
この記述を参考に利用させて頂きます。
No.3
- 回答日時:
>VLOOKUPの範囲を変数で取得したい
⇒ワークシート関数ならば、Range("A:C")で十分ではないでしょうか
ところで、このVLOOKUPコードの場合、見つからないとマクロが中断し、以降の処理が
できません。
対応としては、次の様にコードを変更すれば、エラー(#N/A)が戻されるので以下のような
方法があります。
resurt = Application.VLookup(Range("D1"), Range("A:C"), 2, False)
If IsError(result) Then
エラー処理
else
Range("E1") = result
因みにこの程度の抽出なら自作してみるのは如何でしょうか。
一例です。
For i = 1 To cells(Rows.Count,"A").End(Xlup).Row
If Cells(i,"A") = Cells(1,"D") Then
Cells(1,"E") = Cells(i,"A").Offset(0,1).Value
Exit For
Endif
Next
ご回答ありがとうございます。
vlookupでわざとエラーをさせたところ、途中で中断しました。
エラーした際の処理も参考にさせて頂きました。
No.2
- 回答日時:
"A1:C4"
は、文字列なので。String型の文字列で扱えば良いです。例えば
Dim strRANGE As String
strRANGE = "A1:C4"
Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range(strRANGE), 2, False)
なら、同じ意味の式になりますね。
strRANGE = "C4"
Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range("A1:" & strRANGE), 2, False)
とすれば、"C4"だけを変数に出来ます。
ご回答ありがとうございます。
C4が変数になりますが、データが増えるのでC5 C6・・・と変数も増える事を
質問に明確に書かなかったのでお詫びします。
ありがとうございました。
No.1
- 回答日時:
>検索範囲の("A1:C4")の『C4』を変数に変更はできますでしょうか。
できます。
dim Hanni as string
とでも定義して、どこかで
Hanni = "A1:C4"
と代入しておいて
Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range(Hanni), 2, False)
にすれば良いです。
>(データは増える予定ですなので)
データが増える為に行数が不定で、かつ、データが入っている下に別の表が無いのであれば、変数にする必要は無く、単に
Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range("A:C"), 2, False)
として、行を指定しなければ良いだけですが、これでは駄目なのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VLookupで参照する範囲を変数で渡したい
Access(アクセス)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
VLOOKUP関数:別シートにある参照範囲が変動する場合
Access(アクセス)
-
-
4
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
5
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
6
VBAで文字列を数値に変換したい
Excel(エクセル)
-
7
vlookup関数の引数を変数で指定することはできますか?
Excel(エクセル)
-
8
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
9
エクセルVBA Workbook変数に変数を使ったファイル名を格納したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
時間帯の重複を除いた集計について
-
Excelで日付変更ごとに、自動的...
-
Excelファイルの容量が異常に大...
-
フォームのデータシートラベル...
-
複数の条件で抽出して別シート...
-
VBAで CTRL+HOMEの位置へ移動...
-
excel vlookup 新担当者への実...
-
ユーザーフォームで別シートを...
-
【マクロ】同じフォルダ内にあ...
-
エクセルで入力シートとデータ...
-
EXCEL の表を一行ずつシートに...
-
EXCELで2つのファイルから重複...
-
エクセル マクロ "特定の日付...
-
【Excel】【VBA】重複しないリ...
-
エクセルで名簿を50音で切り分ける
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
Excelでシートの違うデータでグ...
-
Excelで日付変更ごとに、自動的...
-
他のシートの一番下の行データ...
-
VBAで CTRL+HOMEの位置へ移動...
-
エクセル 縦に長い表の印刷時...
-
EXCELで2つのファイルから重複...
-
トランジスタの選び方
-
エクセル マクロ "特定の日付...
-
ユーザーフォームで別シートを...
-
Excelマクロ 差分抽出の方法が...
-
Excel 売上管理シートに入力し...
-
【マクロ】同じフォルダ内にあ...
-
オートフィルタで抽出したデー...
-
エクセルで名簿を50音で切り分ける
-
【Excel】マクロでグラフ系列に...
-
時間帯の重複を除いた集計について
おすすめ情報