Вы не даете достаточно информации о своем требовании, чтобы дать окончательный ответ, поэтому вот несколько идей.
Моя первая попытка в структуре будет:
| Parents | Children |
1 | 2 | 2 4 6 |
2 | 1 2 4 | 1 2 3 |
3 | 2 4 | 5 |
4 | 1 | 2 3 |
5 | 3 | |
6 | 1 | |
То есть, для каждого из элементов, я бы список родителей и список детей. Я бы рассмотрел усилия по созданию этой структуры и рассмотрел, как легко я мог бы ответить на требуемые вопросы из этой структуры. Это не сложная структура для сборки вручную, поэтому не должно быть сложной структуры для макроса для сборки. Вы хотите знать, есть ли у двух предметов одинаковые дети. Это можно быстро определить, просмотрев списки детей для двух предметов.
Вам понадобится полный обзор против ваших запланированных видов использования для этой структуры. Однако на данный момент эта структура выглядит удовлетворительной.
В вашей таблице идентификаторами элементов являются номера от 1 до 6 без пробелов. Если это представитель реальных данных, я бы, вероятно, определить тип пользователя и хранить данные в виде массива:
Type utItem
Parents() As Long
Children() as Long
End Type
Dim Items() as utItem
Если реальные идентификаторы строк или рассеянные числа, я считаю, что я хотел бы пойти на словарь. Для каждой записи ключ будет идентификатором, и элемент будет представлять собой пару массивов: один для родителей и один для детей.
Предложение 2
Дополнительная информация предполагает структуру, как это то, что вам требуется:
Prnt | D?| Children
ABC | | BBC BBD FGI FGJ KLM
STU | D | BBC BBD FGI FGJ KLM
GHI | D | BBC BBD FGI FGJ KLM
ABD | | BBC FGJ
FGH | D | BBC FGI FGJ KLM
ABE | | BBC FGI FGJ KLM
Три идентификаторы письма представляют собой имя файла. Реальные имена файлов будут длиннее, но это не имеет значения.
Для каждого родителя, дети указаны в алфавитном порядке. Затем список был отсортирован по идентификаторам детей, причем последовательность родителей была неважной. Например, STU и GHI имеют одинаковых детей. Если список был отсортирован дочерними элементами, то родитель, строка GHI будет первой. Если это важно для первой строки GHI, вам необходимо добавить это требование.
A D во втором столбце указывает, что строка имеет те же самые дети, что и предыдущая строка.
В этом списке нет ничего, чтобы указать, имеет ли, например, ABC свой родитель или родитель. Такая информация может быть полезна при создании этого списка, но она не нужна после завершения списка.
Вы хотите загрузить эти данные в систему PDM.Вы можете добавить элемент ABC и его детей в систему PDM, но вы не можете добавить STU, потому что у него одни и те же дети. Я не понимаю. Вы не можете просто игнорировать элемент STU, потому что у него могут быть родители, которые будут ссылаться на него.
Загрузка данных в систему PDM будет одноразовой нагрузкой. Создание вышеуказанной структуры не может быть невероятно медленным, но не должно быть молниеносно. Например, пять минут могут быть прекрасными, сорок пять минут будут приемлемыми, но двадцать часов не будут приемлемыми.
Пункт 1 имеет пункт 2 в качестве ребенка. Пункт 2 имеет пункт 1 в качестве ребенка. Пункт 2 сам по себе является дочерним, это не древовидная структура. –
BTW: множественное число детей - это дети. Если бы английское правописание было последовательным, как бы нам было трудно учиться. Что значит: «Я хочу знать, если я переведу двух родителей верхнего уровня, есть ли у них похожие дети? Это должно быть возможно с любого уровня». Какое отношение имеет отношение к подобным детям? Как примирить «верхний уровень» и «любой уровень»? –
Согласен с @TonyDallimore. Не могу понять, чего вы хотите достичь. Возможно, изображение желаемого результата поможет. – CMArg