|
多分、これで動くと思いますが?
一点、修正し忘れた部分と、使い方の部分で少し付け加えて置きます
1、修正し忘れた部分
現状のList1(データ)のレイアウトで使うならこのままでも問題無いのですが?
List1のレイアウト変更、同様な処理を違うListで行う場合に問題が出る可能性が
有りますので修正して置いて下さい
以下の部分で
If lngRows >= 1 Then
'抽出データを日付昇順で整列
' .Offset(1).Resize(lngRows, clngColumns).Sort _
' Key1:=.Offset(1), Order1:=xlAscending, _
' Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
' Orientation:=xlTopToBottom, SortMethod:=xlStroke
.Offset(1).Resize(lngRows, clngColumns).Sort _
Key1:=.Offset(1, clngDate), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlStroke
'抽出データを配列に取得
vntData = .Offset(1).Resize(lngRows, clngColumns).Value
コメントアウトして有る方が現状で、下のコードが修正したコードです
違いは、「Key1:=.Offset(1)」と成っている所を「Key1:=.Offset(1, clngDate)」としています
元のコードでは、日付列が常にListの先頭列で有ることが条件で、列位置が固定に成っています
コード本来の趣旨では、
'◆「日付」の列位置を指定(基準セル位置からの列Offset:基準がA1で「日付」がA列なら0)
Const clngDate As Long = 0
ここで、「日付」列の変更が可能な様に成っていますので、
ここを変更した場合それが反映される様にする修正です
2、使い方の部分
現状は下記の様に成って居ると思いますが?
'出力シートの各緒言
'◆出力基準位置を指定
Const cstrResult As String = "A3"
'◆先頭「01係」の行位置(上記の基準からの行Offset)
Const clngNo As Long = 1
'◆売上集計表と差益集計表の上下ピッチ
Const clngBlock As Long = 163
このパラメタは、出力される表の位置を制御している物なので、
それぞれの値をいじってみて下さい
例えば
'◆出力基準位置を指定
Const cstrResult As String = "B4"
に変更すると、出力される表(売上集計表、差益集計表)の書き出し位置がB4からと成ります
詰まり、前がA3で指定されていたのを、B4にすると各表は、1列右1行下に出力されます
次に
'◆先頭「01係」の行位置(上記の基準からの行Offset)
Const clngNo As Long = 1
多分、この値は変更しないと思いますが、此れを2にすると、
列見出しと計算結果が1行ずれて表示されます(列見出しと結果の縦方向の微調整設定)
次に
'◆売上集計表と差益集計表の上下ピッチ
Const clngBlock As Long = 163
ですが、現状設定して有る163の値は、売上集計表が、30係×5項目+1列見出し=151行と成ります
これと、差益集計表の間に12行空白行を取って163行と言う意味です
詰まり、30係の場合、表その物が151行で、取りたい空白行を足した値を設定して下さい
ただ、30係の場合151以下の値を設定すると、表が重なるので注意して下さい
尚、集計結果は簡単に確認した積りですが、気が付かないバグが有る可能性も有りますので
そこら辺は、hiroさんが、よく確認を行って下さい
|
|