|
▼いちご さん:
こんにちは。
以下のご説明でだいたいわかりました。
>エクセルのファイルに元データシート、日集計シート、1ヶ月分日別集計シート等が有
>1ヶ月日別集計のシートのVBAを知りたかったんです
>データは番号と日付で管理されています
>このデータはロータス123をフロッピーに落とし
>エクセルにマクロで貼り付けて作業しています
>何分、前任者がVBAばりばり出来たみたいで(もう、いてませんが)
>無知な私にはまったくもってわかりません
>知ってる関数SUMとかRANGEならわかるんですが。。。
>元データシートはこんな感じです
元データシート(以下のデータが入っているシート名とします)は、
実際には、管理番号と配合の間に色んなデータが入っているということですね?
>月 日 管理番号・(略)・ 配合・・(略)
>09 01 2000 C
>09 01 2001 C
>09 01 2002 C
>09 01 2003 C
>09 02 2004 B
>09 02 2005 C
今回は、この元データシートはA列が月、B列が日、C列が管理番号、D列が配合とします。シート名は「元データシート」とします。
手順としては、新規ブックに上記のデータを例として、元データシートに作成して下さい。
次に別のシートをアクティブにして、以下のコードを実行して下さい。
'====================================================================
Sub アクティブシートを1ヶ月分日別集計シートにする()
With ActiveSheet
.Name = "1ヶ月分日別集計シート"
.Range("a:a").NumberFormatLocal = "##日"
.Range("b1:g1").Value = Array("管理番号個数", "A", "B", "C", "SC", "配合計")
Range("a2").Value = 1
Range("a2").AutoFill Destination:=Range("A2:A32"), Type:=xlFillSeries
End With
End Sub
アクティブシートを「1ヶ月分日別集計シート」として、作成します。
ここで、確認していただくのは「1日」、「2日」・・・のセルの書式です。
このセルを数式内で使用しますから、数値として認識してくれる書式にしました。
次に集計したい日のセルを選択してして以下のコードを実行して下さい。
'==================================================================
Sub 行の日付の日計集計()
Dim rw As Long
Dim rng As Range
Dim wk As String
Dim calad As String
rw = ActiveCell.Row
With Worksheets("元データシート")
Set rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
'↑元データのデータ範囲をA列を基準に取得する
If rng.Row = 1 Then '元データシートにデータが無い
MsgBox "データなし"
calad = ""
end
Else
calad = rng.Offset(0, 1).Address(, , xlR1C1, True)
End If
End With
With Worksheets("1ヶ月分日別集計シート")
wk = rng.Offset(0, 2).Address(, , xlR1C1, True)
.Cells(rw, 2).FormulaArray = "=SUM(IF(FREQUENCY(IF(" & calad & "=r" & rw & "c1," & wk & ",0),IF(" & _
calad & "=r" & rw & "c1," & wk & ",0))>0,1,0))-IF(SUM(IF(" & _
calad & "<>r" & rw & "c1,1,0))>0,1,0)"
' ↑管理番号個数の計算(重複を個数に入れない計算をしています)
wk = rng.Offset(0, 3).Address(, , xlR1C1, True)
.Range(.Cells(rw, 3), .Cells(rw, 6)).Formula = "=SUMPRODUCT((" & calad & "=r" & rw & "c1)*(" & _
wk & "=r1c))"
' ↑各項目(A,B,C,SC)の個数の計算
.Cells(rw, 7).Value = "=sum(c" & rw & ":f" & rw & ")"
' ↑配合合計
End With
End Sub
「1ヶ月分日別集計シート」の集計結果は、全て数式ですから、数式と各セルの関係を
整理してみて下さい。
実際の運用時にセルの位置が変わった場合、コードをどのように変更すればよいか
は、数式とコードを良く見比べて下さい。
|
|