#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
Примечание:
- Воспользуйся
Objects
. Гораздо проще обрабатывать и понимать ваш код. - Хотя
R1C1
нотация хороша, я предпочитаюA1
нотацию. Это облегчает понимание того, на какие клетки(клетки) ссылается моя формула. (Это всего лишь мое личное мнение и никоим образом не означает, что это лучший способ справиться с этой ситуацией. В конечном счете, это личный выбор)
Комментарии:
1. Нет, вы не должны его заменять. Ставьте строку
.Range("A1:A" amp; LastRow).Value = .Range("A1:A" amp; LastRow).Value
за строкой.Range("A1:A" amp; LastRow).Formula = MyFormula