Макрос для применения серийного номера, ЕСЛИ ISBLANK

#excel #vba #excel-formula

Вопрос:

Я применил макрос для вставки ячейки serial no IF ISBLANK, и здесь я знаю, что мы можем применить это с помощью формулы, также почему я применил макрос для вставки ячейки serial no IF ISBLANK, потому что я хочу вставить ячейку serial no автоматически с применением макроса, вот почему я создал макрос для этого, и вот проблема, которую я получил (Ошибка компиляции: Аргумент не является необязательным) в этом макро

здесь я хочу, чтобы при применении макроса последовательное нет, а затем формула должна быть скрыта в этом диапазоне ячеек

 
Sub SerialNo()
  Dim LastRow As Long
  LastRow = Cells(Rows.count, "B").End(xlUp).Row
  With Range("A1:A" amp; LastRow).FormulaR1C1 = "=IF(ISBLANK(RC[1]),"""",COUNTA(R1C2:RC[1]))"
  Range.Value
End Sub

 

Ответ №1:

Это то, что вы пытаетесь сделать?

 Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim MyFormula As String
    Dim LastRow As Long
    
    '~~> This is your formula
    MyFormula = "=IF(ISBLANK(B1),"""",COUNTA($B$1:B1))"
    
    '~~> Change this to relevant sheet
    Set ws = Sheet1
  
    With ws
        LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Range("A1:A" amp; LastRow).Formula = MyFormula
    End With
End Sub
 

Если вы хотите позже преобразовать формулу в значения, вы можете использовать

 .Range("A1:A" amp; LastRow).Value = .Range("A1:A" amp; LastRow).Value 
 

Примечание:

  1. Воспользуйся Objects . Гораздо проще обрабатывать и понимать ваш код.
  2. Хотя R1C1 нотация хороша, я предпочитаю A1 нотацию. Это облегчает понимание того, на какие клетки(клетки) ссылается моя формула. (Это всего лишь мое личное мнение и никоим образом не означает, что это лучший способ справиться с этой ситуацией. В конечном счете, это личный выбор)

Комментарии:

1. Нет, вы не должны его заменять. Ставьте строку .Range("A1:A" amp; LastRow).Value = .Range("A1:A" amp; LastRow).Value за строкой .Range("A1:A" amp; LastRow).Formula = MyFormula