Страницы: 1
RSS
Создание таблицы макросом
 
Здравствуйте.
Помогите решить вопрос.

Нужно построить таблицу - начиная от ячейки E10 по направлению вправо и вниз.
Обычно в таблицах - есть один параметр идущий по строкам и один параметр идущий по столбцам.
Здесь - таких параметров несколько (и по столбцам и по строкам).

Параметры столбцов и строк этой таблицы - имеют древовидную иерархию.
Вправо от ячеек K4 и K5 - идут названия уровней иерархии, записанные через запятую.
(в них те ячейка, которые стоит ближе других к K4 и K5 - имеют более высокий уровень иерархии, те ячейки которые стоят дальше от K4 и K5 - имеют меньший уровень иерархии).
Это и есть исходные данные.

В общем получается очень много строк-столбцов (идущих в определенной иерархии)  и вручную делать такую таблицу очень-очень долго. А если возникает необходимость добавить какой-то подуровень в эту таблицу (в строку или в столбец) - то переделывать ее - даже еще дольше чем делать с нуля.

Как макросом, ориентируясь только на текст записанный в ячейках 4 и 5 - создать подобную таблицу и заполнить ее пробелами ?

(я прикрепил файл, где можно видеть как устроена такая таблица)
Изменено: Dalm - 05.08.2026 13:05:05
 
Здравствуйте.
У Вас фиксированное количество уровней? Т.е. последняя колонка Q, а следовательно 6 уровней?
 
Aлeкceй, нет уровней может быть больше (или меньше).
Количество уровней может меняться - в зависимости от того сколько заполненных ячеек по правую сторону от K4 и K5.
 
Здравствуйте.
Сделал первую таблицу. Проверьте правильно ли работает.
 
Aлeкceй, спасибо.
Но это макрос сейчас делает не таблицу, а только один столбец.
 
не знаю, у меня выводится таблица. выкладываю файл еще раз. попробуйте, может что-то не получилось выложить в прошлый раз.
PS. выложите (или пришлите в ЛС) что у Вас находится в ячейках начиная с L4. можете выложить не excel файл, а текст с разделителем ";" для колонок. запущу у себя макрос может поймаю ошибку
Изменено: Aлeкceй - 06.08.2026 17:12:45
 
Aлeкceй, вы не поняли.
Макрос - строит только часть таблицы (только левую часть).
А верхнюю часть (шапку) - не строит.
 
В таблице которая справа всегда два уровня или нет?  
 
Aлeкceй, нет уровней может быть больше (или меньше).
Количество уровней может меняться - в зависимости от того сколько заполненных ячеек по правую сторону от K4 и K5.
 
Хорошо. Правильно понимаю что если заполнена ячейка К6 то картинка должна быть такой (пример только для Первый верт1"):

                                                                                                       Первый верт1
                         Первый верт2                         :                            Второй верт2                         :                           Третий верт2
Первый верт3 : Второй верт3 : Третий верт3 : Первый верт3 : Второй верт3 : Третий верт3 : Первый верт3 : Второй верт3 : Третий верт3
Изменено: Aлeкceй - 07.08.2026 07:59:36
 
Aлeкceй, ячейка К6 - вообще ни за что не отвечает.
Она всегда пустая.
За построение шапки отвечает ячейка К5 и то что находится от нее по правую сторону.
Изменено: Dalm - 07.08.2026 14:04:54
 
Здравствуйте.
Помогите решить вопрос.

Нужно построить таблицу - начиная от ячейки E10 по направлению вправо и вниз.
Обычно в таблицах - есть один параметр идущий по строкам и один параметр идущий по столбцам.
Здесь - таких параметров несколько (и по столбцам и по строкам).

Параметры столбцов и строк этой таблицы - имеют древовидную иерархию.
Вправо от ячеек K4 и K5 - идут названия уровней иерархии, записанные через запятую.
(в них те ячейка, которые стоит ближе других к K4 и K5 - имеют более высокий уровень иерархии, те ячейки которые стоят дальше от K4 и K5 - имеют меньший уровень иерархии).
Это и есть исходные данные.

В общем получается очень много строк-столбцов (идущих в определенной иерархии)  и вручную делать такую таблицу очень-очень долго. А если возникает необходимость добавить какой-то подуровень в эту таблицу (в строку или в столбец) - то переделывать ее - даже еще дольше чем делать с нуля.

Как макросом, ориентируясь только на текст записанный в ячейках 4 и 5 - создать подобную таблицу и заполнить ее пробелами ?
 
Здравствуйте.
Доделал. Проверяйте.
 
Добрый день.
Вариант во вложении, если правильно понял (форматированием не занимался, только иерархия по примеру):
 
Aлeкceй, спасибо.
У вас - неправильно сделано.
Таблица теперь строит только шапку таблицы - забывая про левую часть.
 
Alex, в принципе нормально.
Только у вас таблица строится начиная с ячейки А1, а нужно с ячейки E10.
Потом еще между левой частью и основной таблицей - у меня стоит пустой столбец.  А у вас  Столбец G (который должен быть пустым - заполнен данными).
 
Dalm,
Цитата
написал:
Только у вас таблица строится начиная с ячейки А1, а нужно с ячейки E10.Потом еще между левой частью и основной таблицей - у меня стоит пустой столбец.  А у вас  Столбец G (который должен быть пустым - заполнен данными).
Во вложении.
 
Alex, уже значительно лучше.
Но в таблице - нет формата границ ячеек.
Это границы ячеек шапки, левой части таблицы, и собственно самой таблицы (которая находится на пересечении шапки и левой части).

И еще такой момент - при срабатывании - макрос уничтожает все данные с листа и перезаписывает его заново.
Удалять нужно только то что идет от ячейки E10 - вправо и вниз.
(а то что идет выше или левее ячейки E10 - удалять не нужно).
 
Dalm,
Цитата
написал:
Удалять нужно только то что идет от ячейки E10 - вправо и вниз.
Найдите в коде строчку
Код
new_ws.Cells.Clear
И замените на конструкцию:
Код
 With new_ws
     .Range("E10", .Cells(.Rows.count, .Columns.count)).ClearContents
 End With
На этом я откланяюсь.
По поводу
Цитата
написал:
Но в таблице - нет формата границ ячеек.Это границы ячеек шапки, левой части таблицы, и собственно самой таблицы (которая находится на пересечении шапки и левой части).
то считаю, что вам самому нужно потратить хоть немного времени, чтоб реализовать все ваши хотелки для  вашей же задачи.
Либо обратиться в раздел https://www.planetaexcel.ru/forum/?PAGE_NAME=list&FID=7, где специалисты реализуют все ваши пожелания под ключ.
 
Alex, ясно.
Спасибо.
Страницы: 1
Читают тему
Наверх