[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『12ヵ月分のシートを集約し、客先と種類別で12ヵ月分の数量を月別の列を作り1行で表示したい。』(ののは)
12ヵ月分の売上データを月別にシートで分けております。
売上データは、1行に得意先、商品、荷姿、数量です。
1シートのデータは250行程あります。
各シートの数量を月別に横へ集約する方法を教えてください。
よろしくお願い致します。
例
[4月シート]
あ社 ポッキー 12本入り 2個
あ社 ポッキー 12本入り×12箱 1ケース
い社 コアラマーチ 30個 3ケース
[5月シート]
あ社 ポッキー 12本入り 0個
あ社 ポッキー 12本入り×12箱 3ケース
い社 コアラマーチ 30個 1ケース
[集約シート]
4月 5月
あ社 ポッキー 12本入り 2個 0個
あ社 ポッキー 12本入り×12箱 1ケース 3ケース
い社 コアラマーチ 30個 3ケース 1ケース
< 使用 Excel:Excel2013、使用 OS:Windows7 >
各シートの得意先、商品、荷姿の並びは全シート共通なのだろうか? 例えば「あ社 ポッキー 12本入り」は必ず2行目で「あ社 ポッキー 12本入り×12箱」は3行目とか。 (ねむねむ) 2018/10/02(火) 11:29
各月毎にデータの行は変わってきます。
よろしくお願い致します。m(_ _)m
(ののは) 2018/10/02(火) 11:38
シート名が「4月」「5月」…で集計表の見出しもそれに合わせておく。 で、集計シートのD2セルに =IF($A2="","",IFERROR(INDEX(INDIRECT(D$1&"!D1:D1000"),MATCH(1,INDEX((INDIRECT(D$1&"!A1:A1000")=$A2)*(INDIRECT(D$1&"!B1:B1000")=$B2)*(INDIRECT(D$1&"!C1:C1000")=$C2),0),0)),"")) と入力して右及び下へフィルコピーではどうか?
(ねむねむ) 2018/10/02(火) 13:09
なお、月別シートのデータは最大1000行まで対応している。 もっとある場合は式中の「1000」をすべて同じ値で大きくしてくれ。 (小さくするのも可) (ねむねむ) 2018/10/02(火) 13:10
Dim sht As Worksheet, flg As Boolean, retu As Long, i As Long, j As Long, newrw As Long Sheets("集約").Cells.ClearContents For Each sht In ThisWorkbook.Sheets If sht.Name Like "*月" And Val(sht.Name) > 0 Then retu = WorksheetFunction.Max(4, Sheets("集約").Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Column) Sheets("集約").Cells(1, retu).Value = sht.Name i = 1 Do While sht.Range("A" & i).Value <> "" flg = False For j = 1 To Sheets("集約").Range("A" & Rows.Count).End(xlUp).Row If sht.Range("A" & i).Value = Sheets("集約").Range("A" & j).Value And sht.Range("B" & i).Value = Sheets("集約").Range("B" & j).Value And sht.Range("C" & i).Value = Sheets("集約").Range("C" & j).Value Then flg = True Sheets("集約").Rows(1).Find(sht.Name, , , xlWhole).Offset(j - 1).Value = sht.Range("D" & i).Value End If Next j If flg = False Then newrw = Sheets("集約").Range("A" & Rows.Count).End(xlUp).Offset(1).Row Sheets("集約").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = sht.Range("A" & i).Resize(, 3).Value Sheets("集約").Rows(1).Find(sht.Name, , , xlWhole).Offset(newrw - 1).Value = sht.Range("D" & i).Value End If i = i + 1 Loop End If Next sht End Sub (mm) 2018/10/04(木) 13:43
返事が遅くなり大変申し訳ございませんでした。
なかなか試す時間がなく、先程、式入力しましたら、きれいにデータが出てきました!!(^−^)
ありがとうございました。
(ののは) 2018/10/10(水) 17:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.