2015-10-14 7 views
-1

Я ищу, чтобы заполнить ячейки, в которых отсутствуют данные в столбце B с помощью заполнителя (то есть 0), чтобы они не удалялись другим моим макросом. Я надеюсь на некоторый код VBA, который будет эмулировать следующую формулу и применить ее ко всем строкам:Заполнение конкретных пустых ячеек

= IF (B2 = "", IF (COUNT (C2: I2)> 0,0, ""), "")

Я хочу, чтобы результат этой формулы переместился в колонку B (ячейка B2 в примере выше). Цель этой формулы состоит только в том, чтобы поместить значение placeholder в столбце B, если хотя бы одна из ячеек в столбцах C: I имеет номер.

Любая помощь/уточнения высоко ценятся!

Edit: То, что я пытался добавить к макро

Sub test() 
Dim nRows As Integer: nRows = Cells(Rows.Count, 1).End(xlUp).Row 
Dim cell As Range, r As Range: Set r = Range("A2:A" & nRows) 
Dim r1 As Range: Set r1 = Range("B2:B" & nRows) 
Dim r2 As Range: Set r2 = Range("I2:I" & nRows) 

For Each cell In r2 
    If cell.Value > 0 Then 
     For Each cell In r1 
      If cell.Value = "" Then cell.Value = 0 
Next cell 

End Sub 
+0

'Я надеюсь на какой-то код VBA' - что вы пробовали? Покажите нам код, который вы пытаетесь и где он может не работать, тогда мы сможем помочь вам в его решении. SO - это не веб-сайт для написания кода. –

+0

Это код, который я нахожу в настоящее время на основе поиска на этом веб-сайте, но я все еще довольно новичок в VBA и не совсем понимаю, как перевести эту формулу выше, чтобы поместиться здесь: Редактировать: слишком долго, чтобы вставлять сюда, см. выше –

ответ

0

Это обновит столбец B (ActiveSheet.UsedRange), если по крайней мере одна ячейка в столбцах C: I имеет ряд

Option Explicit 

Public Sub setPlaceholderInColB() 
    With ActiveSheet 
     .Range("B2").Formula = "=IF(COUNT(C2:I2)>0,0,"""")" 
     .Range("B2").AutoFill Destination:=Range("B2:B" & .UsedRange.Rows.Count) 
    End With 
End Sub 
+0

Красивые, спасибо Пол. Меня всегда путают, пытаясь определить диапазоны. –