
エクセル2002使用です。
VBAの記述で、WorksheetFunction.VLookupを使って求めた値の入っているセルの列方向に一つ下の値を取得したいのですが・・・・
range("A1").Value =WorksheetFunction.VLookup( range("B1").Value, Range("A3:C10"), 3, 1)
例えば上記で得た値がC4セルにあるのであれば、C5セルの値を取得したいのです。
offset(0,1)プロパティーをどこにおけば良いのか良くわかりません。
どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
アイデアとしては面白いですが、基本的なことが違いますね。
Vlookup というのは、もともと、値だけを取り出して、それを扱っているので、そこから、Rangeオブジェクトの情報を取り出すことは出来ません。Rangeオブジェクトのまま使うなら、Index 関数を使いますが、あまり標準的ではありません。通常は、VBAのFind関数を使いますが、Vlookup関数のオプションとの整合性はありません。ですから、この場合は、Match関数を使って切り抜けます。
Columns(3) が、VLookup( range("B1").Value, Range("A3:C10"), 3, 1) の列の「3」にあたります。
'---------------------------------------
Sub TestSample1()
Dim rnum As Long
On Error Resume Next
rnum = WorksheetFunction.Match(Range("B1").Value, Range("A3:C10").Columns(3), 1)
On Error GoTo 0
If rnum <> 0 Then
Range("A3:C10").Columns(3).Cells(rnum).Offset(, 1).Select
rnum = 0 'このプロシージャ一回限りなら、ここは必要はない。
End If
End Sub
'---------------------------------------
この回答への補足
Wendy02様 いつも早速のご回答ありがとうございます。
お時間ございましたら追記お願いしまう。
値を取得するために、
Sub TestSample1()
Dim rnum As Long
On Error Resume Next
rnum = WorksheetFunction.Match(Range("B1").Value, Range("A3:C10").Columns(3), 1)
On Error GoTo 0
If rnum <> 0 Then
Range("A3:C10").Columns(3).Cells(rnum).Offset(, 1).Select
Range("A1").Value = Selection.Value ←値の取得
End If
End Sub
としたのですが、うまくいきません。。。
Range("A3:C10").Columns(3).Cells(rnum).Offset(, 1).Select
の使い方が良くわからないのですが、
お手数でなければよろしくお願いします。
match関数はばっちりできました。
No.4
- 回答日時:
こんばんは。
うまくいかなくてすみません。ちょっとヘンだなっと思って、最初のご質問を読み直してみました。
>上記で得た値がC4セルにあるのであれば、C5セルの値を取得したいのです。
>offset(0,1)プロパティー ←これが違いますね。(^^;
Range("A3:C10").Columns(3).Cells(rnum).Offset(, 1).Select
の部分を、
Range("A3:C10").Columns(3).Cells(rnum).Offset(1).Select
それで、OKが出来ましたら、
'---------------------------------------
Range("A1").Value = Range("A3:C10").Columns(3).Cells(rnum).Offset(1).Value
'-------------------------------------
と、つなげてしまったほうが、負担が少ないです。
この意味は、
("A3:C10")の範囲の(3)列目の(rnum)番目という場所の下(Offset(1))ということです。
ダメなときは、その部分に、
これを使ってチェックしてみてください。
MsgBox Range("A3:C10").Columns(3).Cells(rnum).Offset(1).Address(0,0)
("A3:C10")の範囲の(3)列目の(rnum)番目という場所の下(Offset(1))ということです。
こんな記述の仕方もあるのですね。
VBAはセルの参照とかが一番難しいです。
ありがとうございました。
No.3
- 回答日時:
Offsetメソッドは範囲ー>範囲を求めるメソッドです。
VLOOKUPは関数で、関数は、値を求めるものです。それも行数とかを
求めるのでなく、セルの中の値を求めます。
だから質問は根本的に誤解があります。
どうしても質問のような必要があったら
Sub test01()
x = WorksheetFunction.Match(Range("a3"), Range("h1:h5"), 0)
MsgBox x
End Sub
のように相対的な行数を求めて、すぐ下の行なら、+1して、Cells(x+1,”I”)のようにすればよい。
Matchは値はあたいでも、行数を返してくれるので、この場合には役立つのです。
imogasi さま早速のご回答ありがとうございます。
match関数の使い方よくわかりました。
無事解決いたしました
今後ともよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
値が入っているときだけ計算結...
-
Excel 0目標に対して数字があ...
-
検便についてです。 便は取れた...
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
VLOOKUP関数を使用時、検索する...
-
Excel 数値の前の「 ' 」を一括...
-
至急!尿検査前日にオナニーし...
-
2つの数値のうち、数値が小さい...
-
彼女のことが好きすぎて彼女の...
-
精子に血が・・・
-
EXCELで条件付き書式で空白セル...
-
ワードのページ番号をもっと下...
-
WORDで複数語句を検索するには
-
病院側から早く来てくださいと...
-
ある範囲のセルから任意の値を...
-
採血中の看護師さんの、自分の...
-
尿検査の前日は自慰控えたほう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報