Як “відключити” або “зворотний шар” у Excel?


66

У мене є дані, які виглядають приблизно так:

Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1  | NY   | CA   | TX   | IL
2  | WA   | OR   | NH   | RI

І я хочу перетворити це на це:

Id | LocNum | Loc
---+--------+----
1  |   1    | NY
1  |   2    | CA
1  |   3    | TX
1  |   4    | IL
2  |   1    | WA
2  |   2    | OR
2  |   3    | NH
2  |   4    | RI

Який найпростіший спосіб зробити це в Excel 2007?


1
Знайшов відповідь: stackoverflow.com/questions/32115219/…
Четвер

Відповіді:


69

Це можна зробити за допомогою зведеної таблиці.

  1. Створіть "Кілька діапазонів консолідації". (Тільки у майстра зведених таблиць. Обчислити ALT+ D, Pв Excel 2007)
  2. Виберіть "Я буду створювати власні поля сторінок".
  3. Виберіть свої дані.
  4. Двічі клацніть на великій загальній величині - на перетині Row Grand та Column Grand , аж до правого нижнього кута вашої зведеної таблиці.

Ви повинні побачити новий аркуш, що містить усі дані у вашій зведеній таблиці, переміщений так, як ви шукаєте.

Технології Datapig надають покрокові інструкції , які насправді складніші, ніж вам потрібно - його приклад транспонує лише частину набору даних і використовує техніку повороту в поєднанні з TextToColumn . Але в ній багато картинок.

Зауважте, що зведена таблиця буде групувати дані. Якщо ви хочете, щоб це не було розгруповано, єдиний спосіб зробити це - скопіювати зведену таблицю та "вставити спеціальне" як значення. Потім ви можете заповнити пробіли такою технікою: http://www.contextures.com/xlDataEntry02.html


Дякую за вашу відповідь, але я не зовсім впевнений, що ви тут говорите. Для прикладу в запитанні, що я використовував би для міток рядків, міток стовпців, значень та фільтра звітів?
devuxer

Якщо я вставлю Id в мітки рядків і Loc1 через Loc4 в мітки стовпців, потім натисніть на нижню праву клітинку (перетин Великих підсумків), вона створить новий аркуш з таблицею, але це не те, що я хочу. Це в основному лише копія звичайної зведеної таблиці.
devuxer

Вибачте - я залишив критичну частину даних. Зведена таблиця повинна бути зведеною таблицею типу "декілька діапазонів консолідації", навіть якщо в цьому випадку вам нічого не консолідувати.
DaveParillo

4
Ну гаразд, я переглянув його в довідці і знайшов зворотній спосіб отримати старий майстер Pivot Table в Excel 2007 (потрібно натиснути ALT + D + P). Тепер я можу слідувати вашим крокам, і, здається, це працює. Спасибі за вашу допомогу!
devuxer


7

Якщо ваші дані не є зведеною таблицею Excel, а просто даними, можливо, ви захочете "скасувати" їх за допомогою простого коду VBA. Код залежить від двох названих діапазонів, джерела та цілі. Джерело - це дані, які ви хочете відкрутити (за винятком заголовків стовпців / рядків, наприклад NY-RI у зразку), а Target - перша клітина, де ви хочете розмістити свій результат.

Sub unPivot()
Dim oTarget As Range
Dim oSource As Range
Dim oCell As Range

Set oSource = Names("Source").RefersToRange
Set oTarget = Names("Target").RefersToRange

For Each oCell In oSource
    If oCell.Value <> "" Then
        oTarget.Activate
      ' get the column header
        oTarget.Value = oCell.Offset(-(oCell.Row - oSource.Row + 1), 0).Text 
      ' get the row header
         oTarget.Offset(0, 1).Value = oCell.Offset(0, _
           -(oCell.Column - oSource.Column + 1)).Text 
      ' get the value
        oTarget.Offset(0, 2).Value = oCell.Text 
      ' move the target pointer to the next row
        Set oTarget = oTarget.Offset(1, 0) 
    End If
Next
Beep
End Sub

1
Дякую за це Працює як виняток, і змушує мене економити багато часу.
tigrou

Дякую!! це просто магія! набагато краще, ніж джигірі-покер з незвичними звітами, які ніколи не працювали для мене
trailmax

1
Це виглядає чудово, але як я найкраще можу сказати, він буде працювати лише для таблиці, у якої є лише один заголовок рядка. Якби таблиця в прикладі мала кілька заголовків рядків, скажімо, що крім поля Id було "SubId", це не працює. Чи є простий спосіб змінити його так, щоб він працював у цій ситуації?
Кріс Панчінг


4

У програмі excel 2010 є досить приємне рішення, просто потрібно трохи пограти зі зведеною таблицею.

