在VBA中删除/合并重复ID

时间:2020-07-14 11:26:59

标签: excel vba

晚上好

以下代码:


    Dim RunningNum As Long
    Dim LastRow As Long
    Dim MaskType As String
    Dim CurWkSt As Worksheet
    
    Set CurWkSt = Sheets("Output")
    
    LastRow = Sheets("Imported").Range("A" & Rows.Count).End(xlUp).Row + 1
    
    'For Loop to add all information,if duplicated Employee Number.
    
    For RunningNum = 3 To LastRow
        CurWkSt.Range("A" & RunningNum & ":AI" & RunningNum).Borders.LineStyle = xlContinuous
        CurWkSt.Range("A" & RunningNum & ":AI" & RunningNum).HorizontalAlignment = xlLeft
        'If Current Employee Number matches Previous Employee Number
        If CurWkSt.Range("E" & RunningNum) = CurWkSt.Range("E" & RunningNum - 1) Then
    
            'Highlight Employee ID Column to let you visually know.
            CurWkSt.Cells(RunningNum, 5).Interior.ColorIndex = 3
            
            'Find Which Mask it was previously and add to previous row!
            If Not IsEmpty(CurWkSt.Range("J" & RunningNum)) Then
                CurWkSt.Range("J" & RunningNum - 1).Value = CurWkSt.Range("J" & RunningNum).Value
                CurWkSt.Range("J" & RunningNum - 1).Interior.Color = RGB(255, 102, 255)
                CurWkSt.Range("T" & RunningNum - 1).Value = CurWkSt.Range("T" & RunningNum).Value
            End If
    
            If Not IsEmpty(CurWkSt.Range("K" & RunningNum)) Then
                CurWkSt.Range("K" & RunningNum - 1).Value = CurWkSt.Range("K" & RunningNum).Value
                CurWkSt.Range("K" & RunningNum - 1).Interior.Color = RGB(255, 204, 255)
                CurWkSt.Range("U" & RunningNum - 1).Value = CurWkSt.Range("U" & RunningNum).Value
            End If
            
            If Not IsEmpty(CurWkSt.Range("L" & RunningNum)) Then
                CurWkSt.Range("L" & RunningNum - 1).Value = CurWkSt.Range("L" & RunningNum).Value
                CurWkSt.Range("L" & RunningNum - 1).Interior.Color = RGB(255, 204, 0)
                CurWkSt.Range("V" & RunningNum - 1).Value = CurWkSt.Range("V" & RunningNum).Value
            End If
            
            If Not IsEmpty(CurWkSt.Range("M" & RunningNum)) Then
                CurWkSt.Range("M" & RunningNum - 1).Value = CurWkSt.Range("M" & RunningNum).Value
                CurWkSt.Range("M" & RunningNum - 1).Interior.Color = RGB(204, 236, 255)
                CurWkSt.Range("W" & RunningNum - 1).Value = CurWkSt.Range("W" & RunningNum).Value
            End If
            
            If Not IsEmpty(CurWkSt.Range("N" & RunningNum)) Then
                CurWkSt.Range("N" & RunningNum - 1).Value = CurWkSt.Range("N" & RunningNum).Value
                CurWkSt.Range("N" & RunningNum - 1).Interior.Color = RGB(255, 230, 153)
                CurWkSt.Range("X" & RunningNum - 1).Value = CurWkSt.Range("X" & RunningNum).Value
            End If
            
            If Not IsEmpty(CurWkSt.Range("O" & RunningNum)) Then
                CurWkSt.Range("O" & RunningNum - 1).Value = CurWkSt.Range("O" & RunningNum).Value
                CurWkSt.Range("O" & RunningNum - 1).Interior.Color = RGB(153, 255, 153)
                CurWkSt.Range("Y" & RunningNum - 1).Value = CurWkSt.Range("Y" & RunningNum).Value
            End If
            
            If Not IsEmpty(CurWkSt.Range("P" & RunningNum)) Then
                CurWkSt.Range("P" & RunningNum - 1).Value = CurWkSt.Range("P" & RunningNum).Value
                CurWkSt.Range("P" & RunningNum - 1).Interior.Color = RGB(153, 204, 255)
                CurWkSt.Range("Z" & RunningNum - 1).Value = CurWkSt.Range("Z" & RunningNum).Value
            End If
            'For now, we will hide the Duplicated Lines.
            'CurWkSt.Rows(RunningNum).Hidden = True
            'When in operation, we can delete these lines
            CurWkSt.Rows(RunningNum).EntireRow.Delete
        End If
    Next
    
    Call AddTotals
End Sub

目前可以使用,但是我现在遇到了问题,我不确定为什么!

比如说行是

1| 12345 | other stuff
2| 12345 | other stuff
3| 12345 | other stuff
4| 12345 | other stuff

它仅删除第二行,并将其添加到第一行,而不将其添加到其他任何行。示例:

1| 12345 | other stuff | Other stuff
3| 12345 | other stuff
4| 12345 | other stuff

但不将所有其他内容加在一起。

关于如何解决此问题的任何建议?我最初的想法是多次运行sub,但这很愚蠢!

0 个答案:

没有答案