|
▼Vハチ さん:
おはようございます。
>実はこれある区切り線なのです。
>
>例えば、1行目から5行目のD列の合計をその区切り線(6行目)のE列にいれます。
>7行から8行までの合計を区切り線(9行目)のE列に入れます。
>
>まー簡単に言うと、区切り線までの合計を出したいわけです。
簡単に書くのではなく、
「ここまで記述すれば、誰でもわかるだろう!! どうだ」
とご自分で思うくらい詳細に書いてください。
私が思う足りないのは 具体例です。
こんな入力データに対して、
こんな結果がほしいという具体例です。
例がひとつで足りなければ、ふたつでも三つでも記述してください。
新規ブックの標準モジュールに
'================================================================
Sub main()
Dim rng As Range
Dim ans As Variant
Dim ele As Variant
Dim st As Long
Call mk_sample
MsgBox "D列にサンプルデータ作成" & vbCrLf & _
"これから、処理を開始します"
st = 1
Set rng = Range("d1", Cells(Rows.Count, "d").End(xlUp))
With rng
ans = Evaluate("transpose(if(" & .Address & _
"="""",row(" & .Address & "),""" & Chr(&HFF) & """))")
ans = Filter(ans, Chr(&HFF), False)
st = 1
For Each ele In ans
Range("e" & ele).Value = Application.Sum(Range("d" & st, "d" & (ele - 1)))
st = ele + 1
Next
Cells(Rows.Count, "d").End(xlUp).Offset(1, 1).Value = _
Application.Sum(Range("d" & st, Cells(Rows.Count, "d").End(xlUp)))
End With
End Sub
'===================================================================
Sub mk_sample()
Cells.ClearContents
With Range("d1:d5")
.Formula = "=int(rand()*2000)+1"
.Value = .Value
End With
With Range("d7:d9")
.Formula = "=int(rand()*2000)+1"
.Value = .Value
End With
With Range("d11:d12")
.Formula = "=int(rand()*2000)+1"
.Value = .Value
End With
With Range("d14:d18")
.Formula = "=int(rand()*2000)+1"
.Value = .Value
End With
End Sub
新規ブックのアクティブシートのD列にサンプルデータをコードで
作成し、そのデータに対してE列に合計値を出力しています。
やりたい処理は、こんなことですか?
|
|