2017-02-18 98 views
1

问题VBA:在细胞分裂的文本,在细胞

创建重复行的每个元素。当我尝试运行宏,我上线“用表(” Sheet5" )语法错误。

enter image description here

我是新来的VBA,但我相信我是在正确的轨道上的其他网站上找到this example后。

我的数据

我有一张10k记录。在K列中,我有一个字段“流派”,其字符串值由“|”表示。一个例子是:

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

的类型值是:

Action|Adventure|Science Fiction|Thriller 

预期结果

我试图在做的是分裂的风格细胞中的值“|” ,并为每个流派创建一个新行,并将原始行中的值复制到新行中。

以上述数据为例,我将循环播放4种流派,创建4个新行,并在流派列中将4个值替换为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  

的功能

我已经通过了解中,我发现的例子发生了什么工作。我相信这是正确的,直到for循环,但我在With Sheets(“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 
+4

变化'”''以“' – YowE3K

+0

这做到了 - !。!谢谢如果你写的答案,我会接受它太 – Emile

+0

精心布置的问题埃米尔 – brettdj

回答

3

变化变为"。 VBA需要标准的双引号作为字符串分隔符。

您也将有以下行同一个问题:

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

我不知道这是否应该真正归类为“简单的打字错误”,因此问题应该是关闭,但有这么多人有这个问题,我会离开这个答案,直到有人确实关闭这个问题。

+2

嗷的男人,你有鹰的眼睛 –

+1

@ ASH - 这是我今天看到的第一件事,那就是当有人说“简单的工作表”(“Sheet1”)不起作用时 – YowE3K

+0

谢谢 - 作为VBA n00b,这是一个很好的教训 – Emile