Excel 有没有什么好方法可以将非连续数组设置为连续1D数组?

Excel 有没有什么好方法可以将非连续数组设置为连续1D数组?,excel,vbscript,vba,Excel,Vbscript,Vba,只是出于好奇-有没有什么好方法可以将非连续数组作为连续1D数组 假设Arr(9)=(2,5,25,14,)到Arr(4)=(2,5,25,14) 请引导 谢谢 首先,如何填充阵列?如果您没有将一个范围直接传输到数组中,那么您可能有可能验证空单元格并将其从数组中删除,而不是在稍后的阶段执行此操作 以下是用于删除空项的基于循环的代码: Dim Arr as Variant , vArr2 as Variant Dim d as Object Dim i as integer, j as integ

只是出于好奇-有没有什么好方法可以将非连续数组作为连续1D数组

假设Arr(9)=(2,5,25,14,)到Arr(4)=(2,5,25,14)

请引导

谢谢

  • 首先,如何填充阵列?如果您没有将一个范围直接传输到数组中,那么您可能有可能验证空单元格并将其从数组中删除,而不是在稍后的阶段执行此操作
以下是用于删除空项的基于循环的代码:

Dim Arr as Variant , vArr2 as Variant
Dim d as Object
Dim i as integer, j as integer

Set d = CreateObject("Scripting.Dictionary")

'-- populate data array
vArr(1) = "10"
vArr(2) = "55"
vArr(3) = ""
vArr(4) = "27"
vArr(5) = ""

j = 1
For i = LBound(vArr) To UBound(vArr)
    If vArr(i) <> "" Then
       d.Add vArr(i), j
       j = j + 1
    End If
Next i

'-- pass into a new array
vArr2 = d.Keys

'-- output into sheet
    Sheets(1).Range("B4").Resize(1, _
             UBound(Application.Transpose(d.Keys))) = d.Keys
Dim Arr作为变型,vArr2作为变型
将d作为对象
尺寸i为整数,j为整数
Set d=CreateObject(“Scripting.Dictionary”)
“--填充数据数组
vArr(1)=“10”
vArr(2)=“55”
vArr(3)=“
vArr(4)=“27”
vArr(5)=“
j=1
对于i=LBound(vArr)到UBound(vArr)
如果vArr(i)“,那么
d、 加上vArr(i),j
j=j+1
如果结束
接下来我
“--传递到新数组中
vArr2=d.键
“--输出到工作表中
图纸(1)。范围(“B4”)。调整大小(1_
UBound(Application.Transpose(d.Keys))=d.Keys

除了循环并将值添加到新数组中之外?@ja72是的,你是对的!!有吗?我会说没有。不要害怕循环。@ja72如果我使用了
Arraylist
?假设Arr(9)不是一个1D数组,但它是一个
Arraylist
@TukaiRakshit你能看看答案和注释吗?是的,你是对的!数组将由范围填充。那么该怎么办?@Tukai如果1D数组由范围填充,有几种方法可以省略空单元格。您可以循环删除空单元格,这是最基本的方法。如果将所有值放入一个字符串中,甚至一个
Regex
也可能会有所帮助。不知道
Regex
需要如何使用。任何来自你这边的帮助!你能帮我吗?