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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Visual Basic(VBA) ExcelのVBAで教えてください。 Vlookupで、X X.value = applicatio 1 2022/12/26 13:40
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) エクセルのvlookupについて質問です 3 2023/01/05 15:15
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
vlookup関数の引数を変数で指定することはできますか?
Excel(エクセル)
-
VLookupで参照する範囲を変数で渡したい
Access(アクセス)
-
-
4
VBA WorksheetFunction.VLookupとoffsetプロパティー
Excel(エクセル)
-
5
VBA R1C1形式で変数の入力について
Visual Basic(VBA)
-
6
UserForm1.Showでエラーになります。
工学
-
7
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
VLOOKUP関数:別シートにある参照範囲が変動する場合
Access(アクセス)
-
12
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
13
【Excel VBA】データ貼り付け先のシート名選択
Excel(エクセル)
-
14
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
15
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
16
VBA 見つからなかった時の処理
Excel(エクセル)
-
17
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
18
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
19
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
20
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
Excelで日付変更ごとに、自動的...
-
エクセルで名簿を50音で切り分ける
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
他のシートの一番下の行データ...
-
VBAで CTRL+HOMEの位置へ移動...
-
エクセル VBA VLOOKUP
-
エクセル マクロ "特定の日付...
-
【エクセルマクロ】複数シート...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
Excelファイルの容量が異常に大...
-
エクセルで複数行のデータを1列...
-
エクセルで一覧表から担当別シ...
-
エクセルのファイルが8MBも!!
-
エクセルで行の自動非表示の方法は
-
ピボットテーブルのデータソー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
excelの不要な行の削除ができな...
-
VBAで CTRL+HOMEの位置へ移動...
-
(VBAにて)日付でデータを抽出す...
-
EXCELで2つのファイルから重複...
-
他のシートの一番下の行データ...
-
エクセルのカメラ機能について
-
トランジスタの選び方
-
別々のシートの表をピボットテ...
-
エクセル 縦に長い表の印刷時...
-
EXCEL 複数行のデータを1行にま...
-
【エクセル」 特定のセルで条件...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
エクセル VBA VLOOKUP
-
EXCEL の表を一行ずつシートに...
おすすめ情報