VBA用于拆分逗号分隔单元格的函数

时间:2017-08-12 23:33:34

标签: excel vba excel-vba

我需要在一个用逗号分隔的Cell中拆分一些数据。我知道这可以是文本到列excel函数,但我需要它在VBA中,因为这个过程必须是自动的。我创建了这个函数:

Function SepararDatos(splitVal As Variant)
Dim totalVals As Long

splitVal = Split(splitVal, ",")
totalVals = UBound(splitVal)
Range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row, ActiveCell.Column + 1 + totalVals)).Value = splitVal
End Function

但我不知道为什么它不起作用。如果我将其更改为sub,它的效果很好,但这不是我需要的。有人能告诉我如何改变功能。此外,sub返回字符串,但我想返回数字。

1 个答案:

答案 0 :(得分:3)

用作公式的UDF不会影响另一个单元格的值。所以你有两种方法可以使用:

数组输入:

Function SepararDatos(splitval As String)
Dim splitval2() As String

splitval2 = Split(splitval, ",")

SepararDatos = splitval2
End Function

然后突出显示足够的输出单元格。第一个活跃:

enter image description here

然后在公式栏中输入:

=--SepararDatos(A1)

而不是按Enter键Ctrl-Shift-Enter到数组输入公式。 Excel将公式放在所有三个单元格中,{}围绕它们。这些将以数组形式链接。

--将其转换为可以按照所需方式格式化的数字

enter image description here

第二种方法,需要第二个标准:

Function SepararDatos(splitval As String, i As Long)
Dim splitval2() As String

splitval2 = Split(splitval, ",")

SepararDatos = splitval2(i - 1)
End Function

然后在第一个单元格中输入:

=--SepararDatos($A$1,COLUMN(A:A))

然后拖过来。 --将字符串转换为数字。

enter image description here

第三种方法是使用原生公式:

=--TRIM(MID(SUBSTITUTE($A$1,",",REPT(" ",999)),(COLUMN(A:A)-1)*999+1,999))

并拖延:

enter image description here