[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでVLOOKUP』(g-g)
AシートのA1に今日の日付があります。BシートのB1:B31に売上げがあります。 C1:B31に前年売上げD1:D31に予算売上げがあります。 これをマクロでVLOOKUPで検索して本日の売上、前年売上、予算売上をブックを 開いた時にエクセルのメッセージボックスで本日の売上は・・、前年売上は・・、予算売上は・・とだすようにしたいのですが教えてもらえませんか?ホームボタンというのですか?グレーの四角いボタンを押して本日の売上は・・、前年売上は・・、予算売上は・・ でもかまいませんので教えてください。宜しくお願いします。
こんにちは
質問にそのまま答えると、
Private Sub Workbook_Open()
Dim k As Variant
Dim z As Variant
Dim t As Variant
With WorksheetFunction
k = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
2, 0)
z = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
3, 0)
t = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
4, 0)
End With
MsgBox "本日の売上: " & k & vbCrLf & _
"前年売上 : " & z & vbCrLf & _
"予算売上 : " & t
End Sub
こんな感じで。
ThisWorkbook モジュールにセットしてブックを開きなおすとメッセージが表示されます。
(ウッシ)
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
2, 0)
この部分の2, 0の意味を教えてもらえませんか?
Worksheets("B").Range("A1").CurrentRegion, _
のA1はA1より下に永遠に検索すると言う意味でしょうか?
(g-g)
こんにちは
2, 0 は普通に「Vlookup」のヘルプ見て貰えれば分かりますよ。
列番号と検索の型です。
Range("A1").CurrentRegion はセルA1から空白行、空白列の無いデータの有る範囲の事です。
Worksheets("B")のA列には検索対象の日付が入っていると仮定してます。
(ウッシ)
ヘルプではわからない部分を補足。 ワークシート上では論理値(TRUE、FALSE)の個所に数値がある場合、「0」をFALSE、「0以外」をTRUEと変換して使います。 (独覚)
Private Sub Workbook_Open()
Application.AskToUpdateLinks = False
MsgBox "リンク先ファイルよりデーター吸い上げに成功しました。", vbInformation
Range("A1:G1").Activate
Dim k As Variant
Dim z As Variant
Dim t As Variant
Dim g As Variant
With WorksheetFunction
k = .VLookup( _
Worksheets("メニュー(集計)").Range("C35"), _
Worksheets("予算表").Range("A4").CurrentRegion, _
4, 0)
z = .VLookup( _
Worksheets("メニュー(集計)").Range("C36"), _
Worksheets("予算表").Range("A4").CurrentRegion, _
10, 0)
t = .VLookup( _
Worksheets("メニュー(集計)").Range("C35"), _
Worksheets("予算表").Range("A4").CurrentRegion, _
3, 0)
g = .VLookup( _
Worksheets("メニュー(集計)").Range("C36"), _
Worksheets("予算表").Range("A4").CurrentRegion, _
11, 0)
End With
MsgBox "本日の予算売上: " & k & vbCrLf & _
"昨日までの予算比は : " & z & vbCrLf & _
"前年売上は : " & t & vbCrLf & _
"昨日までの前年比は : " & g
Sheets("メニュー(集計)").Range("h33") = Format(ThisWorkbook _
.BuiltinDocumentProperties("Last Save Time").Value, "m月d日 h:mm")
End Sub
色々と回答ありがとうございます。こんな風にしました。ですがエラーになりますなぜでしょうか?
(g-g)
こんにちは どこでエラーになりますか? エラーメッセージの内容は? 検索値が違うのは何故ですか?
Worksheets("予算表")を開いて、
Sub test()
Range("A4").CurrentRegion.Select
End Sub
とすると、意図する範囲が選択されますか?
(ウッシ)
こんにちは
Worksheets("メニュー(集計)").Range("C35")
Worksheets("メニュー(集計)").Range("C36")
で違ってますよね?
「実行時エラー1004 WorksheetFunctinoクラスのViookuoプロパティを取得できません」 って事は検索範囲に当日の日付が無いって事です。
Private Sub Workbook_Open()
Dim k As Variant
Dim z As Variant
Dim t As Variant
On Error Resume Next
With WorksheetFunction
k = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
2, 0)
z = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
3, 0)
t = .VLookup( _
Worksheets("A").Range("A1"), _
Worksheets("B").Range("A1").CurrentRegion, _
4, 0)
End With
On Error GoTo 0
MsgBox "本日の売上: " & k & vbCrLf & _
"前年売上 : " & z & vbCrLf & _
"予算売上 : " & t
End Sub
のようにすればエラーは出ません。
検索値と検索範囲が年月日「yyyy/mm/dd」で入力されていて、当日が検索範囲にある事を確認して下さい。
(ウッシ)
2, 0)
この部分のRange("A1")がA4から2010/9/1ですのでA4にしましたがこれだとエラーになります。
どうしてでしょうか?(g-g)
こんにちは
先に書いた、
Worksheets("予算表")を開いて、
Sub test()
Range("A4").CurrentRegion.Select
End Sub
はやってみましたか?
意図した検索範囲でない場合はコードを書き換える必要が有ります。
(ウッシ)
Dim k As Variant
Dim z As Variant
Dim t As Variant
Dim g As Variant
On Error Resume Next
With WorksheetFunction
k = .VLookup( _
Worksheets("メニュー(集計)").Range("c36"), _
Worksheets("予算表").Range("A1").CurrentRegion, _
4, 0)
z = .VLookup( _
Worksheets("メニュー(集計)").Range("c35"), _
Worksheets("予算表").Range("A1").CurrentRegion, _
10, 0)
t = .VLookup( _
Worksheets("メニュー(集計)").Range("c36"), _
Worksheets("予算表").Range("A1").CurrentRegion, _
3, 0)
g = .VLookup( _
Worksheets("メニュー(集計)").Range("c35"), _
Worksheets("予算表").Range("A1").CurrentRegion, _
11, 0)
End With
On Error GoTo 0
MsgBox "本日の売上予算は: " & k & vbCrLf & _
"昨日現在の売上予算比は : " & z & vbCrLf & _
"前年売上は : " & t & vbCrLf & _
"昨日までの前年比は : " & g
End Sub
ウッシさん見直したら上のコードで出来たのですが前年比が80%と出したいのですが0.8と出てしまいます。これを80%と出るように修正してもらえませんか?お願いします
(g-g)
Format関数を使ってはどうでしょうか? "昨日までの前年比は : " & Format(g,"0%")
(独覚)
独覚さん回答ありがとうございます。"昨日現在の売上予算比は : " & z & vbCrLf & _ も指導してもらえませんか?応用法がいまいちわからなく・・すみません宜しくお願いします。(g-g)
g→Format(g,"0%")なので "昨日現在の売上予算比は : " & Format(z,"0%") & vbCrLf & _ としてみてください。 (独覚)
NOW()は日付だけではなく時間も含んでいます。
「2010/9/27」と入力した場合、時間まで表示させると「2010/9/27 0:00:00」となります。 対して「NOW()」の場合「2010/9/27 15:52:12」等となるため一致しません。 =TODAY() で行ってみてください。 (独覚)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.