2

Простите за мой английский. Я ищу метод преобразования данных для набора продуктов. У меня есть набор данных, в котором атрибуты перечислены в строках, и я хочу, чтобы эти атрибуты были заголовками столбцов, ссылающимися на значения и которые соответствуют этим атрибутам и продуктам, с которыми они связаны. Мой лучший пример будет следующим (для одного продукта):

до

Должен быть преобразован в:

после

Существуют тысячи отдельных "номеров деталей", поэтому простая транспонирование не обрезает их…

1 ответ1

1

Это немного глупо, но должно работать, если мои «Допущения и интерпретация» верны.


Допущения и интерпретация

Предположение 1. Все ваши номера деталей уникальны, а ваши AttributeIdentifiers абсолютно одинаковы для атрибутов, которые вы хотите представить в каждом столбце во всех частях.

Предположение 2: AttributeIdentifiers уникальны в каждой части, то есть никогда не будет двух строк, имеющих одинаковый AttributeIdentifier и один и тот же номер детали.

Предположение 3: Исходные данные имеют заголовки в строке 1, а данные заполняются непрерывно, начиная со строки 2.

Предположение 4: Исходные данные выложены аналогично предоставленным скриншотам. "Номера деталей" находятся в столбце A, а "AttributeIdentifiers" - в столбце B, "Значения" - в столбце C, и на листе нет других данных, относящихся к этой проблеме.

Интерпретация: Вы хотите, чтобы номера деталей оставались в столбце A, а все атрибуты для этой детали указывались в одной строке под заголовками в соответствии с их AttributeIdentifier.


Решение

  1. Создайте новый лист в той же книге.
  2. Назовите первый лист Old Data , а второй лист New Report .
  3. Скопируйте 'Old Data'!A:A 'New Report'!A:A
  4. Выполните «Удалить дубликаты на 'New Report'!A:A
  5. Скопируйте 'Old Data'!B:B в 'New Report'!B:B
  6. Выполните "Удалить дубликаты" в 'New Report'!B:B
    • Убедитесь, что вы не расширяете выделение за пределы этого столбца для этой операции.
  7. Удалить 'New Report'!B1 и сдвиньте оставшиеся ячейки в этом столбце вверх.
  8. Выберите все ячейки, которые имеют данные в 'New Report'!B:B Скопируйте эти ячейки и используйте "Paste Special" и "Transpose", чтобы вставить их, начиная с 'New Report'!C1 .
  9. Удалить 'New Report'!B:B Убедитесь, что 'New Report'!C:C переходит, чтобы занять свое место.
  10. Добавьте новый столбец слева от 'Old Data'!A:A
    • Примечание: это сместит все столбцы вправо, так что "Номер детали" будет в столбце B и так далее.
    • (Необязательно) Установите 'Old Data'!A1 до UID .
  11. Установите 'Old Data'!A2 к =CONCATENATE(B2,C2) .
  12. Скопируйте 'Old Data'!A2 вниз по всему столбцу, до конца набора данных.
  13. Установите 'New Report'!B2 to: =IFERROR(VLOOKUP(CONCATENATE($A2,B$1),'Old Data'!$A:$D,4,FALSE),"") .
  14. Скопируйте 'New Report'!B2 вниз по оставшейся части столбца, до конца набора данных.
  15. Скопируйте все ячейки в 'New Report'!B:B , начиная с 'New Report'!B2 и заканчивается в нижней части набора данных, через оставшиеся столбцы справа.
  16. Выберите весь лист 'New Report' . Скопируйте его и вставьте на место "Как значения", чтобы заблокировать данные.
  17. (Необязательно) Удалите 'Old Data'!A:A

Пояснение к шагу 14

Короче говоря, формула ищет в "Старые данные" подходящее значение для размещения в ячейке в соответствии с "Номером детали" и "AttributeIdentifier". Если ничего не найдено, ячейка останется пустой.


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .