Excel VBA для заполнения столбца формулой до (последней заполненной ячейки в другом столбце)

Итак, у меня есть лист Excel, столбец A заполнен данными (диапазон каждый раз отличается)


Я хочу заполнить пустой col H формулой (от H2 до последней заполненной ячейки в colA)

это код, на который я ссылался с нескольких сайтов.


Но он только заполнил H1 и H2, где я хочу H2:H6 в этом случае.


Выходной ток через xlUp.


colC, D, E, F что-то которое можно проигнорировать на момент.

This is the current output using 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

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

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

спасибо.

3
задан ExcelNovice
19.02.2023 17:26 Количество просмотров материала 3011
Распечатать страницу

1 ответ

Это должно работать для вас. Он выбирает диапазон данных в столбце 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
2
отвечен Masoud 2023-02-21 01:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх