[[20100927083734]] 『マクロでVLOOKUP』(g-g) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで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 モジュールにセットしてブックを開きなおすとメッセージが表示されます。
(ウッシ)

k = .VLookup( _
                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
とすると、意図する範囲が選択されますか?
(ウッシ)

ブックをひらいた時に実行時エラー1004
WorksheetFunctinoクラスのViookuoプロパティを取得できませんが出ます。
検索値が違うのは何故ですか?とは?(g-g)


 こんにちは
 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」で入力されていて、当日が検索範囲にある事を確認して下さい。
(ウッシ)

確かにウッシさんの書いたコードのまま新規ブックで試したらできました。
が実際にはWorksheets("B").Range("A1").CurrentRegion, _
                2, 0)
この部分のRange("A1")がA4から2010/9/1ですのでA4にしましたがこれだとエラーになります。
どうしてでしょうか?(g-g)

 こんにちは
 先に書いた、
 Worksheets("予算表")を開いて、
 Sub test()
    Range("A4").CurrentRegion.Select
End Sub
はやってみましたか?
意図した検索範囲でない場合はコードを書き換える必要が有ります。
(ウッシ)

Private Sub Workbook_Open()
    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 & _
 としてみてください。
 (独覚)

独覚さんウッシさん出来ました。今回は大変お世話になりました。ありがとうございました。(g-g)

問題がおこりましたので質問したいのですが・・・今日の年月日を2010/9/27と入力だと検索しますが
=NOW()を使い年月日を出すと検索できませんでした。どうしたら回避できますか?宜しくお願いします。
(g-g)

 NOW()は日付だけではなく時間も含んでいます。

 「2010/9/27」と入力した場合、時間まで表示させると「2010/9/27 0:00:00」となります。
 対して「NOW()」の場合「2010/9/27 15:52:12」等となるため一致しません。
 =TODAY()
 で行ってみてください。
 (独覚)

独覚さんまた面倒見てもらいましてありがとうございました。(g-g)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.