[[20030816133107]] 『売上集計表について教えてください』(うえさん) ページの最後に飛ぶ

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

 

『売上集計表について教えてください』(うえさん)

エクセル勉強中の者です
売上集計表を作っていますが、月毎の集計を出したいのですが解かりません

    A   B        C        D        E       F                                    
1  月   日      商品X    商品Y     商品Z    日計
2   8   3       2,500    1,000            3,500
3      15                2,000    3,000   5,000
4      29       1,500    1,000    1,500   5,000
5               4,000    4,000    4,500  12,500 ←月計を自動で行を追加して計算したい
6   9   1                3,000    1,000   4,000                                   

日計には関数は入っております
例えば8月から9月に入力が変わると行が挿入されて商品毎の計が出るように出来るのでしょうか?(さらにその商品計は赤文字にしたいです)
マクロやVBAも勉強していますので、簡単な方法があればそれで良いのですが、難しい処理でも勉強しますので教えてくださいm(_ _)m
よろしくお願いします


 こんにちわ。
 『それくらい知っているぞ〜』っと言う場合はごめんなさい。
 データの集計では、駄目ですか?思いが違いますか?
 赤文字には・・・集計では多分・・・出来ないですが〜 ^ ^;;
 (さくら)
 訂正。すみません。これは、月では出来ませんね。ピボットですね。月で出したい時は、これは、無しです。
 ごめんなさ〜い。お騒がせでした〜
 (さくら)

 さくらさんの紹介された「データメニューの集計」で月毎の集計と集計行を赤字に設定できます。
@A2に =month(B2)と入力します。右クリックメニューの「セルの書式設定・表示計式・ユーザ定義」で 0月 とします。
AB2に 8/3 と入力し、「セルの書式設定・表示計式・ユーザ定義」で d日 とします。
BA2:F5を選択して、書式メニューの条件付き書式の設定で「数式が」「=$B2=""」とし、
[書式]ボタンを押してフォント色を「赤」に設定します。(注)式はB列固定の$B2にすれば、指定行に反映します。
Cデータ内にカーソルを置いた状態で、データメニューの集計を選択します。
1)グループの基準 月
2)集計の方法   合計
3)集計するフィールド 商品X、商品Y、商品Z、日計にチェックをします。
4)Okで下の表のように、月別集計と集計行が赤字になります。
D行列番号の左側の[2]をクリックすれば月別集計の表示になります。
E集計表の解除は「集計の設定」で[すべて削除]を選択します。
、月	日	商品X	商品Y	商品Z	日計
8月	3日	2,500	1,000		3,500
8月	15日		2,000	3,000	5,000
8月	25日	1,500	1,000	1,500	5,000
8月 計		4,000	4,000	4,500	13,500
9月	1日		3,000	1,000	4,000
9月 計		0	3,000	1,000	4,000
総計		4000	7,000	5,500	17,500
 (シニア)

 こんにちわ
「データメニューの集計」にてこずった経験があり
今なお未完成のままで投げ出しているものがあるので
早速トライをしてみました。
単に集計を使えばなんでも集計できるものだと思っていた事に
エクセルは使いこなすものなんだ・・・って
(今更ってかんじですけれどね・・・)
列の固定、$の使い方を勉強させていただきまた。
もっとユーザー定義を勉強し
もう少しエクセルの機能を操れるように頑張ります。
初心者でもわかりやすい手招きのおかげで
習得できました。
シニアさんありがとうございました。 (〃^▽^〃姫)

さくらさん、シニアさん、有難う御座いましたm(_ _)m
本当に解かり易い説明で出来る事が出来ました                      
行が挿入されるとその後追加データが出来ないのかと思ってました              
マクロで集計ボタンとリセットボタンも作って誰でも簡単に出来る様にする事が出来ました  
今後もご教授お願いいたします

姫さん、一緒に頑張りましょう〜(* ^ー゜)ノ


 あららら!タッチの差で間に合いまへんでしなぁ。う〜ん、残念至極。
 この宝モンどないしょう...。顔の大きくない姫さん使わへん?
      タッチの差でコケてもたおいぼれ弥太郎 

 御免なさい、うえさんちょっとスレお借りして
しつっこく質問していいですか?
うえさんがマクロでセットボタンとリセットボタン・・・・・って言われ
私も無い知恵絞って何とか作ってみて、なんと出来ました!
それでリセットボタンをオンしてもとの帳票にもどし
その後連続して毎日の入力が可能なように表を下にドラックし
空欄の表を作成したところ
B列に日にちをを入れないとA列に1月と赤文字で入るのですが
それはやはり=$B2=""・・・・・の条件式書式により
そうなったのでしょうか?
本当に初歩的な質問ですみません。   
(〃^▽^〃姫)

 「B列に日にちを入れないとA列に1月と赤文字で入るのですが・・・?」
B列の日付の表示を日にちのみに設定し、A列にB列の月を=month(B2)で表示しました。
従って、B列の日付が未入力の場合にA列に式入力されていれば1月と表示され赤字になります。
また、A列に式をコピーすれば、集計範囲が日付未入力範囲も自動認識されて、1月集計項目が出来てしまいます。
初歩的な質問でなく、極意を突いた質問です。「セルのフィルハンドルダブルクリック操作の秘密」
 この対処方法として、B列に日付を入れてデータ入力が終了した時点で、
A列の月表示セルのフィルハンドル(セルの右下隅でマウスポインターが+になる所)をダブルクリックすれば、
隣接セルに連続データがあれば最終行まで自動コピーされる機能があります。
実験的に体験するために、A2を残してA3以下を選択しDelキーで削除し、A2のフィルハンドルをダブルクリックして下さい。
B列の日付入力済みまでコピーされましたか?この方法を使えば、5000行でも一瞬に自動コピーできます。
この操作をすると、事後B列に日付入力すると自動的にA列に上の式がコピーされるようになります。
これで、マクロセットをしても、1月赤字の問題は解決します。
条件付き書式もデータ入力範囲が拡がれば、書式コピーの必要性が生じます。
この場合もA2:F2を選択して、フィルハンドルを右ボタンでドラッグして、メニューの「書式のコピー」設定します。
 (シニア)

 >マクロやVBAも勉強していますので
 拙いマクロでッけど、その代わり万全を期して、つまりあらゆるケースを想定して作っ
 てあります。初心者の(超が抜けとるデ)マクロは何十編も廻して疎漏のないことを確
 認してますさかい信頼度は高いはずです。(ホンマカイナ)
  1つだけ条件があります。F欄の関数は=IF(SUM(C2:E2)=0,"",SUM(CE:E2))といった
 案配にC〜Eに入力がなければ空のセルを表示する関数でお願いします。

 ' ---------- ---------- ---------- ----------
 Dim n As Long
 ' ---------- ---------- ---------- ----------
 Sub 集計作業()
     Dim i, Cnt As Integer
     x = 1
     y = 6
     n = 2
     Syukei_a = Rowno(x, y)
     Cnt = Application.WorksheetFunction.Count _
            (Range(Cells(2, 1), Cells(Syukei_a, 1)))
    For i = 1 To Cnt
 igawa:
        Syukei_b = get_row(Syukei_a)
        If Syukei_a = Syukei_b - 1 Then
            rtn = MsgBox(Cells(n, 1) & "月分を締め切りますか?" _
                            , vbYesNo)
            If rtn = vbYes Then
                Syukei_b = Syukei_b
                Matme (Syukei_b)
                GoTo hosino
            Else
                Exit For
            End If
        End If
        If Cells(Syukei_b - 1, 3).Font.ColorIndex = 3 Then
            n = Syukei_b
            i = i + 1
            GoTo igawa
        End If
        Matme (Syukei_b)
        n = Syukei_b + 1
        Syukei_a = Syukei_a + 1
        If Syukei_a < i Then Exit For
    Next i
 hosino:
    Cells(Syukei_a + 1, 2).Select
    MsgBox "集計終わりました"
 End Sub
 ' ---------- ---------- ---------- ----------
 Public Function Rowno(ByVal x As Long, ByVal y As Integer) As Long
    Do
        x = x + 1
    Loop While Cells(x, y) <> ""
    Rowno = x - 1
 End Function
 ' ---------- ---------- ---------- ----------
 Public Function get_row(ByVal Syukei_a As Long) As Long
    celdata = Cells(n, 1)
    For i = n To Syukei_a
 hosino:
        If Cells(i, 1) = "" Or Cells(i, 1) = celdata Then GoTo imaoka
        If Application.WorksheetFunction.IsText(Cells(i, 1)) Then
            i = i + 1
            GoTo hosino
        End If
        If Cells(i, 1) <> Cells(n, 1) Then Exit For
 imaoka:
    Next i
    get_row = i
 End Function
 ' ---------- ---------- ---------- ----------
 Sub Matme(Syukei_b)
     reslt = "c" & n & ":c" & Syukei_b - 1
    Cells(Syukei_b, 1).EntireRow.Insert
    Cells(Syukei_b, 3) = "=sum(" & reslt & ")"
    Cells(Syukei_b, 3).Copy Destination:=Range(Cells(Syukei_b, 4), _
             Cells(Syukei_b, 6))
    Cells(Syukei_b, 1) = Cells(n, 1) & "月計"
    Range(Cells(Syukei_b, 3), Cells(Syukei_b, 5)).Select
    Selection.Font.ColorIndex = 3

 End Sub
 ' ---------- ---------- ---------- ----------
 Sub リセット()
    x = 1
    y = 6
    Syukei_a = Rowno(x, y)
    If Application.WorksheetFunction.IsText(Cells(Syukei_a, 1)) Then
        rtn = MsgBox(Cells(Syukei_a, 1) & "をリセットしますか?", vbYesNo)
        If rtn = vbYes Then
            Cells(Syukei_a, 1).EntireRow.Delete shift:=xlUp
            Cells(Syukei_a, 2).Select
            Exit Sub
        End If
    End If
    Cells(Syukei_a + 1, 2).Select
 End Sub
     (おいぼれ弥太郎)

 どなたか知りまへんけどイタズラ書きしてもろておおきにおおきに。
 せやけどちょっとのイタズラでずいぶん見易くなったっちゅうところがシャクやおまへ
 んか、ホンマ腹立つ。
 コレ覚えとこ。
     (おいぼれ弥太郎)

 再度お邪魔します。
 さっきといっても弥太郎さんがレスされた時間とほぼ同時刻位に
 レスしたような感じ(これを以心伝心←以心電信かな?)だったので
 爆破したのか・・・なくなっちゃってました(;へ;)
 再々いいですか?

 シニアさんの手ほどきどおり
 セルのフィルハンドルダブルクリック操作の秘密を施した所
 ちゃんと魔法がかかったように出来ました。
 どうしようか迷ったけれど聞いてみて
 さすがエクセルの学校の充実感を感じました。
 ありがとうございました。

 また痒い所に手が届く・・・
 という感じで。今朝一番弥太郎さんからの回答に
 思いがけないプレゼントを頂いた感じがしました。
 私は単にF列にF2=C2+D2+E2と数式をいれドラックしていたので
 A〜E列が未記入のときには赤く0が表示されてしまっていました。
 これもまたこのまま放置しておこうかどうしようか
 迷っていたところの指摘に探究こそ向上かなって。
 早速修正してみました。

 うえさんへのプレゼントは
 エクセル保育園児の私にはうっとりと眺めるばかりですが
 理解できたあかつきには(頑張ります!)
 宜しくお願いします。
 でも恥の書き捨てで
 弥太郎さんうえさん
 私の組んだマクロを見てくださいませんか?

