字符串中的子字符串

时间:2017-06-22 13:58:52

标签: vba excel-vba excel

我正在尝试从字符串中选择一个子字符串。

示例:我想从“T”开始从下面的字符串中选择表格no。

  

表T682(SAP TABLE)中的更改

表格no的开头位置相同,即第17位,但表名中的字符不是常量。所以我基本上想要一个从第17个位置选择的子串,直到找到一个空格。我使用下面的代码,但它似乎不起作用。

JOIN

4 个答案:

答案 0 :(得分:1)

以下是您需要做的事情:

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)

答案 1 :(得分:1)

您的代码中有两个错误:
1. instr的第一个参数应该是18.你想找到起点后的第一个空格
2. mid的最后一个参数是字符数

所以你的代码应该是这样的:

Position = InStr(18, a, " ")
TableNo = Mid(a, 18, Position - 18)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

另一种方式

s = "Changes in table T682 (SAP TABLE)"
Debug.Print Trim(Split(Split(s, "(")(0), "T")(1))

我假设以下内容。字符串的格式是常量,即

  1. T
  2. 之前不会有其他资本(
  3. 只有1 (
  4. 数字T*将位于(
  5. 之前