我需要在一个用逗号分隔的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返回字符串,但我想返回数字。
答案 0 :(得分:3)
用作公式的UDF不会影响另一个单元格的值。所以你有两种方法可以使用:
数组输入:
Function SepararDatos(splitval As String)
Dim splitval2() As String
splitval2 = Split(splitval, ",")
SepararDatos = splitval2
End Function
然后突出显示足够的输出单元格。第一个活跃:
然后在公式栏中输入:
=--SepararDatos(A1)
而不是按Enter键Ctrl-Shift-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))
并拖延: