2016-12-12 44 views
0

我有一個包含很多行的excel文件。每隔一行都會滑動。我如何通過VBA修復這些滑行?如何在VBA中修復excel中的滑行?

我附上一個小模板: enter image description here

而且我能做些什麼,如果空白單元格是否有在右邊?

+1

看看[這個](http://stackoverflow.com/questions/22332889/vba-to-delete-cells-in-a-column-and-shift-left-based-on-the-cells -值)。 – CMArg

+1

選擇列A,主頁選項卡,查找下拉列表,選擇特殊,空白,刪除並選擇左移選項https://www.extendoffice.com/documents/excel/1065-excel-select-empty-cells .html#a – Slai

+0

如果空白單元格位於右側(因爲'右移'選項不存在),我該怎麼辦? – blackcornail

回答

0

這裏是轉移我的評論的VBA版本到左:

Range("A:A").SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft 

有沒有轉移到右刪除,但有幾種方法取決於佈局。更一般的方法是將空白單元格選擇移到左側,並使用插入右移,但我不確定如何在沒有VBA的情況下執行該操作。 例如,選擇列F中的空白單元格和插入在相同的行上的相應的單元格列A:

Intersect(Range("A:A"), Range("F:F").SpecialCells(xlCellTypeBlanks).EntireRow).Insert xlShiftToRight 

更多隨機空白區域A更一般的方法是分別各行移位:

With ActiveCell.Worksheet.UsedRange ' or change to a different range 
    .SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft ' to shift all non-blank cells to the left 
    For Each area In .SpecialCells(xlCellTypeBlanks).Areas 
     area.Offset(, .Column - area.Column).Insert Shift:=xlToRight 
    Next 
End With 
0

在列A假設數據到F

Sub Main() 
    Dim rng As Range, cl As Range 

    Set rng = Range("B1:B" & Range("B1").End(xlDown).Row) 

    For Each cl In rng 
     If cl.Offset(0, -1) = vbNullString Then 
      Range(Cells(cl.Row, cl.Column), Cells(cl.Row, 6)).Cut Destination:=cl.Offset(0, -1) 
     End If 
    Next cl 
End Sub 
0

試試這個:

Sub slipp_fix() 

    Set ww = Application.Selection 
    Set ww = Application.InputBox("Select first col of table", xTitleId, ww.Address, Type:=8) 

    For Each C In ww 
    If C.Value = "" Then 
    C.Select 
    Selection.Delete Shift:=xlToLeft 
    End If 

    Next 
end sub