Excel VBA / Macro для копирования строк из одного листа в другой в зависимости от значения в ячейке - PullRequest
0 голосов
/ 02 октября 2019

В моей электронной таблице два листа, и я ищу код VBA (или простую формулу) для пакетного копирования значений из одного листа в другой.

  1. Первый, Sheet1,имеет список городов, рынков и продуктов в трех столбцах (AC). Всего около 19 000 строк. См. Образец на приложенном изображении
  2. Второй, Sheet2, содержит список продуктов, подкатегорию продукта и происхождение продукта (столбцы AC), всего около 300 строк. См. Образец на приложенном изображении

Я хотел бы скопировать подкатегорию продукта и происхождение продукта (т. Е. Столбцы B и C на листе 2) в лист 1, где продукт в столбце CЛиста1 = Продукт в столбце А Листа2. Отмечая, что я хотел бы сохранить порядок, в котором строки находятся на Листе 2 при копировании на Лист1.

Я пробовал следующий подход INDEX / MATCH, но по какой-то причине он перестает работать после 18-й строки (У меня есть около 19 000 строк в Sheet1), и он работает только для одного столбца за раз.

= IFERROR (INDEX ('Sheet2'! $ B $ 2: $ B $ 284, МАЛЕНЬКИЙ (ЕСЛИ ($ D2)= 'Sheet2'! $ B $ 2: $ B $ 284, ROW ('Sheet2'! $ B $ 2: $ B $ 284) -1, ""), ROW () - 1)), "")

Может ли кто-нибудь помочь с написанием некоторого кода VBA, чтобы сделать это?

Редактировать: Пример вывода с использованием данных примера: this

1 Ответ

0 голосов
/ 02 октября 2019

если это просто копирование статических данных несколько раз, то возможно что-то вроде этого. Если нет, то я неправильно понял ваш вопрос. это формула в ячейке B2:

=INDEX(Copy.Table,IF(MOD(ROW()-ROW($B$1),Table.Count)=0,$E$2,MOD(ROW()-ROW($B$1),Table.Count)))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...