我有 csv 文件形式的時間戳,其中每個字串如下所示:
TT_TU_MN009,"5009","200001010000","-1.8","3","4"
TT_TU_MN009,"5009","200001010200","-1.7","10","1"
TT_TU_MN009,"5009","200001011400","1","10","1"
...
我的目標是將該字串(不帶雙引號)中的第二個、第三個和第四個位置提取到其自己的列中:
- 5009
- 200001010000
- -1.8
我在第一專欄中成功實現了這個目標
=LEFT(A2;SEARCH(",";A2)-1)
但不知道如何為其他 2 個位置做到這一點。不用VBA可以實現嗎?
先感謝您
A
答案1
我想建議兩種不同的方法從單元格中的文字字串中提取第 n 個文字。
方法一:
單元格中的公式
J16:=TRIM(MID(SUBSTITUTE("""" & $J$13& REPT(" ",6),"""",REPT(CHAR(32),255)),2*255,255))
注意
2*255確定文字的位置,在 中J13,5009是第二個單字/文字。由於
20000101000該位置是第四個,因為公式,在其之前算作第三個,因此對於單元格中的公式,將中的公式J17替換2*255為4*255和。6*255-1.8J18
方法二:
它由VBA巨集組成,是一個UDF(使用者定義函數)。
- 按任一Alt+F11或者右右鍵S表 TAB 和彈出式選單中的點擊檢視程式碼取得 VB 編輯器。
- C奧比&磷將此程式碼作為模組使用。
Function FindWord(Source As String, Position As Integer)
Dim arr() As String
arr = VBA.Split(Source, ",")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
FindWord = ""
Else
FindWord = arr(Position - 1)
End If
End Function
- 單元格中的公式
J3:=SUBSTITUTE(J1,CHAR(34),"") - 在儲存格中輸入此公式
J5:=FindWord(J3,2)
注意
- 在此公式中
2確定單元格中的第二個單字/文本,以便下一個單字/文本,依此類推=FindWord(J3,3)。
如果需要將所有內容放在一個儲存格中,您可以使用 CONCATENATION。




