Excel将相同的值合并到第1列,同时保留数据
我有一个excel表格,看起来像这个 如您所见,此产品2005和3004不止一次列出,因为基于销售scala,相同的产品具有不同的价格值。比如,如果你每件买50件,价格就会更低 我想要的是——假设有办法实现——是这样的: ProductID列是唯一的,具有相同产品ID的入口聚集在一行上。在下一栏中添加了他们的销售规模和价格(Per)值(如果有)。有没有一个解决方案可以通过编码来改变表?行太多,无法手动编辑 请建议。谢谢Excel将相同的值合并到第1列,同时保留数据,excel,Excel,我有一个excel表格,看起来像这个 如您所见,此产品2005和3004不止一次列出,因为基于销售scala,相同的产品具有不同的价格值。比如,如果你每件买50件,价格就会更低 我想要的是——假设有办法实现——是这样的: ProductID列是唯一的,具有相同产品ID的入口聚集在一行上。在下一栏中添加了他们的销售规模和价格(Per)值(如果有)。有没有一个解决方案可以通过编码来改变表?行太多,无法手动编辑 请建议。谢谢 可能有更好的方法来实现这一点,但我创建了一个简单的循环,在列a中查找重复
可能有更好的方法来实现这一点,但我创建了一个简单的循环,在列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
结果:
如果这是一次性处理操作,最好将数据保存为CSV文件,并使用Perl等语言编写的脚本进行处理。完成后,您可以返回Excel。是的,我只需要此过程一次,然后将新格式传送到sql server。但不幸的是,我不知道如何使用Perl,你可能在大多数语言中都可以做这个操作,我只是举了一个Perl的例子,因为我就是用它来做这样的工作的。