[[20161130002953]] 『担当者ごとの販売状況を集計』(なし水) ページの最後に飛ぶ

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

 

『担当者ごとの販売状況を集計』(なし水)

エクセル初心者です。教えて頂きたいのですが
Sheet1に担当者の販売データがあります。

データが大量ですのでどのような関数で抽出すればよいか教えてください。
初心者でどのように集計すればよいのかわかりません。
シート2〜4のような集計ができればと思って下記のように
作成してみました。

契約Noで抽出しようと思いましたが、同じ契約Noで複数の商品を
販売する事もあり集計の仕方がわかりません。

ご教授のほどよろしくお願いいたします。

	【Sheet 1】						

	A	B	C	D	E	F	G
1	担当	契約No	契約先	納品先	商品	数	金額
2	山田	22	岡山	備前	みかん	2	500
3	岡田	55	名古屋	市内	たまご	1	100
4	山田	13	東京	大阪	りんご	2	300
5	山田	13	東京	大阪	みかん	1	500
6	岡田	47	埼玉	千葉	ばなな	1	200
7	谷口	31	大阪	京都	ばなな	2	200
8	谷口	36	沖縄	宮城	りんご	1	300
9	山田	11	宮城	仙台	みかん	1	500
10	岡田	59	千葉	東京	たまご	2	100
11	岡田	66	滋賀	岐阜	りんご	1	300
12	岡田	66	滋賀	岐阜	ばなな	1	200
13	岡田	66	滋賀	岐阜	みかん	1	500

	【Sheet 2】						
	A	B	C	D	E	F	G
1	担当	契約No	契約先	納品先	商品	数	金額
2	山田	22	岡山	備前	みかん	2	500
3	山田 計	22	岡山	備前		2	500
4	山田	13	東京	大阪	りんご	2	300
5	山田	13	東京	大阪	みかん	1	500
6	山田 計	13	東京	大阪		3	800
7	山田	11	宮城	仙台	みかん	1	500
8	山田 計	11	宮城	仙台		1	500
9	岡田	55	名古屋	市内	たまご	1	100
10	岡田 計	55	名古屋	市内		1	100
11	岡田	47	埼玉	千葉	ばなな	1	200
12	岡田 計	47	埼玉	千葉		1	200
13	岡田	59	千葉	東京	たまご	2	100
14	岡田 計	59	千葉	東京		2	100
15	岡田	66	滋賀	岐阜	りんご	1	300
16	岡田	66	滋賀	岐阜	ばなな	1	200
17	岡田	66	滋賀	岐阜	みかん	1	500
18	岡田 計	66	滋賀	岐阜		3	1000
19	谷口	31	大阪	京都	ばなな	2	200
20	谷口 計	31	大阪	京都		2	200
21	谷口	36	沖縄	宮城	りんご	1	300
22	谷口 計	36	沖縄	宮城		1	300

	【Sheet 3】						
	A	B	C	D	E	F	G
1	担当	契約No	契約先	納品先	商品	数	金額
2	山田 計	22	岡山	備前		2	500
3	山田 計	13	東京	大阪		3	800
4	山田 計	11	宮城	仙台		1	500
5	岡田 計	55	名古屋	市内		1	100
6	岡田 計	47	埼玉	千葉		1	200
7	岡田 計	59	千葉	東京		2	100
8	岡田 計	66	滋賀	岐阜		3	1000
9	谷口 計	31	大阪	京都		2	200
10	谷口 計	36	沖縄	宮城		1	300

	【Sheet 4】						
	A	B	C	D	E	F	G
1	担当	契約No	契約先	納品先	商品	数	金額
2	山田 計	3					1800
3	岡田 計	4					1400
4	谷口 計	2					500

< 使用 Excel:Excel2010、使用 OS:Windows7 >


=IF(COUNTIF(A2,"山*"),VLOOKUP(A2,A:G,7,0)*F2,"")

これで一瞬でしょ。

複数条件を付けるのならSUMPRODUCTやSUMIF関数ですね、必要であれば記載しますが。
(PPAP) 2016/11/30(水) 02:15


