Excel在保留数据的同时在column1上合并相同的值

时间:2013-12-22 10:45:24

标签: excel

我有一个excel表,看起来像这个。

Picture1

正如您所看到的,此产品2005和3004不止一次上市,因为这些相同的产品具有基于销售额的不同价格值。比如,如果你购买50件商品,价格就会降低。

我想要的是 - 假设有一种方法可以实现 - 是这样的:

Picture2

ProductID列是唯一的,并在1行中使用相同的产品ID收集。在下一列中添加了Sale Scala和Price(Per)值(如果有)。是否有一个解决方案来改变这样的表与编码?手动编辑的行太多了。

请建议。感谢。



1 个答案:

答案 0 :(得分:2)

可能有更好的方法可以做到这一点,但我创建了一个简单的循环,在A列中查找重复值,然后相应地处理数据。为简单起见,我正在自下而上。注意:除非您想添加更多逻辑,否则您必须在完成后手动创建标题。

编辑更简单的代码

Sub TransposeData()
    Dim WS As Worksheet
    Dim LastCell As Range
    Dim LastCellRowNumber As Long

    Set WS = Worksheets("Sheet1")
    With WS
        Set LastCell = .Cells(.Rows.Count, "A").End(xlUp)
        LastCellRowNumber = LastCell.Row
    End With

    'Loop through column A bottom up
    For i = LastCellRowNumber To 2 Step -1
        ' Check if value in current cell matches value in cell above it
        If (Range("A" & i).Value = Range("A" & i).Offset(-1, 0).Value) Then
            'Shift current values over
            Range("C" & i & ":D" & i).Insert Shift:=xlToRight

            'Copy new values down
            Range("C" & i).Value = Range("C" & i - 1).Value
            Range("D" & i).Value = Range("D" & i - 1).Value

            'Delete row
            Rows(i - 1).Delete Shift:=xlUp
        End If
    Next i
End Sub

结果:

enter image description here