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

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

问题描述:

我有一个500-600行的文件(具有很大的增长潜力)。它以xml文件开始,在自动读取后,创建的表格在标题信息和其余部分之间具有不同数量的空白单元格。每行存在相同数量的信息。我需要每行包含连续的数据。删除特定行中的空白单元格,直到非空单元格(VBA/Excel)

enter image description here

想象的黄色方块是细胞的信息。*网格是它对我的影响。中间是多么迫切需要它。最后是一个理想,其余的表格格式列消失了(也是我知道如何做的很容易)。

我将不胜感激任何和所有的帮助。

+0

所以,你只是想删除所有有空白数据的单元格? – cheezsteak 2014-12-02 20:23:36

+0

Ish。要么删除单元格,直到有数据的单元格取代“C”的位置,或者如果C为空,则到达该行中具有文本的下一个单元格,剪切三个单元格并将其粘贴到最初引用的C单元格中它不再是空白。 – Archaimot 2014-12-02 20:27:49

不知道我理解真正的需求,但如果你使用类似的数据:

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

+0

这是很好的,除了在我的工作表中它拿出表中的每一列,其中有一个空白。所以我想要移动的数据不断被追加 - 即使数据在正确的位置。我感谢您的帮助。 – Archaimot 2014-12-02 21:28:44

+0

编辑:它的工作! - 但不是在一张桌子。这是我可以解决的问题。谢谢。 – Archaimot 2014-12-02 21:35:19

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

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