Всем здравствуйте! Уже очень долгое время пытаюсь понять как грамотно написать макрос, который будет объединять и заполнять ячейки в таблице по произвольно выделенному диапазону. Поскольку, скорее всего, написанное выше звучит страшно и непонятно, то распишу схему как оно должно работать: 1) В столбце А выделяется произвольное количество ячеек и запускается макрос 2) Ячейки в тех же строках, что и в А столбце объединяются в столбцах B, M, N и О 3) В столбце M вписывается формула "=СРЗНАЧ (L)" с таким же диапазоном, что мы задали в А столбце (то есть, условно, если я выделила с А1 по А7, то среднее значение выводится с L1 по L7) 4) В столбце N вписывается формула "=СТАНДОТКЛОН (L)" с таким же диапазоном, что мы задали в А столбце 5) В столбце О вписывается формула "=N/M" и переводится в % Надеюсь, что стало понятнее...
Буду очень признательна, если сможете помочь справиться с этим демоном!
P.S. Это типовая таблица, то есть всегда расположение столбцов будет именно таким и выделяться всегда будут ячейки только в А столбце. P.P.S. В файле 2 листа: Исходник и как оно должно выглядеть после макроса
Всем здравствуйте! Уже очень долгое время пытаюсь понять как грамотно написать макрос, который будет объединять и заполнять ячейки в таблице по произвольно выделенному диапазону. Поскольку, скорее всего, написанное выше звучит страшно и непонятно, то распишу схему как оно должно работать: 1) В столбце А выделяется произвольное количество ячеек и запускается макрос 2) Ячейки в тех же строках, что и в А столбце объединяются в столбцах B, M, N и О 3) В столбце M вписывается формула "=СРЗНАЧ (L)" с таким же диапазоном, что мы задали в А столбце (то есть, условно, если я выделила с А1 по А7, то среднее значение выводится с L1 по L7) 4) В столбце N вписывается формула "=СТАНДОТКЛОН (L)" с таким же диапазоном, что мы задали в А столбце 5) В столбце О вписывается формула "=N/M" и переводится в % Надеюсь, что стало понятнее...
Буду очень признательна, если сможете помочь справиться с этим демоном!
P.S. Это типовая таблица, то есть всегда расположение столбцов будет именно таким и выделяться всегда будут ячейки только в А столбце. P.P.S. В файле 2 листа: Исходник и как оно должно выглядеть после макросаNatAl
Sub u_45() a = Selection.Address b = "ABMNO" For c = 1 To 5 d = Replace(a, "A", Mid(b, c, 1)) e = Replace(a, "A", "L") With Range(d) .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .MergeCells = True End With If c = 3 Then Range(d).Formula = "=AVERAGE(" & e & ")" If c = 4 Then Range(d).Formula = "=STDEV(" & e & ")" If c = 5 Then Range(d).FormulaR1C1 = "=RC[-1]/RC[-2]" Next With Range(a).Resize(Cells(Selection.Count, 1).Row, 15) .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End With End Sub
[/vba]наверное
как-то так [vba]
Код
Sub u_45() a = Selection.Address b = "ABMNO" For c = 1 To 5 d = Replace(a, "A", Mid(b, c, 1)) e = Replace(a, "A", "L") With Range(d) .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .MergeCells = True End With If c = 3 Then Range(d).Formula = "=AVERAGE(" & e & ")" If c = 4 Then Range(d).Formula = "=STDEV(" & e & ")" If c = 5 Then Range(d).FormulaR1C1 = "=RC[-1]/RC[-2]" Next With Range(a).Resize(Cells(Selection.Count, 1).Row, 15) .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End With End Sub
Nic70y, спасибо большое! Выглядит очень лаконично, но VBA что-то сильно ругается. Когда с Вашего файла запускаю, то пишет, что процедура недопустимая (Invalid procedure call or argument). Когда перекинула в свой док, то он захотел объявить переменные a, b, c, d и е. Назвала их Variant, потому что звучит он достаточно универсален и на остальное он тоже ругался... Теперь код он вроде читает, но не выполняет ._. Подозреваю, что я чего-то не понимаю в силу того, что спонтанно три недели назад решила познать силу макросов ахаха
Nic70y, спасибо большое! Выглядит очень лаконично, но VBA что-то сильно ругается. Когда с Вашего файла запускаю, то пишет, что процедура недопустимая (Invalid procedure call or argument). Когда перекинула в свой док, то он захотел объявить переменные a, b, c, d и е. Назвала их Variant, потому что звучит он достаточно универсален и на остальное он тоже ругался... Теперь код он вроде читает, но не выполняет ._. Подозреваю, что я чего-то не понимаю в силу того, что спонтанно три недели назад решила познать силу макросов ахаха NatAl