Цикл удаления пустых ячеек из столбца - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно удалить пустые ячейки в столбце F с F4 вниз.В каждой строке будет от 0 до множества пустых ячеек.

Я очень новичок в кодировании, и мой самый успешный подход - это взять код, который сделал что-то похожее, и уничтожить его.

Вот код, который работал для чего-то подобного:

Sub test()
Dim i As Long
With Worksheets("Sheet1")
    For i = 4 To .Cells(.Rows.Count, "F").End(xlUp).Row
        Do While .Cells(i, "F").Value2 = .Cells(1, "B").Value2 And Not 
IsEmpty(.Cells(i, "F"))
            .Cells(i, "F").Resize(1, 4).Delete shift:=xlToLeft
        Loop
Next i
End With
End Sub

И вот что я пытался сделать с ним:

Sub test()
Dim i As Long
With Worksheets("sheet1")
For i = 4 To .Cells(.Rows.Count, "F").End(xlUp).Row
    Do While .Cells(i, "F").Value2 = ""
        .Cells(i, "F").Resize(1, 4).Delete shift:=xlToLeft
    Loop
Next i
End With
End Sub

Я не получаю никаких ошибок при запуске,но это тоже не работает.

Любое руководство приветствуется!

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Попробуйте:

Sub test()
Dim i As Long
Dim lastrow as integer

With Worksheets("sheet1")
lastrow= cells(rows.count, 6).end(xlup).row     'define your last filled row

For i = 4 To lastrow
    if IsEmpty(cells(i,6))= TRUE then
    Cells(i,6).Delete shift:=xlToLeft
Next i
End With
End Sub

Однако обычно я считаю, что удаление ячеек снизу вверх работает лучше.Итак .... возможно, вы могли бы попробовать это также:

Sub test()
Dim i As Long
Dim lastrow as integer

With Worksheets("sheet1")
lastrow= cells(rows.count, 6).end(xlup).row     'define your last filled row

For i = lastrow To 4 step -1
    if IsEmpty(cells(i,6))= TRUE then
    Cells(i,6).Delete shift:=xlToLeft
Next i
End With
End Sub
0 голосов
/ 26 сентября 2018

Предполагается, что 1. цель кода - исключить только пробелы в столбце F 2. удаление всей строки не вызывается.3. удаление ячейки xlLeft непреднамеренно поместит содержимое (или пустую ячейку) столбца G в столбец F. Можно попробовать следующий код

   Sub test()
   Dim i As Long
   With Worksheets("sheet1")
   For i = .Cells(.Rows.Count, "F").End(xlUp).Row To 4 Step -1
       If .Cells(i, "F").Value2 = "" Then
      .Range(.Cells(i + 1, "F"), .Cells(.Cells(.Rows.Count, "F").End(xlUp).Row, "F")).Cut
      .Cells(i, "F").Select
      .Paste
       End If
    Next i
    End With
    End Sub
0 голосов
/ 26 сентября 2018

Вы удаляете пустые ячейки, сдвигая ячейки вправо на их месте.Если эти ячейки тоже пустые, ничего не изменится.Если вы хотите вместо этого удалить всю строку, измените код следующим образом:

Sub test()
Dim i As Long
With Worksheets("sheet1")
For i =  .Cells(.Rows.Count, "F").End(xlUp).Row to 4 Step-1
    IF .Cells(i, "F").Value2 = ""
        .Cells(i, "F").entirerow.Delete shift:=xlUp
    Loop
Next i
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...