Создайте массив / список / набор идентификаторов в столбце, перекрестно привязанный к строкам, каждый из которых появляется в

У меня есть некоторые данные, которые я пытаюсь индексировать, чтобы я мог использовать Excel, и применять различные методы или искать различные свойства на основе каждой «группы» идентификаторов.

В столбце AI есть идентификатор для «поставщика». Каждый провайдер будет отображаться где-то между 1 и 4 раза, в зависимости от того, сколько его единиц (1,2,3 или M, появляется в столбце B). Поставщики всегда будут последовательно (например, если поставщик появляется 4 раза, каждый из них будет сразу после следующего).

Таким образом, первый столбец будет выглядеть следующим образом (транспонирован для экономии места): 30111,30111,30111,30111,30113,30113,30114,30114,30114,31308 … и т. Д.

Я хочу перебрать этот столбец и объединить эти идентификаторы, чтобы затем добавить в свой макрос действия для каждой группы идентичных идентификаторов провайдера. Другими словами, мне нужно иметь какой-то индекс (в массиве, списке, коллекции, словаре или что-то еще), который говорит, что первый идентификатор включает строки 1-4, второй идентификатор включает строки 5-6 и т. Д.

Есть идеи? Я пытаюсь использовать массивы, словари и коллекции до сих пор без успеха. Я чувствую, что я, вероятно, испытываю большую проблему, понимая правильное решение этой проблемы.

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

Вот что я имел в виду, имея коллекции хранилищ в словаре, которые содержат номера строк:

'loop to fill dictionary For Each cell In Selection id = cell.Value If Not dict.Exists(id) Then dict.Add id, New Collection dict(id).Add cell.Row Next cell 'get the first id and read out its rows id = dict.Keys(0) For Each v in dict(id) Debug.Print v Next v 

Я не знаю, как у вас сложилось впечатление, что словарные ключи всегда должны быть строковыми литералами. Но если у вас есть ячейка со значением 30111 , cell.Value будет иметь тип double, поэтому после dict.Add cell.Value, ... ключ 30111 будет в словаре, но "30111" (как строка) будет не, и dict("30111") просто вернется пустым. Может, это была твоя проблема? Чтобы этого избежать, вам нужно использовать CStr() .

  • Проблема с печатью динамического массива листов с помощью VBA
  • Найти MAX и SUM переменное количество столбцов в Excel без макросов
  • Эффективная формула Excel для возврата нескольких совпадений из большого количества строк
  • Ошибка при записи массива в excel
  • Функция VBA, чтобы заставить машину не отображать определенные переменные
  • Можете ли вы объявить зубчатые массивы в excel VBA напрямую?
  • Формула массива, возвращающая ARRAY без дубликатов, без VBA
  • Перенос данных из диапазона в массив, удаляющий последние строки
  • Поиск множества нулевых значений в массиве больших ячеек в MATLAB
  • Excel 2010 VBA - Сплит-строка по запятой, Пропустить пустые результаты
  • Поиск совпадающих ключевых слов в текстовом документе на основе заполненного массива строки из excel
  • Interesting Posts
    Давайте будем гением компьютера.