Як транспонувати клітинки в одному стовпці на основі унікальних значень в іншому стовпці?
Припустимо, у вас є діапазон даних, який містить два стовпці, тепер ви хочете транспонувати клітинки в одному стовпці в горизонтальні рядки на основі унікальних значень в іншому стовпці, щоб отримати такий результат. Чи є у вас якісь ідеї для вирішення цієї проблеми в Excel?
Транспонуйте комірки в один стовпець на основі унікальних значень за допомогою формул
Транспонуйте комірки в один стовпець на основі унікальних значень за допомогою коду VBA
Транспонуйте клітинки в одному стовпці на основі унікальних значень за допомогою Kutools для Excel
Транспонуйте комірки в один стовпець на основі унікальних значень за допомогою формул
За допомогою наступних формул масиву ви можете витягти унікальні значення та транспонувати їх відповідні дані в горизонтальні рядки, будь-ласка, виконайте такі дії:
1. Введіть цю формулу масиву: = ІНДЕКС ($ A $ 2: $ A $ 16, ЗБІГ (0, COUNTIF ($ D $ 1: $ D1, $ A $ 2: $ A $ 16), 0)) наприклад, у порожню комірку, D2, і натисніть Shift + Ctrl + Enter клавіші разом, щоб отримати правильний результат, див. знімок екрана:
примітки: У наведеній вище формулі, A2: A16 - стовпець, з якого потрібно перерахувати унікальні значення, та D1 - клітина над цією клітинкою формули.
2. Потім перетягніть маркер заповнення до комірок, щоб витягти всі унікальні значення, див. Знімок екрана:
3. А потім продовжуйте вводити цю формулу в клітинку E2: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0), і не забудьте натиснути Shift + Ctrl + Enter клавіші, щоб отримати результат, див. знімок екрана:
примітки: У наведеній вище формулі: B2: B16 - дані стовпця, які ви хочете транспонувати, A2: A16 - стовпець, на основі якого ви хочете перенести значення, та D2 містить унікальне значення, яке ви отримали на кроці 1.
4. Потім перетягніть маркер заповнення праворуч від комірок, в які потрібно перерахувати транспоновані дані, поки не відобразиться 0, див. Знімок екрана:
5. А потім продовжуйте перетягувати маркер заповнення до діапазону комірок, щоб отримати транспоновані дані, як показано на наступному знімку екрана:
Транспонуйте комірки в один стовпець на основі унікальних значень за допомогою коду VBA
Можливо, формули вам складні для розуміння, тут ви можете запустити такий код VBA, щоб отримати потрібний результат.
1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2. Клацання Insert > Модуліта вставте наступний код у Модулі Вікно
Код VBA: транспонування комірок в один стовпець на основі унікальних значень в іншому стовпці:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub
3. Потім натисніть F5 клавішу для запуску цього коду, і з'явиться підказка з нагадуванням про вибір діапазону даних, який ви хочете використовувати, див. знімок екрана:
4. А потім клацніть OK , з'явиться ще одне підказне вікно, щоб нагадати вам вибрати клітинку, щоб поставити результат, див. знімок екрана:
6. Клацання OK і дані в стовпці B транспоновані на основі унікальних значень у стовпці A, див. знімок екрана:
Транспонуйте клітинки в одному стовпці на основі унікальних значень за допомогою Kutools для Excel
Якщо у вас є Kutools для Excel, що поєднує в собі Розширені комбіновані ряди та Розділені клітини утиліти, ви можете швидко виконати це завдання без будь-яких формул або коду.
Kutools для Excel : з більш ніж 300 зручними надбудовами Excel, які можна спробувати без обмежень протягом 30 днів. |
після установки Kutools для Excel, будь ласка, виконайте наступне:
1. Виберіть діапазон даних, який ви хочете використовувати. (Якщо ви хочете зберегти вихідні дані, спершу скопіюйте та вставте дані в інше місце.)
2. Потім натисніть Кутулс > Злиття та розділення > Розширені комбіновані ряди, див. скріншот:
3, в Об'єднати рядки на основі стовпця діалоговому вікні, виконайте такі дії:
(1.) Клацніть назву стовпця, на основі якого потрібно транспортувати дані, та виберіть Первинний ключ;
(2.) Клацніть інший стовпець, який потрібно транспонувати, і натисніть Поєднувати потім виберіть один роздільник, щоб розділити комбіновані дані, такі як пробіл, кома, крапка з комою.
4. Потім натисніть Ok Кнопка, дані в стовпці B були об'єднані в одну комірку на основі стовпця A, див. знімок екрана:
5. А потім виділіть об’єднані комірки та натисніть Кутулс > Злиття та розділення > Розділені клітини, див. скріншот:
6, в Розділені клітини діалогове вікно, виберіть Розділити на стовпці під тип , а потім виберіть розділювач, який розділяє ваші об'єднані дані, див. знімок екрана:
7. Потім натисніть Ok і виберіть клітинку, щоб розмістити результат розбиття у спливаючому діалоговому вікні, див. знімок екрана:
8. Клацання OK, і ви отримаєте результат, як вам потрібно. Дивіться знімок екрана:
Завантажте та безкоштовну пробну версію Kutools для Excel зараз!
Демо: транспонуйте клітинки в одному стовпці на основі унікальних значень за допомогою Kutools для Excel
Найкращі інструменти продуктивності офісу
Покращуйте свої навички Excel за допомогою Kutools для Excel і відчуйте ефективність, як ніколи раніше. Kutools для Excel пропонує понад 300 додаткових функцій для підвищення продуктивності та економії часу. Натисніть тут, щоб отримати функцію, яка вам найбільше потрібна...
Вкладка Office Передає інтерфейс із вкладками в Office і значно полегшує вашу роботу
- Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
- Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
- Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!