2016-11-07 63 views
1

基本上,我想創建一個宏來合併那些相同ID的連續ID的SUM列。在條件格式會是這樣的:= OR;對於C列VBA:合併具有相同ID號的單元格

ID QTY SUM > ID QTY SUM 
001 1 1 > 001 1  1 
002 2 5 > 002 2  5 
002 3 5 > 002 3  
003 4 4 > 003 4  4 

See Example

我相信它應該是很簡單的(A1 = A2 A2 = A3)。

非常感謝!

+0

你試過了什麼?嘗試一下,然後在卡住時發回。我們不是代碼編寫服務,但我們在這裏可以幫助您解決問題,並且需要幫助。 – Sorceri

回答

0

這應該做的工作。

Option Explicit 

Private Sub MergeCells() 
' Disable screen updates (such as warnings, etc.) 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

Dim rngMerge As Range, rngCell As Range, mergeVal As Range 
Dim i As Integer 
Dim wks As Worksheet 

Set wks = ThisWorkbook.Sheets("Sheet1") ' Change Sheet1 to your worksheet 

i = wks.Range("A2").End(xlDown).Row 
Set rngMerge = wks.Range("A2:A" & i) ' Find last row in column A 

With wks 
' Loop through Column A 
For Each rngCell In rngMerge 
    ' If Cell value is equal to the cell value below and the cell is not empty then 
    If rngCell.Value = rngCell.Offset(1, 0).Value And IsEmpty(rngCell) = False Then 
     ' Define the range to be merged 
     ' Be aware that warnings telling you that the 2 cells contain 2 differen values will be ignored 
     ' If you have 2 different sums in column C, then it will use the first of those 
     Set mergeVal = wks.Range(rngCell.Offset(0, 2), rngCell.Offset(1, 2)) 
     With mergeVal 
     .Merge 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlCenter 
     End With 
    End If 
Next 
End With 

Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 
+0

太好了,它在我的代碼上正常工作!非常感謝Niclas。 – Senzar

0

到目前爲止,我用的是下面的代碼:

Sub MergeSum() 
    Set Rng = ActiveSheet.Range("A1:A5") 
    Dim nIndex As Long 
    Dim iCntr As Long 
    For iCntr = 1 To 5 
    If Cells(iCntr, 1) <> "" Then 
    nIndex = WorksheetFunction.Match(Cells(iCntr, 1), Rng, 0) 
    If iCntr <> nIndex Then 
    Let Obj = "C" & nIndex & ":" & "C" & iCntr 
    Range(Obj).Select 
    Application.DisplayAlerts = False 
    Selection.Merge 
    Application.DisplayAlerts = True 
    End If 
    End If 
    Next 
End Sub 

但這段代碼有一個限制,它只能與方興未艾的ID。