『日付ごとの売上集計』(masabou5) シート1                  シート2 日 付   売上金額  日 付   品名   売上金額 03/9/1              03/9/1 a 100 03/9/3 03/9/1 b 50 03/9/5 03/9/3 c 250 03/9/10 03/9/5 a 150 03/9/5 d 100 03/9/10 d 200 上の表のように、シート2には日付毎、品名毎の売上金額の明細があります。 そこで、売上のあった日付だけをを取り出して、その日の売上金額をシート1に合計で出したいのですが、いい方法がありましたら教えて下さい。 ---- VBAになりまっけどよろしおまっか? Sheet1,2のA1から右へそれぞれ項目を書き込んでおくんなはれ。 標準モジュールに下のコードをコピぺして、シート2にデータを書き込んで下さい。 なおシート1は「日付」「売上金額」だけにしとって下さい。 準備がでけたらマクロを実行してみておくんなはれ。 これ、関数じゃ骨折れますさかいな、試してみて良かったらどうぞ。    (おいぼれ 弥太郎) '------------------ Option Explicit '-------------------- Sub Uriage() Dim ws1 As Object, ws2 As Object Dim RowNo As Long, i As Long, totl As Long, n As Long Dim hiduke As String Dim get_totl As Long Application.ScreenUpdating = False Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") ws1.Range("a2:b3000").ClearContents RowNo = ws2.Range("a1").End(xlDown).Row n = 1 For i = 2 To RowNo n = i + 1 hiduke = ws2.Cells(i, 1) totl = totl + ws2.Cells(i, 3) Do While hiduke = ws2.Cells(n, 1) totl = totl + ws2.Cells(n, 3) n = n + 1 Loop ws1.Cells(get_row, 2) = totl ws1.Cells(get_row, 1) = hiduke get_totl = get_totl + totl totl = 0 i = n - 1 Next ws1.Cells(get_row, 2) = get_totl ws1.Cells(get_row, 1) = "合計" Application.ScreenUpdating = True End Sub '------------------- Function get_row() As Integer Dim i As Integer i = 1 Do While Worksheets("sheet1").Cells(i, 1) <> "" i = i + 1 Loop get_row = i End Function ----  あ、衝突。。ピボットテーブルをSheet1に作成・・・じゃだめなのでしょうか?(kuro) ---- kuroさん、こんちわ。 そのビボットテーブルとやらも、披露して差し上げたらどないでんねん? 私も、後学のため知りとうおますわ、えぇ。尤も理解でけしまへんのやろけど...。   (おいぼれ 弥太郎) ---- 弥太郎さん ども♪です。 ピボットテーブルとは、、、なんていえばいいのやら(汗;  自動集計してくれる機能とでも言えばいいのかしら。でわ、作成手順をば。 Sheet2のデータ上(どのセルでもいい)をアクティブセルにする> メニュー>データ>ピボットテーブルとピボットテーブルグラフレポート> 「次へ」をクリック>「次へ」をクリック>既存のワークシート> Sheet1の表を挿入したい場所(左上端セル)をクリック>「完了」をクリック 現れたピボットテーブルのツールバーにある項目名のうち、 「日付」を「ここに行のフィールドをドラッグします」とあるスペースにドラッグ&ドロップ、 「売上金額」を「ここにデータアイテムをドラッグします」とあるスペースにドラッグ&ドロップします。 上部に余計と思われる項目名表示が出てしまいますが、これは削除できませんので見せたくなければ 行ごと「表示しない」指定にすることで対応できます。(kuro) ---- ひょへ〜っ!! kuroさん、ピポットテーブルとか言うん初めて試してみたんやけど 大した働きしまんねんなぁ。いやいや、感心する事しきりですわ、えぇ。 ところで、Sheet2にデータを追加していった場合は関数みたいに即座に反応してくれ しまへんやろ? 再度集計したい時には現在のテーブルを一旦削除せなあきまへんのん? それやったら、テーブルの消し方を教えて〜な。アシスタントの無能冴子嬢が度々 現れて、いちゃもんつけてきよりまんねん。わし、あの娘キライ!     ピポットテーブル師匠殿 (おいぼれ弥太郎) ---- データの追加については、あらかじめ下方の空欄まで範囲指定してテーブルを作っておけば、 ピボットテーブル上で右クリックメニューにある「データの更新」で追加更新できます。 この場合「空欄」も表示されてしまうので「日付」項目右側の▼で現れる一覧の「空欄」 (およびその他いらない日付)のチェックをはずせば表示されなくなります。 もし日付順序が変ってしまったなら、日付欄のどこかをアクティブセルにして昇順ソートをかければ直ります。 テーブルの消し方ですが、、テーブル全部のセルを選択して「削除」するしかないのかな・・?(汗;(kuro) ---- 弥太郎さんの有り難いVBAにイチャモンを付ける(笑)無理矢理関数式です。 <Sheet1> 日付 の前に1列挿入して A B C D 2行目 03/9/1 3行目 03/9/3 4行目 03/9/5 5行目 03/9/10 A2 =IF(MAX(Sheet2!A$2:A$1000)=TODAY()+1,E2=""),"",MAX(A$1:A1)+1) E2 =IF(OR(B2="",D2="",B2=B3),"",IF(OR(B2<=B3,B3=""),B2,"")) で 下にコピー です。 しかりとは試していませんので駄目でしたら済みません。 ピボットテーブルが簡単で機能を使いこなしていますね。 実はオートフィルタ、ピボットテーブル の使い方を私は今一理解して無いのです。 どうも未だ、あの ▼ に馴染めないのですね。今度質問して詳しい方に教えて頂きます。    (jun53) ---- ウエッ?! kuroさん、削除でけまへんのんかいなあっ! えらいこっちゃ、このファイルにゃマクロがたっぷり詰まっとるし、シートにも大事な データでビッシリ埋まってまんのに...。kuroさんの甘い言葉に乗ってもてニッチもサ ッチもいかんようになってもたがな...。どないしょう(大汗;; っちゅうのはウソ。 こんな事も有ろうと思うて、新しことする時はいつも新しBookで試していますさかい ご心配なく。(^^) ご教授、おおきに。 junさん、こんちわ >今度質問して詳しい方に教えて頂きます ひょっとして、これ、この私の事? かなわんなぁ、早い事手ぇまわしてからに...。   I like ityamon table(おいぼれ 弥太郎) ---- <Sheet2>の式 若干修正しました。 シンプル 伊豆 ベスト A2 =IF(E2="","",MAX(A$1:A1)+1) E2 =IF(OR(B2="",D2="",B2=B3),"",IF(OR(B2