VBA分割范围expression式

假设我有一些expression式填充这样的单元格:

Dim Sample1 As String Sample1 = "1-4,5+6,9,12-20" Dim Sample2 As String Sample2 = "1-7,8,30,20+21,45" Dim Sample3 As String Sample3 = "1-7,8,11-17" 

将该expression式转换为包含指定数字的数组的最佳方法是什么? 所以例如对于Sample1,这个expression式的数组应该包含这些值:

 1,2,3,4,5,6,9,12,13,14,15,16,17,18,19,20 

我的第一个尝试是用逗号分割expression式,然后试着弄清楚“ – ”和“+”的左右是什么,但也许有更好的办法? 你能给我一些build议如何做到最好?

+代替任何-所以他们都反应相同的第二个嵌套拆分。

 Option Explicit Function udf_All_Nums(str As String, Optional delim As String = ", ") Dim tmp As String, val As Variant, vals As Variant Dim a As Long, i As Long vals = Split(str, Chr(44)) For a = LBound(vals) To UBound(vals) vals(a) = Replace(vals(a), Chr(45), Chr(43)) val = Split(vals(a), Chr(43)) For i = val(LBound(val)) To val(UBound(val)) tmp = tmp & delim & i Next i Next a udf_All_Nums = Mid(tmp, Len(delim) + 1) 'Join(vals, delim) End Function 

在这里输入图像说明