Sub 集計()
'
' 集計 Macro

    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6) _
        , Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End Sub

Sub 集計リセット()
'
' 集計リセット Macro

    Selection.RemoveSubtotal
End Sub

 これなんですが、一応は働いてくれてます (〃^▽^〃姫)


  ビューティフル!! ええがなええがな!
 このマクロ、寸法足らずのくせに良う働いてまっせぇ、ナマイキな。
 正直言うてこういうやり方があるとは知りませなんだわ、えぇ。
 これも〜ろた、勉強、勉強。もうバスター仲間からマクロ仲間に変更しまひょか?
     chokozaina 姫様 (おいぼれ弥太郎)

 おはようございます
すっかりうえさんのスレに入り込んでしまって
「うえさん、ごめんなさい!」
でもいろいろと勉強させてもらってありがとうございました。
弥太郎さん、そ、そんなに褒め上げると
姫はうぬぼれちゃうよ・・・・・・
「姫、幼稚園年長”マクロ組”に編入します。」ほらもう(^_^メ)
この後、弥太郎さん定義のスレを聴講し熟読させてもらいますね。
(〃^▽^〃姫)

 こんばんは。
 シニアさんお久しぶりです。m(_ _)m
 ホロー有難う御座います。あっと言う間に・・・活発に会話が・・・あっ!イヤレスがついていて、ただただ驚きと関心と〜・・・勉強になります。
 (さくら)

 
 

  


コメント返信:

[ 一覧(最新更新順) ]


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