标签: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社群下载示例工作簿。