2016-11-07 6 views
1

基本的には、同一の連続したIDのSUM列をマージするマクロを作成したいと思います。私はそれは本当に簡単であるべきと考えている列の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

;(A2 = A3 A1 = A2)= OR:条件付き書式でのようなものになるだろう。

ありがとうございます!

+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

偉大な、それは私のコードで正常に動作します!そんなにニクラスに感謝します。 – 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と動作します。

関連する問題