2015-08-13 131 views
0

我有以下字符串「123 - 456789」。我想要做的是找到一種方法來僅捕獲第二個空格後的剩餘字符 - 「456789」 - 而不考慮字符串的長度。Excel VBA代碼中功能

我有如下一套代碼:

For leftLoop = 2 To leftNumberOfCells 
    Range("A" & iRow) = Split(Range("B" & iRow).Value, " ")     
    Range("B" & iRow) = Mid("B" & iRow, InStr("B" & iRow, " "), 100) 

    iRow = iRow + 1    
Next leftLoop 

的代碼行"Range("B" & iRow) = Mid("B" & iRow, InStr("B" & iRow, " "), 100)"是我試過了,除其他方式(從網上搜索,但我似乎無法得到它的工作

我有兩個問題:?

  1. 是否有人知道正確的代碼應該是什麼,...
  2. 我可以引用細胞,其中該字符串被定位並在完成中間功能之後替換它在同一個單元中,而不必暫時放入另一個單元並複製並粘貼回去?例如,我的字符串「123 - 456789」在單元格B2中,是否有編寫代碼的方法,以便可以引用單元格B2並同時用「456789」替換單元格B2,而不必將它放在另一個單元格中,然後複製並粘貼回B2。我希望你能明白我的要求。

感謝您的幫助!

+0

- 在您的INSTR,而不是「」(),並添加2中得到的起點「」。 – findwindow

回答

3

這解決部分2

Sub strings() 

Dim replace As String 
Dim bCell As Range 

For leftLoop = 2 To leftNumberOfCells 

    Set bCell = Range("B" & iRow) 
    replace = Mid(bCell, InStr(bCell, "-") + 2, 100) 
    Range("B" & iRow) = replace 

    iRow = iRow + 1 

Next leftLoop 

End Sub 
+0

僅供參考,不確定iRow正在做什麼,而只是隨你所用。 – findwindow

+0

當然......把它放在一個變量中,並在每當......時使用它!謝謝! :) – Tim

+0

我的榮幸^ _^ – findwindow

1

嘗試這種情況:

result = Split(TextToSplit, " ", 3)(2) 

分割(TextToSplit, 「」,3)將分裂上空間中的文本,並返回一個從零開始的數組。最後一個參數3將分割限制爲3個部分:第一個空間之前,第一個空間和第二個空間之間,以及其他所有內容。語句結尾的(2)返回數組的最後一個元素。

希望如果你想在第二空間,使用,幫助

+0

內容簡潔:+1 –