2015-03-31 2 views
0

enter image description hereСоответствие и перемещение столбцов в Excel

Hi;

У меня есть лист, который имеет 4 столбца;

колонки А и С имеют номера продуктов

Колонка B и D. для деталей продуктов.

То, что я пытаюсь сделать, это; Если число в столбце A соответствует номеру в столбце C, то я хочу взять значение (данные продукта) из B в столбец E., но если число повторяется во второй строке и снова совпадает с этим числом в столбце C, тогда i хотите, чтобы новое значение столбец F.

Это действительно особая проблема для нас. Мы пытаемся создать новую базу данных sql для нашей новой веб-страницы, и мы должны преобразовать все данные, подобные этому.

Я попробовал это с формулой vlookup в Excel, но это не сработало. Я думаю, что эта проблема может решаться только с помощью макросов. (Если я не ошибаюсь ...)

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

Благодаря

+0

Лучшее решение для вас будет зависеть от того, сколько строк данных необходимо скопировать и перенести. – Jeeped

ответ

1

Если у вас есть менее 2000-3000 строк данных, это может быть достигнуто с некоторыми формул массива. Если у вас есть намного больше, решение VBA будет лучше подходит. Эти формулы массива съедают расчетную нагрузку экспоненциально, поскольку диапазоны, на которые они ссылаются, растут больше. В какой-то момент это просто не стоит ждать, и решение VBA будет лучше.

Array formulas to aggregate and transpose

Формула массив в F2 есть,

=IF(LEN(F1), IFERROR(INDEX(A$1:A$999, MATCH(0, IF(LEN(A$1:A$999), COUNTIF(F$1:F1, A$1:A$999&""), 1), 0)), IFERROR(INDEX(C$1:C$999, MATCH(0, IF(LEN(C$1:C$999), COUNTIF(F$1:F1, C$1:C$999&""), 1), 0)), "")), "") 

Обратите внимание, что этот требует заголовок колонки этикетки в F1. Это не может быть помещен в F1. Формулы массива должны быть завершены с помощью Ctrl + Shift + Enter↵. После ввода правильного заполнения, чтобы подобрать уникальный список всех номеров деталей из столбцов А и С.

Формула массива в G2 есть

=IF(LEN($F2), IFERROR(INDEX($B$1:$B$999, MATCH(0, IF($A$1:$A$999=$F2, COUNTIF($F2:F2, $B$1:$B$999&""), 1), 0)), IFERROR(INDEX($D$1:$D$999, MATCH(0, IF($C$1:$C$999=$F2, COUNTIF($F2:F2, $D$1:$D$999&""), 1), 0)), "")), "") 

Это также требует доработки с Ctrl + Shift + Enter↵. После правильного ввода заполните несколько столбцов и заполните всю формулу вниз, чтобы соответствовать записям, полученным в столбце F.

Я оставил эти формулы для покрытия 999 строк. Возможно, вам придется настроить их вверх, если ваши потребности превысят этот диапазон. Поиск по $ 999 и заменить на $ 1999 может быстро выполнить это.

Это все, что нужно. Убедитесь, что вы оставили несколько строк внизу, если другой файл имеет больше строк и несколько столбцов справа по той же причине.

+0

Спасибо за ваш ответ! Он работает, как мне хотелось. У меня 5500 строк, и я потратил немного времени, но он сделал свою работу без проблем. Моя формула была очень примитивной. Спасибо снова. – LikePod

+0

@Aura - Рад слышать, что это сработало для вас. Похоже, мой лимит на строках был немного консервативным, но, по крайней мере, в одном и том же стадионе. Спасибо за ваш отзыв! – Jeeped

1

Если заказ не имеет решающего значения, возможная альтернатива с формулами лишь бы добавить вторые две колонки к первым двум (в копии), добавьте пустую Row1 и в ColumnC:

=IF(COLUMN()<=COUNTIF($A:$A,$A2)+2,INDIRECT("$B"&(COLUMN()-3+ROW())),"") 

скопированы в другую и в другую колонку:

=A1=A2 

скопировано на заказ. Скройте столбец B и отфильтруйте другой столбец, чтобы выбрать FALSE. Выберите Row2 для завершения и вставьте Special, значения в F1 оригинального листа.