[[20190308200125]] 『特定の行だけ集計』(ぷりん) ページの最後に飛ぶ

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

 

『特定の行だけ集計』(ぷりん)

困ってます。

3000人以上の会費の内訳を人ごとに月次で管理しているのですが
ある期間に入金した会費のうち、特定の内訳だけを簡単に集計する
方法がありましたら教えていただけないでしょうか。

1日かけて集計したら間違えてました。
簡単に正確にできないかと悩んでます。

ご指導ください。

(表の構成)
表:会費の管理表
A列:会員番号
B列:会員名
C列:内訳
D列〜:4月〜
1行目:見出し

●内訳は10項目・・・入金日〜i
●1項目目は入金日
●集計は4項目目(c)、7項目(f)、8項目(g)
●期間は6月29日から7月30日まで→集計期間は変動します。
●金額は空欄があります。

表がキレイに表示できてませんが内訳はC列です。

1 会員番号 会員名 内訳 4月 5月 6月 7月・・・
2 180001 田中 入金日 6/23 6/23 6/30 7/15
3 a 100 100 150
4 b 200 150
5 c
6 d 300 360
7 e 450
8 f 500 100
9 g 150 200
10 h 800 350
11 i 640 920
12 180002 鈴木 入金日 7/8 7/8 8/5 8/5
13 a
14 b
15 c
16 d
17 e
18 f
19 g
20 h
21 i

< 使用 Excel:Excel2016、使用 OS:Windows10 >


集計結果のレイアウトも提示できませんか

(マナ) 2019/03/08(金) 21:38


マナさん

見ていただきありがとうございます。

集計結果は、月毎に対象期間の内訳合計を表示しております。

今はフィルターで入金日に色をつけて全体表示にし、ひとつひとつ
コピーして集計してます。

何かよい方向がありましたら教えていただけないでしょうか。

   4月  5月  6月・・・
c
f
g

(ぷりん) 2019/03/08(金) 22:02


推測と全然違いました。
人ごとに集計するわけではないのですか?

>集計結果は、月毎に対象期間の内訳合計を表示しております。

対象機関とは、↓の集計期間と同じ意味ですか?

>●期間は6月29日から7月30日まで→集計期間は変動します。

質問の例では、集計結果にはどんな数値が入りますか?

(マナ) 2019/03/08(金) 22:33


追加質問です。

>1 会員番号 会員名 内訳 4月 5月 6月 7月・・・

1行目の、4月 5月 6月 7月・・・ とはどういう意味ですか?

(マナ) 2019/03/08(金) 22:39


>表がキレイに表示できてませんが内訳はC列です。

こんな表ですか

 	  -A-		 -B-	-C- 	-D-	-E-	-F-	-G-
 1	会員番号	会員名	内訳	4月	5月	6月	7月 
 2	180001		田中	入金日	6/23	6/23	6/30	7/15
 3				 a		100	100	150
 4				 b		200	150	
 5				 c 				
 6				 d		300	360	
 7				 e		450		
 8				 f		500	100	
 9				 g		150	200	
 10				 h		800	350	
 11				 i		640	920	
 12	180002		鈴木	入金日	7/8	7/8	8/5	8/5
 13				 a 				
 14				 b 				
 15				 c 				
 16				 d 				
 17				 e 				
 18				 f 				
 19				 g 				
 20				 h 				
 21				 i 

(マナ) 2019/03/08(金) 22:53


マナさん

見ていただきありがとうございます。

〉人ごとに集計するわけではないのですか?

例の表が見づらく申し訳ございません。
人ごと?とは該当する人を抽出すると言うことでしょうか?
最後に合計すればよいので人ごとに簡単にできるならどちらでも大丈夫です。

〉対象機関とは、↓の集計期間と同じ意味ですか?

同じ意味です。
漢字間違えてましたっ!
上手く説明できずご迷惑をおかけしております。

〉質問の例では、集計結果にはどんな数値が入りますか?

例は金額を省略してますので例えば、
田中さんは集計期間内は4月〜7月
鈴木さんは集計期間内は4月〜5月だけの場合にc,f,gが
下記の金額だった場合。

(田中さん)

    4月  5月   6月   7月
c  100  200   550   600
f  300  150   480   230
g       650   130   650

(鈴木さん)

   4月  5月   6月   7月
c  350  200   420   
f  250  100   480   230
g  160  600   130   650

(結果)

   4月  5月   6月   7月
c  450  400   550  600   
f  550  250   480   230
g  160  1250  130   650

となります。
(ぷりん) 2019/03/08(金) 22:59


マナさん

追加質問の件ですが毎月の会費を該当月毎に管理してます。
なので、田中さんの4月は4月分の会費を6/23に入金があった
事を示しております。

項目は会費の内訳です。→金額が入力されてます。
●●費用みたいな感じです。

