为什么VBA函数"split"返回一个二维数组而不是一维数组?

Cal*_*vin 0 arrays excel vba split excel-vba

当我使用函数split将字符串分解为数组时,我得到2个不同的结果.

如果我在代码中键入字符串,则返回的是一维数组-array(0),array(1),array(2)

values_array = Array(Split("value1, value2", ","))
Run Code Online (Sandbox Code Playgroud)

但是,如果从单元格或其他东西读取值,则返回是二维数组 - 数组(0,0),数组(0,1),数组(0,2)

values_array = Array(Split(row.Columns(2).Value, ","))
Run Code Online (Sandbox Code Playgroud)

PS.在"行"上方的代码行中,作为范围变暗

它可能看起来很愚蠢,但我这样尝试它并没有用

values_array = Array(Split(Format(row.Columns(2).Value, "@"), ","))
Run Code Online (Sandbox Code Playgroud)

Mar*_*oom 5

二者Array(Split("value1, value2", ","))Array(Split(row.Columns(2).Value, ","))创建一个二维阵列.

Split函数返回一个数组.
Array函数采用可变数量的参数并从中生成一个数组.

因此,在这两种情况下,你正在与它本身就是一个数组一个元素的数组.
如果你对照片感觉更舒服,这就是它

拆分结果的数组

哪里a已经设置为Array(Split("value1, value2", ",")).


由您来了解程序如何存储数据,但您可以考虑删除对该Array函数的调用.