从字符串

时间:2015-08-26 20:13:42

标签: excel vba excel-vba

我有一个报告导出到多个Excel工作表。每张纸上的第一行都有类似的声明。

  

仅在范围A1:K44中粘贴数据。数据来自"历史"转储   部分查询。

我需要从该字符串中提取范围。我尝试使用拆分和查找函数,但范围的长度发生了变化(即A1:AB53A15:C20等。)

我欢迎任何关于如何提取范围的意见。

1 个答案:

答案 0 :(得分:0)

只需使用Split()将字符串拆分为数组,然后获取第5个元素(index = 4):

Const SOME_TEXT As String = "Paste Data in range A1:K44 only. Data to come from ""History"" dump in Part Inquire."

Dim strRange As String
strRange = Split(SOME_TEXT)(4)

Debug.Print strRange

输出:

A1:K44

如果显示的文字不是那么一致,您可以使用正则表达式来提取字符串中显示的第一个范围:

Const SOME_TEXT As String = "This string has A1:K44 in it but is inconsistent with the rest."

Dim re
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\b[A-Z]{1,3}\d+:[A-Z]{1,3}\d+\b"

If re.Test(SOME_TEXT) Then
    Debug.Print re.Execute(SOME_TEXT)(0)
End If