VBA函数来分割逗号分隔的单元格

我需要在由逗号分隔的单元格中分割一些数据。 我知道这可以是文本列Excelfunction,但我需要它在VBA,因为这个过程必须是自动的。 我创build了这个function:

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它的效果很好,但这不是我所需要的。 有人可以告诉我如何改变function工作。 也是子返回string,但我想返回数字。

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

数组input:

 Function SepararDatos(splitval As String) Dim splitval2() As String splitval2 = Split(splitval, ",") SepararDatos = splitval2 End Function 

然后突出显示足够的输出单元 第一个是积极的:

在这里输入图像说明

然后在公式栏中input:

 =--SepararDatos(A1) 

而不是input命中Ctrl-Shift-Enter到数组input公式。 Excel会将公式放在所有三个单元格中,周围都是{} 。 这些将被链接在一个数组中。

把它变成数字,然后你可以用你想要的方式进行格式化

在这里输入图像说明


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

 Function SepararDatos(splitval As String, i As Long) Dim splitval2() As String splitval2 = Split(splitval, ",") SepararDatos = splitval2(i - 1) End Function 

然后在你input的第一个单元格中:

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

然后拖过去。 --把string变成数字。

在这里输入图像说明


第三种方法是使用本机公式:

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

然后拖过去:

在这里输入图像说明