VBA заполнить пустую ячейку с помощью Null с помощью usedrows на листе - PullRequest
0 голосов
/ 17 октября 2019

У меня есть рабочая книга с 44 столбцами, мне нужно отфильтровать незаполнения из столбца №44 и из 1-го столбца я хочу выбрать пробелы и заполнить его «нулем» (я не хочу использовать поиск и замену).

Ниже мой код, который я пробовал.

Dim Xrow As Long, WS As Worksheet, dng As Range
Xrow = Cells(Rows.Count, "A").End(xlUp).Row

With ActiveSheet
     Set WS = ActiveSheet
     Set dng = .Range("A2:A" & Xrow)
     WS.Range("A1:AR1" & Xrow).AutoFilter Field:=44, Criteria1:="<>"

     WS.Range("A1:AR1" & Xrow).AutoFilter Field:=1, Criteria1:="="
     Range("A1").Select
     ActiveCell.Offset(1, 0).Select

     Do Until ActiveCell.EntireRow.Hidden = False
         ActiveCell.Offset(1, 0).Select
     Loop

     dng.SpecialCells(xlCellTypeVisible).Value = "Null"
     Range("A1:AR1").AutoFilter

End With

1 Ответ

1 голос
/ 17 октября 2019

Из вашего вопроса я не совсем уверен, как должен выглядеть конечный результат, но из того, как написан код, есть только одна возможная интерпретация. Этот код поместит "Null" во все пустые ячейки столбца 1, которые имеют непустую ячейку в столбце 44 той же строки. Это более простой подход.

Dim lastrow As Long
Dim cll As Range
Dim ws As Worksheet

Set ws = ActiveSheet
lastrow = ws.Cells(Rows.Count, "A").End(xlUp).Row

For Each cll In ws.Range("A2:A" & lastrow).SpecialCells(xlCellTypeVisible)
    If ws.Cells(cll.Row, 44).Value2 <> vbNullString And cll.Value2 = vbNullString Then
        cll.Value2 = "Null"
    End If
Next cll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...