• ベストアンサー

VBAとメッセージ関数

こんばんは。 VBA初心者で、勉強中です。 今、エクセル2003で以下画像のようなシートを作成しました。 B列に商品の納品日、C列に売上日があります。 そこでVBAで、売上日の列の日付を検索し、 直近の売上日(一番古いものから)から一番最後の売上日(一番新しい日付)までを 以下のようにmsg関数で画面表示したいのです。 売上日:1/2~4/4 データ検索はA列の店舗名が空欄になるところまでとします。 今は手作業でやっているので大変です。 よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

MsgBox "売上日 : " & Format(WorksheetFunction.Min(Range("C:C")), "m/d") & "~" & Format(WorksheetFunction.Max(Range("C:C")), "m/d") でいかがですか セルに表示するのでしたら表示したいセルに ="売上日 : "&TEXT(MIN(C:C),"m/d")&"~"&TEXT(MAX(C:C),"m/d") としてください。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問内容が良く判らない。 画像は、質問のことを実現した結果なのか? >下画像のようなシートを作成しました、なら作られた素データなのか。 素データだとすると、同じ日付の行はないのか。 ー また初心者だからMsgboxを思いついたのかもしれないが、多項目(=シートでは複数多列)のデータを現すのには適してない。 新しいシートなどに表示するのが普通ではないか。 ーー 何がしたいのか、文章で明確になっていない。 例示データの作り方が割る以下、少なすぎるか。 店舗名のばらつき状態を見たいのか、納品日・売上日のばらつきを見たいのか。 普通繁盛した店なら同一店舗・同一納品日などのデータは多数あるはず。 何を知りたいのか。納品作業の段取りに使うなら、すべての日付でなく、指定期間の表がほしいだろうし、納品の済んだ前の過去のデータは出す必要がないだろう。 質問者の頭にあり、質問者が考えて、見ているシートのことで、質問に表現できてない大切なことはないのか。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

参考サイト。 文字列の存在を調査 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv258.html#4 VBAでやるからには、 ここの存在チェックを応用し、 最小値と最大値を変数で確保する、セルを動かすなど 後から使えるような機能もマスターすると良いです。 最小値、最大値、を取得する関数を使う。 並べ替えして1番上、1番下を求める。 VBA勉強としては物足りない、でしょう。 手段はいろいろありますから、理解できたもので使ってみる。 次に他の手段も試してみる。 結果が出たら復習してみる。 VBA初心者ですので、 ここのVBAのコラムを見てから取りかかると良いです。 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html ほか http://www.voicechatjapan.com/excelvba/VBArei2.htm

