我想從字符串中選擇一個子字符串。字符串中的子字符串
例如:我想從下面的字符串中選擇從「T」開始的表號。
變化表T682(SAP TABLE)
表的起始位置不一樣,即第17位,而在表名中的字符不是恆定的。所以我基本上需要一個從第17個位置選取的子字符串,直到它找到一個空格。我正在使用下面的代碼,但它似乎並沒有工作。
Position = InStr(1, A, " ")
TableNo = Mid(A, 17, Position)
我想從字符串中選擇一個子字符串。字符串中的子字符串
例如:我想從下面的字符串中選擇從「T」開始的表號。
變化表T682(SAP TABLE)
表的起始位置不一樣,即第17位,而在表名中的字符不是恆定的。所以我基本上需要一個從第17個位置選取的子字符串,直到它找到一個空格。我正在使用下面的代碼,但它似乎並沒有工作。
Position = InStr(1, A, " ")
TableNo = Mid(A, 17, Position)
以下是你需要做的:
Dim A As String
Dim StartPosition As Integer
Dim EndPosition As Integer
A = "Changes in table T682 (SAP TABLE)"
StartPosition = InStr(1, A, "T")
EndPosition = InStr(StartPosition, A, " ")
tableno = Mid(A, StartPosition, EndPosition - StartPosition)
空間T682之前字符17,人品18表開始,所以我們只需要找到之後的空間。
GetTable函數也可以用作工作表函數,例如,在B1單元格中輸入=GetTable(A1)
返回T682。
Sub Test()
Debug.Print GetTable("Changes in table T682 (SAP TABLE)")
End Sub
Public Function GetTable(Target As Range) As String
GetTable = Mid(Target, 18, InStr(18, Target, " ") - 18)
End Function
有在你的代碼兩個錯誤:
1. INSTR的第一個參數應該是18.你想找到的起點後的第一個空間
2月中旬的最後一個參數是人物
的號碼,這樣你的代碼應該是這個樣子:
Position = InStr(18, a, " ")
TableNo = Mid(a, 18, Position - 18)
我收到一個錯誤,提示「無效的過程調用或參數」。 –
如果您嘗試執行一些無效的操作,例如獲取負數字符,就會發生這種情況。查看代碼每一步中的值。我在這裏猜測,但我認爲你需要了解VBE中的調試可能性 – Sam
另一種方式
s = "Changes in table T682 (SAP TABLE)"
Debug.Print Trim(Split(Split(s, "(")(0), "T")(1))
我假設以下。字符串的格式將是恆定的,即
T
前(
(
T*
將是(
不前空間後總是有開放的支架? –
@ DarrenBartrup-Cook是的它的確如此 –
我想說你可以在支架上使用INSTR,但是字符18之後的第一個空格也可以工作。 –