Страницы: 1
RSS
Автозаполнение столбца формулами
 
Добрый день! Подскажите, при работе с диапазоном Excel, можно ли как-то вставив формулу в ячейку не на первой строке дать ему понять, чтобы он автозаполнял последующие строки таблицы этой же формулой в данном столбце, но не тронул уже существующие ячейки столбца? Бывает так, что вписаны значения и очень не хочется их терять...
 
Выделить весь столбец.
Ctrl+G
Выделить
Пустые ячейки
Пишите формулу. До нажатия на Enter зажимаете Ctrl.
 
способ хороший, но он распространяется только на пустые выделенные ячейки. а мне нужно, чтобы при расширении диапазона именованной таблицы эти формулы так же прописывались автоматически...
 
Может быть есть еще какие-то способы?
 
Цитата
Виталий Б: мне нужно, чтобы при расширении диапазона именованной таблицы эти формулы так же прописывались автоматически
    • пишите формулу, которая будет выбирать, что писать
    • если в столбце, помимо формулы, находятся введённые вручную значения, то вынесите их в отдельный столбец и пусть формула пишет только там, где их нет
    • умный макрос, который сам всё будет делать
Изменено: Jack Famous - 16.05.2022 15:27:25
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ещё такой вариант. В модуль листа.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Dim lo As ListObject
    For Each lo In ActiveSheet.ListObjects
        If Not Intersect(lo.DataBodyRange, Target) Is Nothing Then
            Application.EnableEvents = False
            Dim Application_Calculation As Long
            Application_Calculation = Application.Calculation
            Application.Calculation = xlCalculationManual
            
            JobListObject lo, Target
            
            Application.Calculation = Application_Calculation
            Application.EnableEvents = True
            Exit Sub
        End If
    Next
End Sub

Private Sub JobListObject(lo As ListObject, cl As Range)
    Dim flag As Boolean
    Dim cm As Range
    For Each cm In Intersect(lo.DataBodyRange, cl.EntireColumn)
        If cm.Row <> cl.Row Then
            flag = False
            If cm.Value = "" Then
                flag = True
            ElseIf Left(cm.FormulaR1C1, 1) = "=" Then
                flag = True 'Закомментировать эту строку, если не нужно вставлять формулу, если формула в ячейке уже есть.
            End If
            If flag Then
                cm.FormulaR1C1 = cl.FormulaR1C1
            End If
        End If
    Next
End Sub
Страницы: 1
Наверх