VBA-分割和排列

时间:2018-07-27 06:48:15

标签: excel vba excel-vba

感谢您的及时帮助! 虽然我设法摆脱了End IF问题,但是现在鳕鱼陷入了无限循环且永不停止,

  

下面是我正在处理的文件的6行,我还有很多行   数据中的列,将在新插入的数据中复制数据   行(我正在处理的列除外,该列将具有   分隔的文字)-


01/06/18发送IM%02/06/18通过电子邮件发送CA%05/06/18提供给Ian%的数据室访问权限18/12/06国外发言人不会提出要约“我经过过程”

01/11 / 17-致电Phil并发送即时消息。绿石集团为许多中国私人开发商提供服务。

02/11/17澳大利亚开发人员。已发送即时通讯

02/11/17左语音邮件。中国开发商。

02/11/17发送了IM,并在手机上留言。 %06/11/17跟进了他的mobile.Left消息的呼叫。 %06/11/17。现在已经签署了CA,并已在数据室中下载了各种文档。 %13/11/17。今天早上与艾丹(Aidan)留下了信息。 %14/11/17。艾丹(Aidan)今天下午称,最好告知他们,他们已经仔细考虑并确定了运行数量,但价格对于Panuku而言太低了。该站点的主要问题被称为“完美三连冠”。该站点的部分是泥炭,需要更多的基础工作。地下水位高,需要额外的工作和额外的基础污染委员会对此特别严格,特别是对于住宅开发。/将需要拆除和重新填充以保持高度。所有上述费用非常昂贵,并影响了其价格(每平方米300美元左右)。即使在这个水平,他们的利润率也不高。如果投标没有成功,他们很乐意坐下来与Panuku讨论。

17年2月11日与沉先生通话,并对IM感到不满。他将进行审核。


根据您的建议,我正在使用的代码如下:-

Dim r As Long, i As Long, ar As Variant
With Worksheet("Sheet1")

   For r = .Cells(.Rows.Count, "A").End(xlUp).Row To 2 Step -1
       ar = Split(.Cells(r, "A").Value, "%")
       If UBound(ar) >= 0 Then .Cells(r, "A").Value = ar(0)
       For i = UBound(ar) To 1 Step -1
           .Rows(r).EntireRow.Copy
           .Rows(r).Offset(1).EntireRow.insert
           .Cells(r + 1, "A") = ar(i)
       Next i
   Next r
End With

请为此提出建议

谢谢!

1 个答案:

答案 0 :(得分:2)

问题不仅仅在于arr变量,还在于构建循环的方式。看来您正在尝试一次拆分r中的所有单元格。

Sub splitByColB()

    Dim r As long, i As Long, ar as variant

    with worksheets("sheet1")

        for r = .cells(.rows.count, "A").end(xlup).row to 2 step -1
            ar = Split(.cells(r, "A").Value, "%")
            If UBound(ar) >= 0 Then .cells(r, "A").Value = ar(0)
            For i = UBound(ar) To 1 Step -1
                .rows(r).EntireRow.Copy
                .rows(r).Offset(1).EntireRow.Insert
                .cells(r + 1, "A") = ar(i)
            Next i
        next r
    end with

End Sub

再看看您的代码,如果您将r设置为A列中最后一个填充的单元格,而不是A2到最后一个填充的单元格的范围,它可能会起作用。

Set r = Range("A" & plr)

不知道plr来自哪里。