我的合併單元格值自動總結了一個非常特殊的情況下,我不能管理循環正確:總結一下列值
有,首先在我的表九列五個Range("A:E")
包括有關客戶和日期的信息。在其他四列中有一堆變量,前兩個(列F
和G
)手動輸入,最後兩個應該是自動計算的(H
使用Excel公式計算,I
將使用VBA計算)。
每當一個新的變量投入F
列,而不在很行的客戶和日期部分Range("A:E")
的變化,我想的Range(A:E)
細胞與以上這樣的合併。在這種情況下,我還希望最後一列I
合併爲特定的行數。該合併過程的代碼基本上能正常工作,它是這樣的:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tmp As Range
Dim i As Integer
For Each tmp In Range("F4:F1000")
If tmp.Value <> "" Then
If tmp.Offset(0, -1).Value = "" Then
Range(tmp.Offset(0, -1), tmp.Offset(-1, -1)).MergeCells = True
Range(tmp.Offset(0, -2), tmp.Offset(-1, -2)).MergeCells = True
Range(tmp.Offset(0, -3), tmp.Offset(-1, -3)).MergeCells = True
Range(tmp.Offset(0, -4), tmp.Offset(-1, -4)).MergeCells = True
Range(tmp.Offset(0, -5), tmp.Offset(-1, -5)).MergeCells = True
Range(tmp.Offset(0, 3), tmp.Offset(-1, 3)).MergeCells = True
Else
tmp.Offset(0, -1).MergeCells = False
tmp.Offset(0, -2).MergeCells = False
tmp.Offset(0, -3).MergeCells = False
tmp.Offset(0, -4).MergeCells = False
tmp.Offset(0, -5).MergeCells = False
tmp.Offset(0, 3).MergeCells = False
End If
End If
Next tmp
End Sub
棘手的部分是這樣的:我想最後一列I
自動的合併範圍,總結了在同一列中的值在H
列行像下面圖片中看到(圖片只顯示列D
到H
)
我的想法是前Else
把下面的代碼:
i = (tmp.Offset(0, -1).MergeArea.Rows.Count - 1) * (-1)
tmp.Offset(i, 3) = Application.Sum(Range(tmp.Offset(i, 2), tmp.Offset(0, 2)))
不幸的是,這個非常的代碼片段的結果一起時被合併超過三排(雖然當我跑分條整經此過程中不會出現單排無限的,混亂的合併和取消合併過程沒有額外的代碼片段)。
有沒有人有想法解決這個問題?
另外,我會很感激任何關於如何擴展代碼的建議,以便刪除第F
列中的單元格。我知道VBA通過使用單元格合併變得非常複雜,我最終必須堅持每一行中的重複值。不過,如果有人喜歡這個挑戰,我很歡迎這個問題的幫助!
看看[這裏](http://stackoverflow.com/questions/22075988/detect-merged-cells-in-vba-excel-with-mergearea)如何測試它是否合併。然後使用合併的地址來指定range.value,否則就使用單元格。 –