VBA函数用于拆分逗号分隔的单元格
我需要在用逗号分隔的单元格中拆分一些数据。我知道这可以是下的文本列excel功能,但我需要它在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
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
。我试着把它放在第一位,但不起作用。