>シート2〜4のような集計ができればと思って
こういうときはピボットテーブルという機能をつかうのではないかなぁ。。。。

http://span.jp/office2010_manual/excel2010/data/pivottable.html
(まっつわん) 2016/11/30(水) 08:47


Sub main()
    Dim dic1 As Object, dic2  As Object, c As Range, rg As Range
    Sheets("Sheet2").Cells.ClearContents
    Sheets("Sheet3").Cells.ClearContents
    Sheets("Sheet4").Cells.ClearContents
    Sheets("Sheet1").Cells.Copy Sheets("Sheet2").Range("A1")
    Sheets("Sheet1").Range("A1:G1").Copy Sheets("Sheet3").Range("A1")
    Sheets("Sheet1").Range("A1:G1").Copy Sheets("Sheet4").Range("A1")
       With Sheets("Sheet2").Sort
           .SortFields.Clear
           .SortFields.Add Key:=Sheets("Sheet2").Range("A2:A" & Rows.Count)
           .SortFields.Add Key:=Sheets("Sheet2").Range("B2:B" & Rows.Count)
           .SetRange Sheets("Sheet2").Range("A1:G" & Rows.Count)
           .Header = xlYes
           .MatchCase = False
           .Orientation = xlTopToBottom
           .SortMethod = xlPinYin
           .Apply
       End With
    Set dic1 = CreateObject("scripting.dictionary")
    Set dic2 = CreateObject("scripting.dictionary")
    Set c = Sheets("Sheet2").Range("A2")
    Do While Not c.Value = Empty
       dic1(c.Value) = dic1(c.Value) + Val(c.Offset(, 5).Value)
       dic2(c.Value) = dic2(c.Value) + Val(c.Offset(, 6).Value)
       dic1(c.Value & "_" & c.Offset(, 1).Value) = dic1(c.Value & "_" & c.Offset(, 1).Value) + Val(c.Offset(, 5).Value)
       dic2(c.Value & "_" & c.Offset(, 1).Value) = dic2(c.Value & "_" & c.Offset(, 1).Value) + Val(c.Offset(, 6).Value)
       If Not (c.Value = c.Offset(1).Value And Replace(c.Offset(, 1).Value, "計", "") = Replace(c.Offset(1, 1).Value, "計", "")) Then
           Set rg = Sheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Offset(1)
           rg.Value = c.Value
           rg.Offset(, 1).Value = "計" & c.Offset(, 1).Value
           rg.Offset(, 2).Value = c.Offset(, 2).Value
           rg.Offset(, 3).Value = c.Offset(, 3).Value
           rg.Offset(, 5).Value = dic1(c.Value & "_" & c.Offset(, 1).Value)
           rg.Offset(, 6).Value = dic2(c.Value & "_" & c.Offset(, 1).Value)
               If c.Value <> c.Offset(1).Value Then
                   Set rg = Sheets("Sheet4").Range("A" & Rows.Count).End(xlUp).Offset(1)
                   rg.Value = c.Value
                   rg.Offset(, 1).Value = "計" & Application.WorksheetFunction.CountIf(Sheets("Sheet3").Range("A:A"), c.Value)
                   rg.Offset(, 6).Value = dic2(c.Value)
               End If
           Sheets("Sheet2").Rows(c.Offset(1).Row).Insert Shift:=xlDown
           Set c = c.Offset(1)
           c.Value = c.Offset(-1).Value
           c.Offset(, 1).Value = "計" & c.Offset(-1, 1).Value
           c.Offset(, 2).Value = c.Offset(-1, 2).Value
           c.Offset(, 3).Value = c.Offset(-1, 3).Value
           c.Offset(, 5).Value = dic1(c.Value & "_" & c.Offset(-1, 1).Value)
           c.Offset(, 6).Value = dic2(c.Value & "_" & c.Offset(-1, 1).Value)
       End If
       Set c = c.Offset(1)
    Loop
End Sub
(mm) 2016/11/30(水) 11:06

コメント返信:

[ 一覧(最新更新順) ]


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