Створіть зведені таблиці зі своїх даних за допомогою цих налаштувань:

  • ніяких підсумків, жодних великих підсумків
  • макет звіту: таблична форма, повторіть усі мітки елементів
  • додайте всі потрібні стовпці, тримайте стовпці, які ви хочете перетворити справа
  • для кожного стовпця, який ви хочете перетворити: налаштування відкритого поля - на вкладці "Макет і друк": виберіть "Показати мітки предметів у формі контуру" та встановіть прапорець під цим обома полями.
  • скопіюйте свою таблицю в окреме місце (лише значення)
  • якщо у вихідних даних у вас порожні клітинки, тоді відфільтруйте порожні значення в крайньому правому стовпці та видаліть ці рядки (не фільтруйте у зведеній таблиці, оскільки вона не працюватиме як потрібно!)

1
Це, безумовно, найкраща відповідь, якщо ти в 2010 році і вище, і зовсім не очевидно в інтерфейсі. Прекрасна знахідка - на жаль, у мене є лише один підсумок!
jkf

3

Найкраще, що я придумав, це:

Id   LocNum  Loc
---------------------------------
1    1       =INDEX(Data,A6,B6)
1    2       =INDEX(Data,A7,B7)
1    3       =INDEX(Data,A8,B8)
1    4       =INDEX(Data,A9,B9)
2    1       =INDEX(Data,A10,B10)
2    2       =INDEX(Data,A11,B11)
2    3       =INDEX(Data,A12,B12)
2    4       =INDEX(Data,A13,B13)

Це працює, але я повинен генерувати Id і LocNum вручну. Якщо є більш автоматизоване рішення (крім написання макросу), будь ласка, повідомте мене про це в окремій відповіді.


2

Якщо розміри ваших даних такі, як у зразку, наданому у вашому запитанні, то наступний набір формул, що використовують OFFSET, повинен дати вам необхідний результат:

Припускаючи

1 | NY | CA | TX | Іл

2 | WA | АБО | NH | РІ

знаходяться в діапазоні A2: E3, потім введіть

= OFFSET ($ A $ 2, ПОЛЯ ((ROW (A2) -ROW ($ A $ 2)) / 4,1), 0)

у F2, скажімо, і

= MOD (ROW (A2) -ROW ($ A $ 2), 4) +1

у G2, скажімо, і

= OFFSET ($ B $ 2, ПОЛЯ ((ROW (B2) -ROW ($ B $ 2)) / 4,1), MOD (ROW (A2) -ROW ($ A $ 2), 4))

у Н2, скажімо.

Потім скопіюйте ці формули вниз, наскільки це потрібно.

Це найпростіше, чисте, вбудоване рішення формули, про яке я можу придумати.


1

Ви, здається, отримали стовпчик "локальний" (про це свідчить ваша перша відповідь), і тепер вам потрібна допомога з отриманням двох інших стовпців.

Ваш перший варіант - просто ввести перші (наприклад, 12) рядки в ці стовпці і перетягнути вниз - я думаю, що Excel в цьому випадку робить правильно (я не маю на цьому комп’ютері відмінність, щоб перевірити це напевно).

Якщо це не працює, або ви хочете щось більше програміст-у, спробуйте скористатися функцією row (). Щось на кшталт "= Floor (row () / 4)" для стовпця ідентифікатора та "= mod (row (), 4) +1" для стовпця LocNum.


1

Існує параметрична утиліта перетворення VBA для відкручування або повернення зведених даних назад до таблиці баз даних

http://www.spreadsheet1.com/unpivot-data.html


1
Ласкаво просимо до Супер Користувача! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Персик

1

Ось приємний інструмент для скасування, нормалізації зведеної таблиці.

Normalisieren von Pivot Tabellen

Я сподіваюся, що це допомагає.


1
Ласкаво просимо до SuperUser! Хоча інструмент, з яким ви зв’язалися, пропонує рішення, ця публікація корисна лише до тих пір, поки посилання залишається активною. Щоб ваша публікація залишалася корисною в майбутньому, відредагуйте свою відповідь, щоб включити будь-яку додаткову інформацію про продукт, включаючи спосіб його використання для вирішення проблеми, описаної у питанні. Дякую!
Excellll

1

Відповідь @DaveParillo - найкраща відповідь для однієї таблиці вкладок. Я хотів додати сюди кілька додаткових даних.

Для кількох стовпців попередньо відпишіть стовпці

Цей метод не працює.

Прості дані YouTube, які не стосуються, як-от питання

Це відео на YouTube, яке показує, як це зробити простим способом. Я пропустив частину щодо додавання ярлика і використав ярлик @devuxer, який є у відповіді DaveParillo.

https://www.youtube.com/watch?v=pUXJLzqlEPk


3
Суть вашої відповіді - посилання на відео, а вміст не описаний. Якщо посилання розривається або є недоступним, ваша відповідь не матиме значення. Будь ласка, включіть у свою відповідь основну інформацію та використовуйте посилання лише для атрибуції та подальшого вивчення.
fixer1234

-2

Це набагато простіше, ніж це. Просто натисніть на опцію "Перекласти" в "Спеціальне вставлення ...", щоб отримати переміщення, яке ви запитуєте.


1
Це не працює.
zx8754
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.