それではこのシートをVBAで操作出来るようにプログラムを書いてみましょう。
森山・井上・杉島シートにコピーします。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
nrow = Target.Row
ncol = Target.Column
If ncol = 3 Then Exit Sub
If nrow < 7 Or nrow > 13 Then Exit Sub
kei = 0: n = 0
Application.EnableEvents = False
For i = 7 To 13
Cells(i, 5) = (Cells(i, 4) - Cells(i, 2)) * 24
If Cells(i, 2) = "" Or Cells(i, 4) = "" Then Cells(i, 5) = 0
Cells(i, 6) = Cells(i, 5) * Cells(6, 9)
kei = kei + Cells(i, 6)
If Cells(i, 5) <> 0 Then
n = n + 1
End If
Next i
Cells(14, 6) = kei
Cells(7, 9) = n
Application.EnableEvents = True
End Sub
では次に合計シートの集計をシートを開いた時に発生するイベントプロシージャ
Worksheet_Activate()に書き込みます。
Private Sub Worksheet_Activate()
Dim WB As Workbook
Dim WS1 As Worksheet
Set WB = ActiveWorkbook
Row = 7
col = 6
wsRow = 4
wsCol = 3
For i = 1 To 7
gokei = 0
countN = 0
For j = 1 To 3
Set WS1 = WB.Worksheets(j)
kei = WS1.Cells(Row, col)
If kei <> 0 Then countN = countN + 1
gokei = gokei + kei
Next j
Row = Row + 1
Cells(wsRow, wsCol) = gokei
Cells(wsRow, 2) = countN
wsRow = wsRow + 1
Next i
gokei = 0: kei = 0: countN = 0
For i = 4 To wsRow - 1
kei = Cells(i, wsCol)
countN = countN + Cells(i, 2)
gokei = gokei + kei
Next i
Cells(wsRow + 1, wsCol) = gokei
Cells(wsRow + 1, 2) = countN
End Sub
■ここで問題です。
■もう1名増やしてみましょう。
■がんばってね( ^)o(^ )
Excel関数で計算、3つのシートを合計する計算式も覚えられるよ
0コメント