|
コメントを殆ど削除してしまったので、何をやって居るのか解らないと思いますので?
まず以下は、パラメタの部分で適当に変更して下さい
'List1の各緒言
'◆List1のデータ列数(A列〜AG列)
Const clngColumns As Long = 33
'◆「1係」の列位置を指定(基準セル位置からの列Offset:基準がA1で「1係」がD列なら3)
Const clngBegin As Long = 3
'◆「日付」の列位置を指定(基準セル位置からの列Offset:基準がA1で「日付」がA列なら0)
Const clngDate As Long = 0
'◆「店舗」の列位置を指定(基準セル位置からの列Offset:基準がA1で「店舗」がB列なら1)
Const clngStores As Long = 1
'◆「項目」の列位置を指定(基準セル位置からの列Offset:基準がA1で「項目」がC列なら2)
Const clngItem As Long = 2
'出力シートの各緒言
'◆出力基準位置を指定
Const cstrResult As String = "A3"
'◆先頭「01係」の行位置(上記の基準からの行Offset)
Const clngNo As Long = 3
'◆売上集計表と差益集計表の上下ピッチ
Const clngBlock As Long = 163
'◆Listの先頭セル位置を基準とする(列見出し「日付」のセル位置)
Set rngList = Worksheets("List1").Cells(1, "A")
'◆出力表の行見出しを設定
vntTitle(0) = Array("年実績", "前年比", _
"達成率", "年実績", "年目標")
vntTitle(1) = Array("年差益", "前年比", _
"達成率", "年差益", "年目標")
'◆抽出条件を設定
vntCriteria(0) = Array("売上", "売上", "売上目標")
vntCriteria(1) = Array("差益", "差益", "差益目標")
次に、コードが行っている手順を簡単に説明して置きます
1、上記の種々の緒言設定を行っています
2、「With rngList」以下で、List1の各種のデータを集めます
データListのデータ行数取得
「店舗」全ての名称を取得(無重複で)
「係」の列見出しを取得(作表時に行見出しを作成するのに使用)
Listの最大の(最終の)日付を取得(この日付から、当年度の年を決めています)
3、「With Application」以下で、'画面更新の停止、再計算を手動へ(再計算の停止)を
行っています
4、出力シート(各店舗名の付いたシート)を探し、有ればセルを全てクリアし
無ければ、シートを追加して、シート名を店舗名に変更しています
5、「With Worksheets」以下で、作業用のシートを追加しています
このシートに、AdvancedFilter(フィルタオプション)で必要データを抽出して行きます
6、追加したシートに、List1の列見出し(抽出範囲)、店舗、項目、日付(2列)を抽出条件範囲
として、転記します
7、「For i = 0 To UBound(vntStores)」で店舗分のLoopを行います
8、上記iで指定された店舗名を抽出条件範囲に書き込みます
9、「For j = 0 To 1」のLoopで、売上集計と差益集計で2度回しています
10、結果出力用の配列を確保します(売上集計と差益集計で新規の配列を使う為)
11、「For k = 0 To 2」のLoopで当年実績、前年実績、目標を集計の順に集計を行います
12、抽出条件の「日付」に開始日と終了日を出力、「項目」に、売上集計の場合、
"売上", "売上", "売上目標"のどれかkで決まった値を出力します
13、AdvancedFilterの実行を行い、作業シートにデータを抽出します
14、データの順序を念の為、揃える為に日付昇順で整列(ソート)を掛けます
15、此れを、月別、係別に結果出力用配列に集計を行います
16、集計を行った後、kが3回以内なら「11、」に戻り、
超えた場合、Loopを抜け、結果を店舗(出力)シートに出力し、
店舗(出力)シートに行列見出しと算式を出力します
17、「9、」に戻り、差益集計に掛ます
18、売上集計と差益集計が終わると、終了処理に成り、
まず作業用シートを削除します
19、再計算の仕方を元に戻すし、再計算を実行し、画面更新を再開させます
20、終了と成ります
|
|