2017-02-01 142 views
4

如何從VBA字符串數組中提取第n個元素?從VBA字符串數組中獲取第n個元素

我有一個字符串,如:TEST - 2017/01/20 = Invoice

我希望儘可能簡明扼要提取出來的第二和第三個元素。我嘗試一些Javascripty這樣的,這是不行的,所以必須有一個VBA方式:

Dim Report As String 
Dim CurrLine As String 
Dim CurrDate As String 
Dim CurrTask As String 

CurrLine = "TEST - 2017/01/20 = Invoice" 
CurrDate = Trim(Split(CurrLine, '-')[1]) 
CurrTask = Trim(Split(CurrLine, '=')[1]) 
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34) 

//result: "2017/01/20","Invoice" 
+0

這似乎是一個非常低效的方式產生,因爲許多字符串連接的CSV ,所以如果它開始得到你可以'加入'字符串並用全部的正則表達式代替全部。 – Slai

回答

4

一個可能的解決方案

Dim Report As String 
Dim CurrLine As String 
Dim CurrDate As String 
Dim CurrTask As String, St 


CurrLine = "TEST - 2017/01/20 = Invoice" 
St=Split(replace(CurrLine, "=","-"),"-") 
CurrDate = St(1) 
CurrTask = St(2) 
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34) //result: "2017/01/20","Invoice" 
+0

看起來很有效率,我也可以這樣做:'Dim Report as String,CurrLine,CurrDate,CurrTask,St'? *目標是在儘可能多的單行上做盡可能* – crashwap

+1

絕對,但是currline和followings將有數據類型變體,而不是字符串 – h2so4

+0

所以我可以省略'as String'位,只需使用Dim Report,CurrLine ,CurrDate,CurrTask,St'和代碼仍然可以正常工作..? – crashwap

3

我會用@ H2SO4與替代解決方案(尤其是如果它是一個工作相關的任務),但如果你是「花哨」編碼的粉絲,這個工程還有:

Option Explicit 

Public Sub Test() 

    Dim strtest As String 

    strtest = "Test - 2017/1/20 = Invoice" 

    Debug.Print Trim(Split(strtest, "-")(1)) 
    Debug.Print Trim(Split(strtest, "=")(1)) 
    Debug.Print Trim(Split(Trim(Split(strtest, "-")(1)), "=")(0)) 

End Sub 
相關問題