创建Excel表的单个列(排除零)

时间:2016-03-07 08:46:37

标签: vba excel-vba excel

我有一张Excel表格。

我需要逐行将其数据写入单个列,每行从左到右“读取”,排除零。请查看图片以便更好地理解:

What I have and what I need to get

有没有办法快速使用VBA?我尝试只使用公式并且它有效,但它需要几个步骤(创建一个列,不包括零,重写列......)并且确实减慢了整个过程。

1 个答案:

答案 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