删除特定行中的空白单元格,直到非空白单元格(VBA / Excel)

时间:2014-12-02 20:05:35

标签: excel vba

我有一个大约500-600行的文件(具有很大的增长潜力)。它以xml文件开头,在自动读取后,创建的表在标题信息和余数之间有不同数量的空白单元格。每行存在相同数量的信息。我需要每一行包含连续的数据。

enter image description here

想象一下,黄色方块是带有信息的单元格。顶部网格是它如何来到我身边。中间是如何迫切需要它。最后一个是理想的,其余表格格式的列消失了(我也知道如何做得相当容易)。

我将非常感谢所有人的帮助。

2 个答案:

答案 0 :(得分:0)

我不确定我是否了解真正的要求,但如果您从以下数据开始:

enter image description here

然后在 A 列中为要处理的行选择单元格并运行它:

Sub FixLines()
    Dim r As Range, N As Long, i As Long, RR As Long
    For Each r In Selection
        RR = r.Row
        N = Cells(RR, Columns.Count).End(xlToLeft).Column
        If N <> 1 Then
            For i = N To 1 Step -1
                If Cells(RR, i).Value = "" Then
                    Cells(RR, i).Delete (xlShiftToLeft)
                End If
            Next i
        End If
    Next r
End Sub

你最终会得到:

enter image description here

答案 1 :(得分:0)

这是一种方法(您也可以使用代码将内容移到左侧)。

Option Explicit

Function Delete_Blank_Cells()
Dim lRow        As Long
Dim lCol        As Long
Dim LastRow     As Long
Dim LastCol     As Long

    LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    LastCol = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).column

    For lRow = 1 To LastRow
        For lCol = 1 To LastCol
            If Cells(lRow, lCol) = "" Then
                    Cells(lRow, lCol).Delete Shift:=xlToLeft
            End If
        Next
        If lRow > 5 Then
            MsgBox "Exit code - remove after testing!!"
            Exit Function
        End If
    Next
End Function