Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel将相同的值合并到第1列,同时保留数据_Excel - Fatal编程技术网

Excel将相同的值合并到第1列,同时保留数据

Excel将相同的值合并到第1列,同时保留数据,excel,Excel,我有一个excel表格,看起来像这个 如您所见,此产品2005和3004不止一次列出,因为基于销售scala,相同的产品具有不同的价格值。比如,如果你每件买50件,价格就会更低 我想要的是——假设有办法实现——是这样的: ProductID列是唯一的,具有相同产品ID的入口聚集在一行上。在下一栏中添加了他们的销售规模和价格(Per)值(如果有)。有没有一个解决方案可以通过编码来改变表?行太多,无法手动编辑 请建议。谢谢 可能有更好的方法来实现这一点,但我创建了一个简单的循环,在列a中查找重复

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

如您所见,此产品2005和3004不止一次列出,因为基于销售scala,相同的产品具有不同的价格值。比如,如果你每件买50件,价格就会更低

我想要的是——假设有办法实现——是这样的:

ProductID列是唯一的,具有相同产品ID的入口聚集在一行上。在下一栏中添加了他们的销售规模和价格(Per)值(如果有)。有没有一个解决方案可以通过编码来改变表?行太多,无法手动编辑

请建议。谢谢




可能有更好的方法来实现这一点,但我创建了一个简单的循环,在列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的例子,因为我就是用它来做这样的工作的。