〉こんな表ですか

はい。
C列が内訳でD列から4月〜となっております。

(ぷりん) 2019/03/08(金) 23:10


田中さんの4月と5月は、
入金日が6/23なので、対象期間外で
集計はしないということで、あっていますか?

(マナ) 2019/03/08(金) 23:20


マナさん

〉田中さんの4月と5月は、
〉入金日が6/23なので、対象期間外で
〉集計はしないということで、あっていますか?

あってます。

(ぷりん) 2019/03/08(金) 23:33


では、実際のデータで列は、何月まであるのでしょうか?

(マナ) 2019/03/08(金) 23:36


マナさん

〉実際のデータで列は、何月まであるのでしょうか?

4月から翌年の3月までです。

(ぷりん) 2019/03/08(金) 23:46


こんな手順でどうでしょうか。

1)Q1に、6/29、Q2に7/30と入力
2)R2に =C2と入力し、R11までフィルコピー
3)S5に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D5)
4)S8に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D8)
5)S9に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D9)
6)R2:S11を選択し、下方向にフィルコピー
7)S1に、=D1と入力し、右方向にフィルコピー
8)R〜AD列を「統合」機能で集計
9)統合先で、オートフィルタで1列目がc,f,gの行を抽出
10)抽出された行を、好きなところにコピペ

(マナ) 2019/03/09(土) 00:01


もし、データ数が多すぎて「統合」がうまくできないようなら
手順の9と10を先に実行するとよいです。

(マナ) 2019/03/09(土) 00:06


間違えていました。
 3)S5に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D5) で、AD列までフィルコピー
 4)S8に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D8) で、AD列までフィルコピー
 5)S9に数式:=IF(OR(D2<$Q$1,D2>$Q$2),"",D9) で、AD列までフィルコピー
 6)R2:AD11を選択し、下方向にフィルコピー 

(マナ) 2019/03/09(土) 00:34


マナさん

ごめんなさい。
急な所用の為、パソコンのない環境におります。

月曜日に改めてご報告いたします。
取り急ぎご連絡のみにて失礼いたします。

〉8)R〜AD列を「統合」機能で集計

初めまして知りました。
調べてみます。

遅くまで考えていただきまして感謝申し上げます。

(ぷりん) 2019/03/09(土) 06:45


もっと簡単にできないかと考えましたが
やっぱりマクロ使うのが楽ですね。
 Option Explicit

 Sub test()
    Dim w(1 To 3, 1 To 12) As Long
    Dim j As Long, k As Long
    Dim 始 As Long
    Dim 終 As Long

    始 = DateSerial(2019, 6, 29)
    終 = DateSerial(2019, 7, 30)

    For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 10
        For k = 1 To 12
            With Cells(j, k + 3)
                If .Value2 >= 始 Then
                    If .Value2 <= 終 Then
                        w(1, k) = w(1, k) + Cells(j + 3, k + 3).Value
                        w(2, k) = w(2, k) + Cells(j + 6, k + 3).Value
                        w(3, k) = w(3, k) + Cells(j + 7, k + 3).Value
                    End If
                End If
            End With
        Next
    Next

    With Worksheets.Add
        With .Cells(2)
            .Value = "4月"
            .AutoFill .Resize(, 12)
        End With
        Cells(2, 1).Resize(3).Value = [{"c";"f";"g"}]
        .Cells(2, 2).Resize(3, 12).Value = w
    End With

 End Sub

(マナ) 2019/03/09(土) 15:15


マナさん

かなりスピードアップしました。
マクロは秒速です!!

ただマクロ初めましてでして、少し様式が変更されたのですが
下記の修正だけで大丈夫でしょうか?

> For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 10

項目が10から14に増えました。
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 14

>Cells(2, 1).Resize(3).Value = [{"c";"f";"g"}]

cとfとgを実際の項目名に変更する。

ご指導ください。

(ぷりん) 2019/03/11(月) 13:03


>下記の修正だけで大丈夫でしょうか?

はい。それであっています。

>ただマクロ初めましてでして

その気があれば。簡単なことからでよいので、
チャレンジしてみてください。

(マナ) 2019/03/11(月) 18:11


マナさん

遅くなりましたが無事に希望通りにできました。
勘違いをしておりまして項目cではなくdでありました。

>Cells(j + 3, k + 3).Value

ここがどうしてcになっているのか理解するのに時間を要してしまいました。
少しばかり頂いたコードがどういう動きをしているのか理解できた気がいたします。

ご親切にありがとうございました。

>その気があれば。簡単なことからでよいので、
>チャレンジしてみてください。

せっかくの機会ですのでチャレンジしてみようと思います。
また相談にのっていただければ幸いです。

ご指導感謝いたします。

 
(ぷりん) 2019/03/12(火) 17:25


コメント返信:

[ 一覧(最新更新順) ]


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