Здравствуйте, есть проблема по автопротягиванию формулы в отфильтрованном списке. Проблема в том что список получается длинный, иногда до 10к строк тянуть приходится больше минуты. Пытаюсь решить это макросом но получилось только частично. приведенный ниже макрос работает только по одному столбцу - быстро, точно и без нареканий, и если запускать по несколько раз получается быстрее чем протяжка сразу нескольких столбцов. Но хотелось бы его улучшить и заставить его как-то работать на диапазоне в несколько столбцов.
1-ая строка диапазона содержит формулы которые нужно спустить до последней строки, при этом заполнить только те которые отвечают заданному фильтру. Диапазон - строки и столбцы задаются через форму.
Данный код по работе с одним столбцом и он работает.
Код |
---|
Private Sub UFoAutoFill() Dim Col1 as string, col99 as string, _ Row1 as long, Row99 as long Col1 = UserformCol1.Value 'A, B, C, AA, AB, AC & etc Col99 = UserformCol99.Value 'A, B, C, AA, AB, AC & etc Row1 = UserformRow1.Value ' 1, 2, 100 & etc Row99 = UserformRow99.Value ' 1, 2, 100 & etc Range(Col1 & Row1 & ":" & Col1 & Row99).SpecialCells(xlCellTypeVisible).FormulaR1C1 = Range(Col1 & Row1).FormulaR1C1 'заполнение по одному столбцу Unload Userform End sub |
Ниже попытка сделать многостолбцовый диапазон, не приносят результатов, формула заполяется чередованием - получается не то чего бы хотелось.
Код |
---|
Range(Col1 & Row1 & ":" & Col99 & Row99).SpecialCells(xlCellTypeVisible).FormulaR1C1 = Range(Col1 & Row1 & ":" & Col99 & Row99 ).FormulaR1C1 |
Подскажите, что можно предпринять ? Может быть цикл, который каждый столбец будет заполнять на основании первой ячейки столбца? (циклы пока даются очень тяжело )
На всякий случай кусочки кода без переменных. (Range("A10:K10") - содержит формулы которые нужно протянуть.)
Код |
---|
Range("A10:A1000").SpecialCells(xlCellTypeVisible).FormulaR1C1 = Range("A10").FormulaR1C1 'это работает |
Код |
---|
Range("A10:K1000").SpecialCells(xlCellTypeVisible).FormulaR1C1 = Range("A10:K10").FormulaR1C1 ' "это не работает(точнее работает но не так как хотелось) |