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

VBA函数用于拆分逗号分隔的单元格,vba,excel,Vba,Excel,我需要在用逗号分隔的单元格中拆分一些数据。我知道这可以是下的文本列excel功能,但我需要它在VBA,因为这个过程必须是自动的。我创建了这个函数: Function SepararDatos(splitVal As Variant) Dim totalVals As Long splitVal = Split(splitVal, ",") totalVals = UBound(splitVal) Range(Cells(ActiveCell.Row, ActiveCell.Column + 1

我需要在用逗号分隔的单元格中拆分一些数据。我知道这可以是下的文本列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还返回字符串,但我想返回数字。

用作公式的自定义项不能影响其他单元格的值。因此,您可以使用两种方法:

数组输入:

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

splitval2 = Split(splitval, ",")

SepararDatos = splitval2
End Function
然后高亮显示足够的输出单元格。第一个处于活动状态时:

然后在公式栏中键入:

=--SepararDatos(A1)
然后,按Ctrl-Shift-Enter键输入公式,而不是按Enter键。Excel将把公式放在所有三个单元格中,并在其周围有
{}
。这些将在一个数组中链接

--
将其转换为数字,然后您可以按照所需的方式进行格式化


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

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))
然后拖过去。
--
将字符串转换为数字


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

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


用作公式的自定义项不能影响其他单元格的值。因此,您可以使用两种方法:

数组输入:

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

splitval2 = Split(splitval, ",")

SepararDatos = splitval2
End Function
然后高亮显示足够的输出单元格。第一个处于活动状态时:

然后在公式栏中键入:

=--SepararDatos(A1)
然后,按Ctrl-Shift-Enter键输入公式,而不是按Enter键。Excel将把公式放在所有三个单元格中,并在其周围有
{}
。这些将在一个数组中链接

--
将其转换为数字,然后您可以按照所需的方式进行格式化


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

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))
然后拖过去。
--
将字符串转换为数字


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

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


那么您想将其作为公式输入单元格并使其工作吗?是的,可能吗?是和否,请参阅我的答案,了解三种方法,第三种方法不使用vba,而是使用本机公式。因此,您想将其作为公式输入单元格并使其工作吗?是的,可能吗?是和否,看看我的答案,有三种方法可以做你想做的事情,第三种不是使用vba,而是使用原生公式。所有这些方法都非常有效,非常感谢。只有一个问题:如何在第二个或第三个方法中有效地添加
IFERROR
。我试着把它放在第一位,但没用。它们都很好用,谢谢。只有一个问题:如何在第二个或第三个方法中有效地添加
IFERROR
。我试着把它放在第一位,但不起作用。