1

Итак, у меня есть лист Excel, столбец А заполнен данными (диапазон каждый раз отличается)
Я хочу заполнить пустой столбец H формулой (от H2 до последней заполненной ячейки в colA)

Это код, на который я ссылался с нескольких сайтов.
Но он заполнил только H1 и H2, где я хочу H2:H6 в этом случае.
Токовый выход с использованием xlUp.
colC, D, E, F - это то, что в данный момент можно игнорировать.

Это текущий вывод с использованием xlUp

Я пытался изменить xlUp на xlDown.
Это работало, но заполняло каждую ячейку от H2 до H(бесконечность), когда некоторые данные в colA останавливаются на row60.

Sub Try()

Dim lRow As Long
lRow = Range("A" & Rows.Count).End(xlUp).Row

Sheets("Sheet4").Select
Range("H2:H" & lRow).Select
Worksheets("Sheet4").Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"

Range("H2").AutoFill Destination:=Range("H2:H" & lRow)

End Sub

Кто-нибудь может указать на мою ошибку?

Я знаю некоторые методы с использованием активных ячеек, но я не хочу их использовать, потому что иногда я не знаю, где находится моя активная ячейка? как я не знаю, какая ячейка в настоящее время выбрана. (пожалуйста, дайте мне знать, если я неправильно понял активную клетку)

Спасибо.

1 ответ1

2

Это должно работать для вас. Он выбирает диапазон данных в столбце A, а затем смещает его в столбец H. Этот диапазон будет задан для автоматического заполнения.

Option Explicit

Dim rng As Range
Dim wsh As Worksheet

Sub Second_Try()

  Set wsh = Worksheets("Sheet4")
  wsh.Activate

  wsh.Cells(1, "H") = "ans."

  Set rng = Range(wsh.Cells(2, 1), wsh.Cells(2, 1).End(xlDown))

  Set rng = rng.Offset(0, 7)

  wsh.Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"
  Range("H2").AutoFill Destination:=rng

  'instead of these last two rows you can simply use this:
  'rng.FormularR1C1 = "=(RC[-6])/(RC[-1])"

End Sub

Я лично предпочитаю это решение, так как оно не выбирает диапазоны, а просто работает с ячейками, пока не будет пустой ячейки.

Option Explicit

Dim i As Integer
Dim wsh As Worksheet

Sub Third_Try()

 Set wsh = Worksheets("Sheet4")

 i = 2
 While wsh.Cells(i, 1) <> ""

  wsh.Cells(i, 8).FormulaR1C1 = "=(RC[-6])/(RC[-1])"

  i = i + 1
 Wend

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .