首页 > 解决方案 > 查找第一个和最后一个非空单元格将范围移动到顶部

问题描述

我有一个要求,我需要将 xml 文档导入到 excel 文件中,并将其重新排列在一个关于导入后文件外观的示例下方,其中数据可从 A 列到 F 列。

导入后

导入后

现在我有一组预定义的列,我需要根据第一列中的空白单元格移动该组。

在上面的示例中,B 列到 E 列被分组,B 列的第一个非空单元格从第 4 行开始。然后我需要在 B 列中找到最后一个非空单元格,这里是 B10。
现在我需要将所有数据从 B4 到 E10 范围移动到顶部。如下图

最终输出

最终输出

我试图找到第一个非空单元格和最后一个非空单元格。但不确定如何选择单元格范围并移动到第一个可用的单元格。请问有人可以帮我吗?

先感谢您...

标签: xmlvbaexcel

解决方案


您可以只使用一个firstRowlastRow变量,创建范围,然后剪切/移动到B1

Sub moveGroup()
Dim rng As Range
Dim firstRow As Long, lastRow As Long
With Columns("B")
    If .Cells(1, 1) <> "" Then  ' Remember Cells(1,1) is RELATIVE to the range "Column B"
        firstRow = 1
    Else
        firstRow = .Cells(1, 1).End(xlDown).Row
    End If
    lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    Debug.Print "First row is: " & firstRow & "; Last row is: " & lastRow
End With

Set rng = Range("B" & firstRow & ":E" & lastRow)
rng.Cut Destination:=Range("B1")
Application.CutCopyMode = False
End Sub

推荐阅读