Excel - 如何折叠数据,消除空行?

Excel - 如何折叠数据,消除空行?

我有一张 3 列 20 行的表格。(A1:C20)3 列中的每一列都是 3 位数字中的 1 位。
有些行有 3 位数字,有些行是空白的。

我需要一种方法来将所有非空白的 3 位数字行从顶部开始逐一返回到 3 个单独的列中。如果将值添加到空白行,则输出会反映出来。

前任:

A2:C2 为 4 6 2
A10:C10 为 2 6 6
A18:C18 为 0 6 1

D1:F3 中的输出将是
4 6 2
2 6 6
0 6 1

我有一个解决方案:

Sub ReturnValued ()
Set cpySht = Sheets("Sheet1")
Set pstSht = Sheets("Sheet2")
i = 0
For Each cell In cpySht.Range(cpySht.Cells(1, "A"), cpySht.Cells(cpySht.Cells(Rows.Count, "A").End(xlUp).Row, "A"))
  If cell.Value <> "" Then
    i = i + 1
    pstSht.Cells(i, "A") = cell.Value
  End If
Next cell
End Sub

我只是想知道是否有更好的解决方案或带有公式的解决方案。

任何帮助都非常感谢!最好使用公式,欢迎使用宏。

答案1

Sub returnValues()

'last row used in the origin data sheet
lastRow = Sheets("sheet1").UsedRange.Rows.Count

'counter for the rows to be pasted in sheet 2
n = 1

'loop through all rows
For rowNum = 1 To lastRow
    'test if all three cells in the row have data in them:
    If Not IsEmpty(Sheets("sheet1").Cells(rowNum, 1)) And _
        Not IsEmpty(Sheets("sheet1").Cells(rowNum, 2)) And _
        Not IsEmpty(Sheets("sheet1").Cells(rowNum, 3)) Then
        'if ok, copies the entire row and paste to sheet 2
        Sheets("sheet1").Cells(rowNum, 1).EntireRow.Copy Sheets("sheet2").Range("A" & n)
        n = n + 1
    End If
Next rowNum

End Sub

相关内容