Перенести содержимое обнаруженных дублей столбца "A" в - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Имеется excel файл со структурой напечатанной ниже:

Столбец "A"

- Артикула товара;

Столбцы начиная от "B"

- Свойства товара;

Строка "1"

- Название свойства (кроме ячейки "А1" - в ней надпись - Артикул);

Строки начиная со "2"

- Содержание свойства (кроме ячеек столбца "А" - в них - Артикул);. В файле около 2 тыс. столбцов и около 100 тыс. строк. Сейчас файл построен таким образом, что для каждого свойства идёт своя строка с артикулом. Таким образом один и тот же артикул, к примеру 4887, может быть на десятке строк, пример печатаю ниже: [A7] 4887 [B7] красный [A11] 4887 [I11] жёлтый [A13] 4887 [KK13] фиолетовый - Напечатайте пожалуйста макрос, который

перенесёт содержание строк дублей по столбцу "A" в первый имеющийся экземпляр артикула

. Пример необходимого результат печатаю ниже: [A7] 4887 [B7] красный [I11] жёлтый [KK13] фиолетовый В файле во вложении прикрепляю файл содержащий страницы затрагивающие этот топик:

необходимый результат

и

необходимый результат-2

.

Решение задачи: «Перенести содержимое обнаруженных дублей столбца "A" в»

textual
Листинг программы
  1. Sub Заполнение_свойств_2()
  2.     Dim i&, j&, k&, LastCol&, Ar, B, Dic_a, Dic_s, Dic_z, vX, S$
  3.     Dim u_a, u_s, rz(), r, c
  4.     Ar = Worksheets(1).[A1].CurrentRegion.Value
  5.     Set Dic_a = CreateObject("Scripting.Dictionary"): Dic_a.CompareMode = 1
  6.     Set Dic_s = CreateObject("Scripting.Dictionary"): Dic_s.CompareMode = 1
  7. '    Set Dic_z = CreateObject("Scripting.Dictionary"): Dic_z.CompareMode = 1
  8.    
  9.     For i = 1 To UBound(Ar)
  10.         If IsNumeric(Ar(i, 1)) Then Ar(i, 1) = Format$(Ar(i, 1))
  11.         If Not Dic_a.exists(Ar(i, 2)) Then Dic_a(Ar(i, 1)) = Dic_a.Count + 1
  12.         If Not Dic_s.exists(Ar(i, 2)) Then Dic_s(Ar(i, 2)) = Dic_s.Count + 1
  13.     Next i
  14.    
  15.     ReDim rz(1 To Dic_a.Count + 1, 1 To Dic_s.Count + 2)
  16.    
  17.     For i = 1 To UBound(Ar)
  18.         r = Dic_a(Ar(i, 1))
  19.         c = Dic_s(Ar(i, 2)) + 1
  20.         rz(r, 1) = Ar(i, 1)
  21.         rz(1, c) = Ar(i, 2)
  22.         rz(r, c) = Ar(i, 3)
  23.     Next i
  24.    
  25.     With Worksheets(4)
  26.         .UsedRange.ClearContents
  27.         .Range("A1").Resize(UBound(rz), UBound(rz, 2)) = rz
  28.     End With
  29.     Set Dic1 = Nothing: Set Dic2 = Nothing ': Set Dic3 = Nothing
  30. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы