VBA:拆分单元格中的文本,为单元格中的每个元素创build重复的行

问题

当我尝试运行macros时,出现“With Sheets(”Sheet5“)行的语法错误。

在这里输入图像说明

我是新来的VBA,但我相信我在另一个网站上find这个例子后,在正确的轨道上。

我的数据

我有一个10Klogging表。 在K列中,我有一个字段“stream派”,其string值由“|”表示。 一个例子是:

2015 32.985763 150000000 1513528810 124 6/9/15 5562 6.5 2015 137999939.3 Action|Adventure|Science Fiction|Thriller 

stream派的价值是:

 Action|Adventure|Science Fiction|Thriller 

预期结果

我试图做的是在“|”中分割stream派单元格中的值,并为每个stream派创build一个新行,并将原始行中的值复制到新行中。

以上面的数据为例,我将循环使用4个stream派,创build4个新行,并在stream派列中将4个值replace为for循环的1个值,并删除原始行。 结果是:

 2015 32.985763 150000000 1513528810 124 6/9/15 5562 6.5 2015 137999939.3 Action 2015 32.985763 150000000 1513528810 124 6/9/15 5562 6.5 2015 137999939.3 Adventure 2015 32.985763 150000000 1513528810 124 6/9/15 5562 6.5 2015 137999939.3 Science Fiction 2015 32.985763 150000000 1513528810 124 6/9/15 5562 6.5 2015 137999939.3 Thriller 

function

我一直在努力理解我发现的例子中发生了什么。 我相信这是正确的,直到for循环,但我有困惑的错误,在床单(“Sheet5”)线。 数据在Sheet5上。

 Option Explicit Sub ReorgData() Dim r As Long, lr As Long, s Application.ScreenUpdating = False With Sheets("Sheet5”) lr = .Cells(Rows.Count, 11).End(xlUp).Row For r = lr To 2 Step -1 If InStr(.Cells(r, 11), “|") > 0 Then s = Split(Trim(.Cells(r, 11)), “|”) .Rows(r + 1).Resize(UBound(s)).Insert .Cells(r + 1, 1).Resize(UBound(s), 11).Value = .Cells(r, 1).Resize(, 11).Value .Cells(r, 12).Resize(UBound(s) + 1).Value = Application.Transpose(s) .Cells(r + 1, 13).Resize(UBound(s), 3).Value = .Cells(r, 13).Resize(, 3).Value End If Next r .Columns(12).AutoFit End With Application.ScreenUpdating = True End Sub 

"更改为" 。VBA需要使用标准的双引号作为string分隔符。

你也将在下面的问题上有同样的问题:

  If InStr(.Cells(r, 11), “|") > 0 Then s = Split(Trim(.Cells(r, 11)), “|”) 

我不确定这是否应该被归类为“简单的印刷错误”,因此应该closures这个问题,但是有这么多人有这个问题,我会在这里留下这个答案,直到有人closures这个问题。