関連するQ&A

  • エクセル VBAで関数

    こんばんわ。いつもお世話になっております。 エクセルでデータを加工しているのですが、関数で加工するととても遅くなってしまうので なんとかVBAで作業できないかと模索中です。 Sheet1の、A列=取引先 B列=支店名 となっており、それが3,000行ほどあります。 Sheet2も、A列=取引先 B列=支店名 となっており、 Sheet1のC列に、Sheet1のA列のB列という支店が、Sheet2にあるか確認したいのです。 現在は、Sheet1のC列に、SUMPRODUCT関数でカウントさせているのですが、大変重いです。 ほかのSheetで、VBAを使って関数のような働きをさせている部分があります(前任者作成) そのように、なんとかVBAを使用したいのですが、なかなかうまく出来ません・・・。 どうか、お力を貸してください!! うまく説明できなくて、わかりづらかったらごめんなさい。 よろしくお願いいたします。

  • エクセルの関数

    エクセルの関数についての質問です。 シート1(売上)日付・金額 シート2(月報)日付・金額 シート1(売上)から日付と金額を拾い出して、シート2(月報)に集計したいのですが、シート1(売上)では日付が同じときもあり、シート2(月報)では金額も合計しなくてはいけないのです。もし、ご存知の方がいらっしゃいましたら教えてください。 こんな感じです。 シート1(売上) 日付   金額 2月2日  20000 2月4日  25000 2月5日  20000 2月4日  18000 2月7日  20000 2月10日  23000  ・    ・  ・    ・  ・    ・ シート2(月報) 日付   金額 2月1日  ここに関数 2月2日  ここに関数 2月3日  ここに関数 2月4日  ここに関数 2月5日  ここに関数 2月6日  ここに関数 2月7日  ここに関数  ・     ・  ・     ・  ・     ・ 伝わりましたでしょうか? よろしくお願い致します。

  • EXCEL関数 一覧から週計データを導き出したい

    Sheet1に1売上商品1行のデータが年間通しで並んでいます。 Sheet2に1日1行の週計データを表示したのですが。 Sheet2の [B2]以下の列に入れる関数 Sheet2の [C2]以下の列に入れる関数 Sheet2の [D2]以下の列に入れる関数 Sheet2の [E2]以下の列に入れる関数 を教えてください。 ================ Sheet1 売上入力表 Sheet2 日別売上集計表 画像添付しています

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • VLOOKUP関数をVBAで使用したい

    VLOOKUP関数をVBAで使用したい 「検索」シートにID番号を入力すると、「データ」シートのA列に入っているデータから入力されたID番号を検索し、該当するID番号のある行の横並びに入っている別の列データ(B~AG列)を取り出し、それぞれを「検索」シートの様々なセルに表示するVBAを作っていますが、VBAでVLOOKUP関数を用いる方法がよく分からず苦戦しています。 「データ」シートの1、2行目は見出しで、検索されるデータが入っているのは3行目からです。また、「データ」シートには不定期に新しいデータが追加されていきます。 「検索」シートに検索結果を表示する際も、以下のように規則性のないセル配置なので少しややこしいです。 「検索」シートのセル=「データ」シートの列 B6=B列  B8=C列  B10=D列  B11=E列  B12=F列 B13=G列  B14=H列  B16=I列  D16=J列  F16=K列 B17=L列  D17=M列  F17=N列  B20=O列  C20=P列 E20=Q列  B21=R列  C21=S列  E21=T列  B22=U列 C22=V列  E22=W列  B23=X列  C23=Y列  E23=Z列 B24=AA列  C24=AB列  E24=AC列  B26=AD列 E26=AE列  B29=AF列  B31=AG列 このような動作をVBAでさせることは可能でしょうか? また、検索して該当するID番号がなかった際も、VBAだとそこで動作が止まってしまうので、「該当するID番号がありません」といったエラー判定が出るようにすることはできますか? 教えてください。よろしくお願いします。

  • VBAで複数条件検索どうすればよいですか?

    【Sheet1】 発注日   品番    ロットNo      納品日   A     B      C          D 1 3/11  553  111-111-1111   3/17 2 3/11  123  222-222-2222 3 3/11  223  333-333-3333 4 3/12  123  444-444-4444   3/17 5 3/12  553  555-555-5555 【Sheet2】  納品日  品番   ロットNo    A    B     C 1  3/17  553  111-111-1111 2  3/17  123  444-444-4444 3  3/17  223  666-666-6666 エクセル2010・VBAで、【Sheet2】の品番とロットNoの条件に合う行を【Sheet1】より探し、【Sheet1】D列に納品日を入力し、その行のロットNoを明るい緑で塗りつぶす。 【Sheet2】の条件が【Sheet1】にないなら【Sheet2】の行のロットNoを、赤で塗りつぶす。 【Sheet1】は発注リスト、【Sheet2】は納品リストになります。 納品日は検索した日の日付になります。 Findを使い試行錯誤しましたが、思うように動かず、スキル不足で困っています。どなたか、ご教授願います。宜しくお願い致します。

  • エクセル 関数を自動的に入力するVBAで困っています

    VBA初心者です。 エクセルの入力シートで行ごとにデータを下記のように入力しています。      A      B       C 1   日付    品番     商品 2   10/25    10     りんご 3   10/26    20     みかん 4 5 6 2行目から順にデータを入力すると自動的にC列にVBAで VLOOKUP関数をセットして商品を検索したいのですが 上手くできませんでした。 教えてください。よろしくお願いします。

  • VLOOKUP関数をVBAで書くには

    EXCEL VBAの初心者です VLOOKUP関数をVBAで書きたいのですが、よくわかりません すいませんがどなたかご教授、願えないでしょうか? sheet1     sheet2 A    B  A    B      名称 CD    名称 CD 滋賀県 25     滋賀県  25 京都府 26     大阪府 27 大阪府 27 兵庫県 28     兵庫県 28 sheet2のA列をキーにsheet1のA列と照合して sheet2のB列にsheet1で一致した行のB列をコピーする VLOOKUP関数を使うと、sheet2のB2は =IF($A2="","",VLOOKUP($A2,Sheet1!$A$2:$B$5,2,0)) としたら、25を得ることができました VBAでする場合、どのように書けばいいのでしょうか? よろしくお願いします

  • VBAの関数について

    VBA初心者です。 VLOOKUP関数の使い方がわかりません。 具体的に書かせてもらうと VBAの中にVLOOKUP関数を使いたいです 試験1ファイルのシート"sheet1"にある 検索値を使い 試験2ファイルの指定した検索範囲を 試験1ファイルのシート"sheet1"の指定した位置に数値を挿入することです。 例えばですが(この使い方も間違ってるかもしれません)コードを書いてみると 試験1の検索値はA5セルとします 試験2の検索範囲はB1~C20とします 検索範囲から取得した数値の位置はD5とします VLOOKUPに関してですが 検索値は変数を使い 検索値範囲も変数を使い 列番号はC列がいいので3で 検索方法はFALSEでお願いします sub test() dim a as range dim b as workbooks dim c as range set a = range("B1~C20") set b = workbooks("sheet1") set c = range("A5") workbooks("試験1").worksheets("sheet1").range("D5").value=workbooks("試験2").activesheet."=VLOOKUP(ここがわかりません)".value end sub そもそも変数やsetの使い方が間違ってるかもしれませんm(__)m コードを書いて貰えるととても助かります。 回答お願いします。

  •  エクセルについて質問です。

     エクセルについて質問です。 『同じ日付に同じ名前があった場合、その名前の人の売上合計から10%引きたい』    初めて質問させて頂きます。関数をあまり知らないので、いろいろ検索したのですが、 どうしてもわかりません。教えて頂きたく存じます。宜しくお願い致します。 A列~Z列まで日付や売上や内容などが書かれた表があります。 同じ人が同じ日に同じものを売り上げても、一行にまとめず、複数行に書きます。   そこで、A列に入った日付を参照し、同じ日付に同じ名前(E列)があった場合、 K列かJ列(人によって違うのです)の売上を足して、その10%をU列に表示したい のですが、そのようなことは可能でしょうか? A列      E列   J列   K列    U列 ―――――――――――――――――――――――――――――――――――――――― 2010/01/18  田中  10000   空欄  ―――――――――――――――――――――――――――――――――――――――― 2010/01/18  佐藤   空欄    10000 ―――――――――――――――――――――――――――――――――――――――― 2010/01/18  田中   10000   空欄   2000←これを出したい。 ―――――――――――――――――――――――――――――――――――――――― 2010/01/18  佐藤  空欄    10000    2000←これを出したい。 ―――――――――――――――――――――――――――――――――――――――― 2010/01/18  斉藤  20000  空欄   空欄←ひとつしか売上が無いので10%は出さなくて良い。 ――――――――――――――――――――――――――――――――――――――――  わかりづらくても申し訳ありません。 どなたかお力を貸してください。          

専門家に質問してみよう