Я пытался создать сценарий, который сначала удалит все ненужные строки, а затем вставит функцию COUNTIFS прямо справа. Я проверил все ошибки и знаю, что проблема в формуле COUNTIFS, особенно когда я пытаюсь сослаться на текущую строку. "" = "" & .Cells(lrow, 1).Value
Любая помощь приветствуется.
Private Sub CommandButton1_Click()
With ActiveSheet.Range("B6:B1217")
For lrow = .Rows.Count To 1 Step -1
If .Cells(lrow, 1).Value = "0" Then
.Rows(lrow).Delete
Else
.Cells(lrow, 2).Value = Evaluate("CountIfs(Sheets("Jan").Range("A:A"), "" = "" & .Cells(lrow, 1).Value, Sheets("Jan").Range("F:F"), ">" & "0")")
End If
Next lrow
End With
@Tim Как правильно записать этот файл? Я просто пытаюсь понять, как использовать переменную, чтобы она генерировалась для каждой строки.


Что-то вроде этого:
Dim f
'one of these two...
f = "=COUNTIFS(A:A," & .Cells(lrow, 1).Value & ", F:F, "">0"")"
f = "=COUNTIFS(A:A,""" & .Cells(lrow, 1).Value & """, F:F, "">0"")"
.Cells(lrow, 2).Value = Sheets("Jan").Evaluate(f)
Нужны ли вам кавычки вокруг вставленного значения в формуле, зависит от того, является ли значение числовым или нет.
При использовании Evaluate вам необходимо передать ему строку, которая будет действительной формулой рабочего листа: вы не можете использовать ее для оценки VBA.