在Excel中分隔数据

时间:2011-12-19 11:06:00

标签: excel-formula

我收到的数据是连续编号的,但在每个数字下面,在下一个数字之前有0,1,2或3条信息。我需要分开数据,以便数字均匀分布! 任何帮助都会得到很大的帮助 - 我应该在大学做过Excel,但那是几十年前的事了! 谢谢, 格雷姆 嗨罗伯特,作为澳大利亚新用户,我不允许插入图像!因此想象每个逗号分隔单元格和短划线作为空Excel单元格,第一行是我最初收到的。 “g,h”等是句子。第二排是我想要实现的。不幸的是,它不会格式化显示单元格不会向下移动所以它必须在这里,就像在Excel或插入的图像中一样!谢谢!

接收1,g,h,2,k,3,a,c,v,4,5,r,t

要求1,g,h, - ,2,k, - , - ,3,a,c,v,4, - , - , - ,5,r,t, - ,

因此,如果我收到每个“号码”(客户端)的3条信息,则数字将自动均匀分布,但不幸的是,这不会发生!

1 个答案:

答案 0 :(得分:0)

Graeme,如果您可以根据示例创建VBA Macro,请告诉我。

我刚刚写了一个能完成这项任务的人,虽然他很优雅。

< ----------- CODE START --------->

Sub uniformdata()
    ReceiveCol = 1    'Column where received data starts
    ReceiveRow = 1    'Row where where received data starts
    PublishCol = 1    'Column where Published data starts
    PublishRow = 2    'Column where Published data starts
    Do Until Cells(ReceiveRow, ReceiveCol).Value = ""
        For counter = 1 To 4
            If counter = 1 Then
                Cells(PublishRow, PublishCol).Value = Cells(ReceiveRow, ReceiveCol).Value
                ReceiveCol = ReceiveCol + 1
            Else
                If IsNumeric(Cells(ReceiveRow, ReceiveCol).Value) Then
                    Cells(PublishRow, PublishCol).Value = "-"
                Else
                    Cells(PublishRow, PublishCol).Value = Cells(ReceiveRow, ReceiveCol).Value
                    ReceiveCol = ReceiveCol + 1
                End If
            End If
            PublishCol = PublishCol + 1
        Next
    Loop
End Sub

< ---------代码结束--------->

它的作用是从左到右遍历您的列表,直到找到一个空单元格。在它内部不断运行循环4次。在第一次传递时,它假定您的号码在那里,并立即写入。在其他3次传递中,它检查下一个接收的小区是否是数字。如果它是一个数字,它知道用短划线填充间隙,如果它不是一个数字,则使用找到的字符。

如果这解决了您的问题,请告诉我。在我的例子中,它就像一个魅力。

此致

罗伯特·伊尔布林克