2017-02-18 99 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