我的問題是發生了什麼here和here的混合,但它們都不是很好。我有一個奇怪的數據集,它的結構更像一個層次結構,而不是一系列純粹的數據點。事情是這樣的:VBA Excel - 將小計公式插入特定行
Item Budget Sales GROUP - Cats 0 120 FY 13 Persian 0 0 FY 13 Maine Coon 12 0 FY 14 Maine Coon 50 0 FY 12 Tabby 1 0 FY 13 Tabby 1 0 FY 14 Tabby 2 0 FY 14 Alley 12 0 GROUP - Dogs 0 201 FY 14 Collie 20 0 FY 14 Lab 31 0 FY 13 Golden Retriever 12 0 FY 12 Golden Retriever 0 0 GROUP - Gold Fish 0 50 FY 14 Goldfish 100 0 FY 13 Clown Fish 20 0 Tanks Fees 150 0
我需要一個宏,可以整齊地標識該組線,然後求和組在它之下 - 沒有捕捉下一組。換句話說,我需要貓預算項目來總結貓的預算。
所以宏需要識別帶有「GROUP *」的行,然後向下搜索直到找到下一個「GROUP *」,然後將Cat和Dog之間的空間相加 - 最好作爲函數 - 在「GROUP - Cats」行上。
我知道這一定是可能的,但我擔心它對於我在VBA中的基本能力來說太複雜了。
編輯:最終產品將在預算列中簡單地= SUM(B3:B9)的公式。然後B10(狗組)將有一個公式,例如= SUM(B11:B14)。對於黃金魚:= SUM(B16:18)。
但是,由於每個數據集都是不斷變化的(例如,本週可能會有20行而不是前一週的18行),我需要一個可以找到GROUP行之間空間的宏。
編輯2:我使用的是目前做類似的東西是什麼我正在尋找的VBA - 它本質團體和摺疊基礎上的數字我的部分出現在Sales列:
Dim rStart As Range, r As Range
Dim lLastRow As Long, sColumn As String
Dim rColumn As Range
'### The Kittens everywhere! thing is just to make sure the last group has an end point
Range("C1").End(xlDown).Offset(1).Value = "Kittens everywhere!"
sColumn = "C"
With ActiveSheet.Outline
.AutomaticStyles = False
.SummaryRow = xlAbove
.SummaryColumn = xlRight
lLastRow = Cells(Rows.Count, sColumn).End(xlUp).Row
With ActiveSheet
Set rColumn = .Range(.Cells(1, sColumn), Cells(lLastRow, sColumn))
With rColumn
Set r = .Cells(1, 1)
Do Until r.Row > lLastRow
If rStart Is Nothing Then
If r.Value = "0" Then
Set rStart = r
End If
Else
If r.Value <> "0" Then
Range(rStart, r.Offset(-1, 0)).Rows.Group
Set rStart = Nothing
End If
End If
Set r = r.Offset(1, 0)
Loop
End With
End With
ActiveSheet.Outline.ShowLevels RowLevels:=1
End With
Range("C:C").Find("Kittens everywhere!").ClearContents
還有更多的宏 - 因爲它也在做一些事情,像突出顯示GROUP行 - 但我敢肯定,如果我可以將這個SUM功能的東西塞進該部分或不。
我不確定你到底在哪裏感到困惑,但我添加了一些更多的信息。希望這會有所幫助。 :/ – PersonalSpace 2014-11-21 18:52:11
正式注意。我已經添加了一些我已有的內容,但我不確定它是否能適應當前的目標。 – PersonalSpace 2014-11-21 19:07:58