返回列表 上一主題 發帖

請問在字串中找字元的進階用法

請問在字串中找字元的進階用法

各位大大
請問一下, 我有一個在字串中搜尋字元的問題, 如下
我的字串很長 , 裡面有6個 _ , 如果我要找第五個 _ , 有沒有比較好的方法呢?
我知道有InStr這個方式可以用 , 如 Instr(38, 字串, "_")
但是我的字串有時候長度會變, 如果指定38位置開始找, 有時後會抓錯
有沒有什麼方法可以直接找到字串中五個 _ 的位置?
感謝

字串=TouchTest_check_20180630_104354_108F02_68HR-R_K8
MLB

隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog
已收集6200篇 EXCEL函數

TOP

本帖最後由 JasnH 於 2019-10-19 18:25 編輯

Sub test1()
    p = 5       'The position of nth "_"
    tx = Cells(1, 1)
    For i = 1 To Len(tx)
        If Mid(tx, i, 1) = "_" Then jo = jo & " " & i
    Next i
    s = Split(Mid(jo, 2))
    Ans = s(p - 1)
    MsgBox "The position of " & p & "th ""_"" is " & Ans
End Sub

TOP

感謝兩位大大的解答, 我後來找了一下資料
我想到下面這個方式也可以算出來

Sub test()
Dim no As Byte
Dim Data As String

Data=Cells(3,32).Value   ''''' 字串位置
no=Cells(5,32).Value       ''''' 要找第幾個 _
Count=0
data_split = Split(Data , "_")
For i=1 To no
   Count = Count+1+Len(data_split(i-1))
Next i
MsgBox("第" & no & "個_的位置是" & Count)
EndSub
MLB

TOP

Sub TEST_01()
Dim T$, TR, V%
T = "TouchTest_check_20180630_104354_108F02_68HR-R_K8"
V = 5
TR = Split(T, "_")
If V <= 0 Or UBound(TR) < V - 1 Then MsgBox "超過取字範圍!!": Exit Sub
MsgBox TR(V - 1)
End Sub
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題