Цикл вставки формулы, пока следующая ячейка в диапазоне не станет пустой - PullRequest
2 голосов
/ 11 февраля 2012

Я пытаюсь вставить формулу рядом с диапазоном ячеек, но только ту, которая содержит значение, скрипт должен зациклить, пока следующая ячейка в диапазоне не станет пустой. Например, столбец Листа 1 A содержит дату до строки 12, тогда я хотел бы вставить формулу в столбец D2:D12 С уважением

Ответы [ 5 ]

3 голосов
/ 11 февраля 2012

Как это?

Option Explicit

Sub Sample()
    Dim lastRow As Long, i As Long
    Dim ws As Worksheet

    Set ws = Sheets("Sheet1")

    lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

    With ws
        For i = 1 To lastRow
            If Len(Trim(.Range("A" & i).Value)) <> 0 Then _
            .Range("D" & i).Formula = "YOUR FORMULA"
        Next i
    End With
End Sub
2 голосов
/ 11 февраля 2012

Когда вы смотрите вниз на первую пустую ячейку, вы можете избежать цикла и использовать

Код включает в себя тест, чтобы убедиться, что код не выполняется, если весь столбец A пуст -т. е. если диапазон от A1 вниз распространяется до нижней части листа, а A1 пусто

Этот код добавляет образец формулы, связывающий каждую ячейку в столбце D с соответствующей строкой в ​​столбце B

Sub FillData()
    Dim rng1 As Range
    Set rng1 = Range([a1], [a1].End(xlDown))
    If Not (rng1.Rows.Count = Rows.Count And Len([a1].Value) = 0) Then rng1.Offset(0, 3).FormulaR1C1 = "=RC2"
End Sub
1 голос
/ 14 февраля 2012

Это простое решение, встроенное в Excel, если вы не хотите копировать в первый пробел, перепрыгните через пробел и продолжайте копирование:

Введите формулу в первой ячейке вашего диапазона, и, пока она находится в столбце справа или слева от диапазона заполненных ячеек, просто дважды щелкните обработчик черного ящика в правом нижнем углу. угол клетки. Это автоматически скопирует вашу формулу в последнюю непустую ячейку диапазона.

1 голос
/ 13 февраля 2012

Попробуйте это:

Range("A:A").SpecialCells(2).Areas(1).Offset(, 3).Formula = "MyFormula"
1 голос
/ 11 февраля 2012

Мне нравится начало Сида, но когда у вас есть диапазон строк, вы можете вставить формулу в столбец D сразу, без зацикливания, несколькими способами, вот один из них:

Option Explicit

Sub AddFormula()
    Dim LR As Long
    LR = Range("A" & Row.Count).End(xlUp).Row
    Range("D2:D12").Formula = "=A2 + 7"  'just an example of a formula
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...