我有一个excel表,看起来像这个。
正如您所看到的,此产品2005和3004不止一次上市,因为这些相同的产品具有基于销售额的不同价格值。比如,如果你购买50件商品,价格就会降低。
我想要的是 - 假设有一种方法可以实现 - 是这样的:
ProductID列是唯一的,并在1行中使用相同的产品ID收集。在下一列中添加了Sale Scala和Price(Per)值(如果有)。是否有一个解决方案来改变这样的表与编码?手动编辑的行太多了。
请建议。感谢。
答案 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
结果: