Страницы: 1 2 След.
RSS
Макрос "объединение ячеек"
 
Ув.форумчане подскажите пожалуйста реально ли создать макрос который бы объединял ячейки с одинаковым значением. Наглядно в примере.
 
пример
 
Ух Вам сейчас за такое :-)))
 
{quote}{login=Serge 007}{date=21.04.2010 09:28}{thema=}{post}Ух Вам сейчас за такое :-))){/post}{/quote}  
За что!!! Я жтолько прошу совета?
 
За  "объединение ячеек".  
Хуже наверное только тему "Хелп" назвать...  
 
 
:-)))
 
Варианты без макросов: структура, промитоги; сводная.  
Z.
 
{quote}{login=Z}{date=21.04.2010 09:47}{thema=}{post}Варианты без макросов: структура, промитоги; сводная.  
Z.{/post}{/quote}Z, тут Вы наверное погорячились ;-)  
 
Или Вы думали что мыслей про сводную у меня не будет? :-)))  
 
Листз: "а надо …." ИМЕННО так сделаете? без макросов?
 
{quote}{login=Serge 007}{date=21.04.2010 09:53}{thema=Re: }{post}Лист3{/post}{/quote}.
 
Уходите от объединения ячеек. Два варианта с условным форматированием.
 
Можно попробывать этот макрос
 
Есть похожая проблема, но учитывая количество макросов, которые используются в файле, делать объединение ячеек самоубийство, никто никаких новых способов не нашел(придумал), как избавляться от этого. Есть большой соблазн объединения ячеек, чтобы сделать файл более читабильным, но страшно.
 
Можно лишних Иванов/Петров/Сидоров белым шрифтом сделать (и всех в рамочку) - на функционал не повлияет, а с виду как будто объединены :)
 
Кстати, тоже самое и у ТС - в центре чёрным, остальное белым.  
Можно макросом в принципе сделать - перебором определить количество и адрес диапазона с одинаковыми, поменять нужным цвет шрифта.  
Если нужно объединять по-горизонтали, то можно применить форматирование по центру выделения.
 
{quote}{login=Hugo}{date=26.10.2011 04:45}{thema=}{post}Кстати, тоже самое и у ТС - в центре чёрным, остальное белым.  
Можно макросом в принципе сделать - перебором определить количество и адрес диапазона с одинаковыми, поменять нужным цвет шрифта.  
Если нужно объединять по-горизонтали, то можно применить форматирование по центру выделения.{/post}{/quote}  
 
Нет, тут по вертикали именно с фамилиями интересовало и именно с определением диапазона, ну и выделение белым тоже хорошая идея :) Просто как в найденном диапазоне брать среднее значение? Я знаю метод отрезков только, но его долго составлять. Может кто знает более простое решение, как в найденном диапазоне текст ячейки, которая в центре диапазона оставить черным, а текст остальных ячеек в этом диапазоне сделать белым?
 
Как брать среднее?  
Определить сколько всего в группе, разделить на 2 без остатка.  
И от начала отсчитываем.  
Но на Вашем примере неплохо смотрится с первым полем чёрным, остальные белые - так проще сделать (просто в цикле все повторы красим белым).
 
{quote}{login=Hugo}{date=26.10.2011 05:13}{thema=}{post}Как брать среднее?  
Определить сколько всего в группе, разделить на 2 без остатка.  
И от начала отсчитываем.  
Но на Вашем примере неплохо смотрится с первым полем чёрным, остальные белые - так проще сделать (просто в цикле все повторы красим белым).{/post}{/quote}  
 
Это просто пример у меня, на самом деле у Петрова, Иванова, Сидорова может быть по 200-300 позиций. И в этом случае вся красота пропадает. Вот думаю, может макрос на объединение ячеек сделать последним и сохранять книгу как "книга с объединенными ячейками" и не думать о последствиях)
 
Так если по 200-300 - так в основном менеджеров на экране видно вообще не будет :)  
У меня одновременно видно ~40 строк.
 
Должно быть похоже на это, но ругается на строчку Then Range, не вижу почему... Макрос на листе.
 
Что то не то делает.  
Для начала эту строку так исправьте (точку в начале уберите):  
 
Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Select
 
Не, разобрался, заработало:  
 
Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge  
 
Лишняя точка и то, что это ListObject - его "разлистить" нужно.  
 
Но фамилия уходит вниз - ещё форматом сверху покрыть вероятно нужно :)
 
{quote}{login=Hugo}{date=26.10.2011 06:16}{thema=}{post}Не, разобрался, заработало:  
 
Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge  
 
Лишняя точка и то, что это ListObject - его "разлистить" нужно.  
 
Но фамилия уходит вниз - ещё форматом сверху покрыть вероятно нужно :){/post}{/quote}  
 
Лишняя точка это да, но я не понял в плане "разлистить", можно этот кусочек выложить?
 
Я вручную сделал - превратил List в Range. Теперь не вернуть :)  
Шучу:)  
 
Sub Macro1()  
'  
' Macro1 Macro  
' Macro recorded 26.10.2011 by Hugo  
'  
 
'  
   ActiveSheet.ListObjects("List1").Unlist  
End Sub
 
{quote}{login=Hugo}{date=26.10.2011 06:25}{thema=}{post}Я вручную сделал - превратил List в Range. Теперь не вернуть :)  
Шучу:)  
 
Sub Macro1()  
'  
' Macro1 Macro  
' Macro recorded 26.10.2011 by Hugo  
'  
 
'  
   ActiveSheet.ListObjects("List1").Unlist  
End Sub{/post}{/quote}  
 
Что-то мне не очень это помогло, выложите целиком заработавший макрос, пожалуйста)
 
{quote}{login=Евгений}{date=26.10.2011 04:16}{thema=}{post}Есть похожая проблема...{/post}{/quote}Евгений, а зачем Вы снова свой файл показываете, с которым уже давно разобрались? Да ещё и в чужой теме...
 
{quote}{login=Юрий М}{date=26.10.2011 06:43}{thema=Re: }{post}{quote}{login=Евгений}{date=26.10.2011 04:16}{thema=}{post}Есть похожая проблема...{/post}{/quote}Евгений, а зачем Вы снова свой файл показываете, с которым уже давно разобрались? Да ещё и в чужой теме...{/post}{/quote}  
 
Юрий, разбирались с ним по другому поводу, а тут чтобы не рисовать новый, я выложил этот, он подходит для данных целей. Вот. Плюс зачем создавать новую тему, если есть уже похожая...
 
По вопросу: зачем Вам объединять ячейки, если сумма выводится по одному менеджеру (мой файл)? Объединённые - вообще плохая штука. Годится только для оформительских целей в заголовках таблицы. А как имитировать - Вам подсказали.
 
{quote}{login=Юрий М}{date=26.10.2011 07:07}{thema=}{post}По вопросу: зачем Вам объединять ячейки, если сумма выводится по одному менеджеру (мой файл)? Объединённые - вообще плохая штука. Годится только для оформительских целей в заголовках таблицы. А как имитировать - Вам подсказали.{/post}{/quote}  
 
Юрий, спасибо за прошлый пример. Но формат отчета не совсем от меня зависит, поэтому и возник вопрос, для себя я бы оставил просто в каждой строке текст, так нагляднее, но увы.
 
Но Вы ведь сами сказали, что полный не нужно: достаточно менеджер - итоговая сумма. Объединённые в данном случае зачем? Если Петровых 200 - чем поможет объединение?
 
{quote}{login=Юрий М}{date=26.10.2011 07:16}{thema=}{post}Но Вы ведь сами сказали, что полный не нужно: достаточно менеджер - итоговая сумма. Объединённые в данном случае зачем? Если Петровых 200 - чем поможет объединение?{/post}{/quote}  
 
Данное пожелание появилось после того, как отправил отчет получателям.
 
Я же сказал, что уже поздно, не вернуть :)  
Имя ведь уже пропало.  
А в исходной таблице имя другое было.  
А качать заново и смотреть мне было лень, думал сами разберётесь если что.  
 
 
Option Explicit  
Private Sub qwerty()  
Dim RowIndex As Long  
Dim StartRow As Long  
Dim LastRow As Long  
Dim ColumnToMerge As Long  
StartRow = 2  
ColumnToMerge = 1  
LastRow = Cells(Rows.Count, ColumnToMerge).End(xlUp).Row  
Application.DisplayAlerts = False  
ActiveSheet.ListObjects("Таблица13").Unlist  
   For RowIndex = StartRow + 1 To LastRow  
       With Cells(RowIndex, ColumnToMerge)  
           If .Value = .Offset(-1, 0).MergeArea.Cells(1).Value Then  
           Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge  
           End If  
       End With  
   Next RowIndex  
Application.DisplayAlerts = True  
End Sub
Страницы: 1 2 След.
Читают тему
Наверх