我有一个报告导出到多个Excel工作表。每张纸上的第一行都有类似的声明。
仅在范围A1:K44中粘贴数据。数据来自"历史"转储 部分查询。
我需要从该字符串中提取范围。我尝试使用拆分和查找函数,但范围的长度发生了变化(即A1:AB53
,A15:C20
等。)
我欢迎任何关于如何提取范围的意见。
答案 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