Страницы: 1
RSS
Вставка диапазона ячеек по макросу рядом с определенной ячейкой в книге
 
в макросах я ноль
прошу помочь
надо вставить строку с формулами  (выделена желтым) аналогично напротив каждой группы
их может быть тысячи
я это вижу либо по жирному тексту и прочему формату в столбце B и вставка в D19:Q19
либо по поиску вниз в том же столбце B до пустой ячейки, например B18 и вставка так же в D19:Q19
или как-то по строке с группировкой и аналогично вставлять
и так до низа
запуск через сочетание клавиш, типа написал формулу для 1 группы и запустил
 
Цитата
GLingeneer написал: их может быть тысячи
тысячи летучих формул массива...
Цитата
GLingeneer написал: запуск через сочетание клавиш, типа написал формулу для 1 группы и запустил
по сочетанию клавиш нужно запускать макрос, который не формулы расставляет, а все считает в коде, а на лист выводит уже готовый результат.
Но для это нужно знать ЧТО ваши формулы считают
Согласие есть продукт при полном непротивлении сторон
 
я же приложил файл
там есть первая строка с нужными формулами для первой группировки (желтым)
задача - автоматически "протянуть" вниз для всех группировок
вручную копировать и тысячу раз вставить - не хочется
 
Цитата
GLingeneer написал: я же приложил файл
и я же Вам ответил, что
Цитата
Sanja написал: по сочетанию клавиш нужно запускать макрос, который НЕ формулы расставляет, а все считает в коде, а на лист выводит уже готовый результат.
Согласие есть продукт при полном непротивлении сторон
 
GLingeneer, Почему не хотите через shift  скопировали выделили и сразу вставили?
Заняло 2 секунды
тыкнули в первую ячейку с формулой. Потом зажали shift и тыкнули в последнюю крайнюю внизу справа, таким образом выделили весь диапазон, после этого нажали ctrl +d или просто вставить
Изменено: Kentavrik7 - 23.05.2018 15:02:35
 
Sanja, да не суть про сочетание, можно как то по другому запускать, хоть автоматически
как мне протянуть эту формулу для 1000 группировок???

Kentavrik7, про шифт не понял
 
Цитата
GLingeneer написал: да не суть про сочетание
Да причем тут вообще сочетание!?  8-0 . Я хочу до Вас донести, что вставка макросом ФОРМУЛ (тем более таких как у Вас) это надевание штанов через голову. Макросом нужно НЕ формулы вставлять, а готовые значения, которые рассчитываются в коде, а не формулами на листе
Согласие есть продукт при полном непротивлении сторон
 
GLingeneer,Скопируйте верхнюю строку с формулами. Выделите щелчком мыши первую слева под строкой с формулами ячейку, после чего ползунком вниз опуститесь нажмите Shift на клавиатуре и на последнюю справа ячейку таблицы  Q1399 (с зажатым shift) выделится весь диапазон ячеек и правой кнопкой вставьте, формулы вставятся сразу во все выделенные ячейки.
Это конечно самый банальный вариант из всех возможных. А в остальном с макросом вам верно советуют.
Изменено: Kentavrik7 - 23.05.2018 15:20:10
 
Sanja,  я в exel-штанах неискушен и как их носить модно не знаю
вы специалист, а я просто прошу помочь решить конкретную задачу
как мне данную строку протянуть на весь лист, не нажимая 1000раз копипаст и, разумеется, только в строки группировок, а не во все подряд

если это достаточно трудоемко или нереально  - так и напишите, буду искать другие варианты
Изменено: GLingeneer - 23.05.2018 15:32:33
 
GLingeneer,Вы собственно мое сообщение вообще видели?
 
Kentavrik7,конечно
но это равносильно, что просто протянуть строку формулу за крестик
мне нужны формулы только напротив группировок
понятно, что можно перетащить на другой лист только заголовки групп, удалить пустые строки и потом уж просто протянуть
но хотелось бы всё более изящно, т.к. таких таблиц немало и они меняются со временем
 
GLingeneer, а почему в Вашем примере, в столбце 'Декабрь 2017', в первой желтой строке стоит '0'? Так формула и должна считать?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,а это какой-то косячок, вообще эта формула родилась в этой теме https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=104832&...
там и написано для чего и что она

при входе в ячейку с формулой и нажатии Enter - пересчитывает на ноль, для восстановления приходится заново ее перекопировать из другой
я про это там спросил, но тема улетела вниз...
Изменено: GLingeneer - 23.05.2018 16:34:41
 
Цитата
GLingeneer написал: а это какой-то косячок
вот так и живем - там косячек, сям косячек...Поэтому и говорю - НЕ формулы (не рабочие) надо копировать, а сразу вставлять верные значения, подсчитанные макросом.
Для Вашего примера
Код
Sub GLingeneer()
Dim arr(), I&, J&, N&, W&, lRow
Dim arrWF(0 To 11)
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet
    .Outline.ShowLevels RowLevels:=2
    arr = .Range("B5:C" & .Cells(.Rows.Count, "C").End(xlUp).Row).Value
ReDim Preserve arr(1 To UBound(arr, 1), 1 To UBound(arr, 2) + 14)
ReDim arrNew(1 To UBound(arr, 1), 1 To 14)
N = 1
For I = 1 To UBound(arr)
    If arr(I, 2) <> Empty Then
        Select Case True
            Case arr(I, 1) Like "Январь*": J = 1
            Case arr(I, 1) Like "Февраль*": J = 2
            Case arr(I, 1) Like "Март*": J = 3
            Case arr(I, 1) Like "Апрель*": J = 4
            Case arr(I, 1) Like "Май*": J = 5
            Case arr(I, 1) Like "Июнь*": J = 6
            Case arr(I, 1) Like "Июль*": J = 7
            Case arr(I, 1) Like "Август*": J = 8
            Case arr(I, 1) Like "Сентябрь*": J = 9
            Case arr(I, 1) Like "Октябрь*": J = 10
            Case arr(I, 1) Like "Ноябрь*": J = 11
            Case arr(I, 1) Like "Декабрь*": J = 12
        End Select
        If J <> Empty Then
            arrNew(N, J) = arr(I, 2): arrWF(W) = arr(I, 2): W = W + 1
        End If
    End If
    If arr(I, 2) = Empty Or I = UBound(arr) Then
        With Application.WorksheetFunction
            arrNew(N, 14) = .StDevP(arrWF) / .Average(arrWF)
        End With
        Erase arrWF: J = Empty: W = Empty: N = I + 1
    End If
Next
    .Range("D5").Resize(UBound(arrNew, 1), UBound(arrNew, 2)) = arrNew
    .Outline.ShowLevels RowLevels:=1
End With
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja,респект и спасибо! То что надо
так где 0 он просто не отображает, но их учитывает в столбе Q, правильно?
их же можно отобразить для "красоты"??
 
Цитата
GLingeneer написал: но их учитывает в столбе Q, правильно?
Нет, не учитывает. Сейчас поправлю
Цитата
GLingeneer написал: их же можно отобразить для "красоты"?
Нужно?
Согласие есть продукт при полном непротивлении сторон
 
Нули обязательно нужны, в них и был основной смысл формулы для наглядности и чтобы средн арифм в Q посчиталось на 12 месяцев
поэтому отображение нулей тоже для наглядности желательно
 
Вариант с '0'. Для проверки правильности расчетов в столбце 'S' есть несколько формул (можно его удалить)
Макрос запускается по нажатию Ctrl+q (следите за раскладкой клавиатуры РУС/ENG при запуске)

Скрытый текст
Изменено: Sanja - 24.05.2018 08:17:29
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх