我有一张Excel表格。
我需要逐行将其数据写入单个列,每行从左到右“读取”,排除零。请查看图片以便更好地理解:
有没有办法快速使用VBA?我尝试只使用公式并且它有效,但它需要几个步骤(创建一个列,不包括零,重写列......)并且确实减慢了整个过程。
答案 0 :(得分:1)
要将范围中的所有非空值复制到单个列:
Dim source(), arr(), r&, c&, i&
' read the data from the range
source = [A1:G3].Value2
' copy the non empty value
ReDim arr(1 To UBound(source, 1) * UBound(source, 2), 1 To 1)
For r = 1 To UBound(source, 1)
For c = 1 To UBound(source, 2)
If source(r, c) <> Empty Then
i = i + 1
arr(i, 1) = source(r, c)
End If
Next
Next
' write the data back to the sheet
[A7].Resize(i, 1) = arr