Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2018, 09:25   #1
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию Помогите написать макрос или составить формулу для выбора ячеек, связанных общими элементами и составить их цепочку в отдельной ячейке

Есть некоторое количество сетевого оборудования включенного друг в друга. У каждого устройства есть уникальное имя, адрес и некоторое количество портов, куда могут включаться последующие устройства сети.

Пример схемы сети устройств в файле .jpg

На самом деле устройств гораздо больше и портов в каждом устройстве может быть несколько десятков.

файл с таблицей для примера прилагаю:

Необходимо сделать так, чтобы при выделении ячейки с именем любого устройства сети в итоговой ячейке появлялась цепочка включения этого устройства до самого первого устройства - в форме : имя выбранного устройства - имя, адрес, порт устройства расположенного выше по иерархии - имя, адрес, порт устройства расположенного ещё выше по иерархии.. и т.д. до корневого устройства. Результат выборки поместить в отдельную ячейку.
Изображения
Тип файла: jpg IMG_20181116_090039.jpg (83.7 Кб, 123 просмотров)
Вложения
Тип файла: xlsx pr1.xlsx (11.3 Кб, 14 просмотров)
tor45 вне форума Ответить с цитированием
Старый 16.11.2018, 09:51   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

На мой взгляд, это вполне реально.

вложенность (количество слоёв) ещё будет изменяться?
нужно решить макросом или формулами?
По какому событию формировать выборку?
Что делать, если в иерархии ошибка (родитель не найден, но это ещё не верхний уровень)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2018, 10:08   #3
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

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

в файле с таблицей я группы оборудования раскрасил разным цветом. это просто для наглядности и понимания структуры. в итоговом варианте это не требуется.
tor45 вне форума Ответить с цитированием
Старый 20.11.2018, 14:45   #4
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

есть у кого мысли? как лучше - формулой или макросом?
tor45 вне форума Ответить с цитированием
Старый 20.11.2018, 15:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от tor45 Посмотреть сообщение
сть у кого мысли? как лучше - формулой или макросом?
лучше таким способом, который Вам подходит.

я, например, формулой мог бы попытаться реализовать,
НО
1) это для меня муторно, долго и сложно
2) это точно будет решение заточенное под текущую структуру (не потому, что по другом нельзя, просто я по другому не умею).

Поэтому, если бы я решал эту задачу, я бы писал макрос / пользовательскую функцию.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.11.2018, 16:25   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

На мой взгляд - лучший ли инструмент для этого Excel ? Написать специализированную прогу, возможно, с применением чего-нибудь вроде html - впрочем, в web-технологиях я не шибко, так что мож и невпопад. ЛИСП вроде под это заточен,но не знаю, как там у него с визуализацией. Давно сдал его, еще в прошлом тысячелетии, да и дело было на БЭСМ-6.

Последний раз редактировалось digitalis; 20.11.2018 в 16:28.
digitalis вне форума Ответить с цитированием
Старый 22.11.2018, 11:42   #7
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

просто есть таблицы excel с очень большим количеством оборудования. переделывать всю эту информацию в access - праздник труда. просто на маленьком кусочке представленной здесь таблицы хотел посмотреть как это реализовать. также как и Serge_Bliznykov думаю, что макросом оптимальнее. а потом данный макрос можно и изменять под более объёмные таблицы и большее количество портов и т.д.

я не спец в VBA. самому с нуля выяснять все способы и функции данного языка как всегда не хватает времени. а вот что-либо готовое и более менее подходящее - доделать или немного переделать смогу.
tor45 вне форума Ответить с цитированием
Старый 22.11.2018, 12:01   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

tor45 как Вы видите поиск цепочки? Словами каждый шаг поиска сможете описать? Не в общих чертах "ищем куда входит деталь", а что-то "берем деталь А, смотрим в таблицу Т1 и сравниваем со столбцом С11, при нахождении совпадения, повторить поиск по таблице Т1 для значения С12. Поиск завершить при таком-то условии", или как там теория графов описывает
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.11.2018, 13:25   #9
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

буду писать сокращениями из приложенного файла. я вижу это примерно так:

допустим, что сотавляем цепочку для устройства K12.

1. вписываем имя и адрес (K12 IP1-1-1-12) в ячейку результата.
2. берем инфу из ячейки левее имени (К12) и пишем в ячейку результата (порт E2).
3. смотрим ячейку ещё левее и если она пустая, то смотрим ячейку над ней. Если она опять пустая, смотрим ещё выше и так до ячейки с именем устройства, которое выше по иерархии (это у нас SW3).
4. Дальше нужно найти SW3 в другом столбце (то есть выше по таблице), и вставить SW3 и IP1-1-3 в ячейку результата МЕЖДУ портом E2 и именем и адресом (K12 IP1-1-1-12).

в ячейке результата к этому времени будет запись (K12 IP1-1-1-12 SW3 IP1-1-3 E2)

вот таким методом продвигаться по таблице пока, допустим в названии порта не встретится MXG. это будет означать, что данное устройство последнее в цепочке.

алгоритм корявый, его думаю можно реализовать циклами проверки значений и вставки данных.

как-то так. извиняюсь за костноязычность объяснения алгоритма. может моя блок-схема громмоздка и можно всё сделать как-то оптимальнее.
tor45 вне форума Ответить с цитированием
Старый 22.11.2018, 13:27   #10
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

картинка с примером таблицы и используемыми именами.
Изображения
Тип файла: jpg 233.jpg (56.0 Кб, 125 просмотров)
tor45 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, не составить формулу. SonicMine Microsoft Office Excel 0 01.04.2014 12:45
Макрос выбора определенных ячеек для подставления в формулу vfr800 Microsoft Office Excel 0 29.01.2012 02:54
Нужна помощь составить формулу или ВБА для дат KOSTIK1 Microsoft Office Excel 7 05.01.2010 11:19
Помогите составить формулу !!!! kutt Microsoft Office Excel 4 24.05.2008 11:44