使用Evaluate方法展开区间数字

标签:VBA,Evaluate方法

有时候,可能需要从单元格中提取数据,并从序列中提取数字。例如,如果数据如下所示:

(2010-2015)

我想要看到下列结果:

2010,2011,2012,2013,2014,2015

为此,可以创建一个自定义函数,以整洁的方式从单元格中提取数据。

Function Years(txt As String)

Dim Var As Variant

If txt Like "*-*" Then

Var = Split(txt, "-")

Years = Join(Evaluate("transpose(row(" & Var(0) & ":" & Var(1) & "))"), ", ")

Else

Years = Val(txt)

End If

End Function

可以看到,使用Evaluate方法,更干净,能用更少的编码来实现定制的结果。这里,使用破折号*-*作为分隔符,如果使用的是其它符号,那么使用该符号代替破折号。

图1

此外,如果希望使用不同的数据分隔符,更改以下内容:

Years = Join(Evaluate("transpose(row(" & Var(0) & ":" & Var(1) & "))"), ", ")

中的", "

例如,如果希望使用破折号,则需要更改代码为:

Years = Join(Evaluate("transpose(row(" & Var(0) & ":" & Var(1) & "))"), "- ")

注:本文学习整理自thesmallman.com,有兴趣的可以到原网站下载示例工作簿,也可以到知识星球App完美Excel社群下载示例工作簿。