首页 文章

查找First和Last非空单元格将范围移至顶部

提问于
浏览
0

我有一个要求,我需要将xml文档导入excel文件并在下面重新排列一个关于导入后文件的样子的示例,其中数据可从A到F列获得 .

导入后

After Import

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

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

最终输出

Final output

我试图找到第一个非空和最后一个非空单元格 . 但不确定如何选择细胞范围并转移到第一个细胞 . 你能帮助我吗?

先感谢您...

2 回答

  • 1

    您可以使用 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
    
  • 0

    试试这个(未经测试):

    With Range("B:E")
        .Resize(.SpecialCells(xlCellTypeConstants).EntireRow.Rows(1).Row - 1).Delete xlShiftUp
    End With
    

相关问题