Сценарий выглядит следующим образом:
Sub Macro1()
Lastrow1 = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count,5).End(xlDown).Row
For y = 2 To Lastrow1
If Cells(y, 6) <> "" Then
Cells(y, 7).Formula = "=Networkdays(E2,F2,$S$2:$S$14)"
Else
Exit For
End If
Next y
End Sub
Мои проблемы начинаются с формулы здесь; например, я хотел бы выбрать E2, F2 и те константы «$ S $ 2: $ S $ 14», а затем перейти к E3, F3 и так до тех пор, пока в «F columns» он ничего не найдет и цикл не завершится.
Есть намек на это? Вероятно, об этом задавали довольно много раз, но как только вы начнете, проблема будет не только в отсутствии знаний, но и в отсутствии умения задавать правильный вопрос.
Может быть, что-то вроде приведенного ниже кода.
Он находит последнюю строку (используйте xlUp
, а не xlDown
) и помещает формулу между строкой 2 и последней строкой в столбце G.
Public Sub InsertFormula()
Dim LastRow As Long
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
'Put the formula in the range G2:G & LastRow
.Range(.Cells(2, 7), .Cells(LastRow, 7)).Formula = "=Networkdays(E2,F2,$S$2:$S$14)"
End With
End Sub
Как насчет:
Sub Macro1()
Lastrow1 = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 5).End(xlDown).Row
For y = 2 To Lastrow1
If Cells(y, 6) <> "" Then
Cells(y, 7).Formula = "=Networkdays(E" & y & ",F" & y & ",$S$2:$S$14)"
Else
Exit For
End If
Next y
End Sub
В моем случае это решено, спасибо, я просто не знал, как правильно указать переменную include в части формулы
хорошо, я очень стараюсь прикусить язык. Все, что я скажу, это то, что я пробовал это с выбранным
Sheet2
, и код не работал успешно после того, как я разобрал ошибкуVariable not defined
, и мойLastrow1
всегда был 1048576, потому что он начинается в строке 1048576 и смотрит вниз оттуда. Пробежал :)