Note: The other languages of the website are Google-translated. Back to English
Увійти  \/ 
x
or
x
Реєстрація  \/ 
x

or

Як перенести повторювані рядки в стовпці в Excel?

Припустимо, у вас є ряд даних в Excel, тепер ви хочете перенести повторювані рядки в кілька стовпців, як показано на наступному скріншоті, чи є у вас якісь ідеї для вирішення цього завдання?

Транспонуйте повторювані рядки у стовпці з кодом VBA

doc-convert-duplicate-рядки-стовпці-1


стрілка синя права міхур Транспонуйте повторювані рядки у стовпці з кодом VBA

На жаль, у вас немає прямого способу впоратися з цим в Excel, але ви можете створити код VBA для його вирішення, будь ласка, виконайте наступне:

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Вікно Microsoft Visual Basic для програм.

2. Клацання Insert > Модуліта вставте наступний код у Вікно модуля.

Код VBA: транспонування повторюваних рядків у кілька стовпців

Sub ConvertTable()
'Updateby Extendoffice
Dim xArr1 As Variant
Dim xArr2 As Variant
Dim InputRng As Range, OutRng As Range
Dim xRows As Long
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
xArr1 = InputRng.Value
t = UBound(xArr1, 2): xRows = 1
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 2 To UBound(xArr1, 1)
        If Not .exists(xArr1(i, 1)) Then
            xRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)
            For ii = 1 To t
                xArr1(xRows, ii) = xArr1(i, ii)
            Next
        Else
            xArr2 = .Item(xArr1(i, 1))
            If UBound(xArr1, 2) < xArr2(1) + t - 1 Then
                ReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)
                For ii = 2 To t
                    xArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)
                Next
            End If
            For ii = 2 To t
                xArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)
            Next
            xArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2
        End If
    Next
End With
OutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1
End Sub

3. Потім натисніть F5 клавішу для запуску цього коду, виберіть діапазон даних, який потрібно перетворити повторювані рядки на кілька стовпців у діалоговому вікні, що з’явиться, див. знімок екрана:

doc-convert-duplicate-рядки-стовпці-2

4. Клацання OKі виберіть одну клітинку, куди ви хочете помістити результат, у наступному діалоговому вікні, див.

doc-convert-duplicate-рядки-стовпці-3

5. А потім клацніть OK , вибрані вами дані перетворено у такий формат:

doc-convert-duplicate-рядки-стовпці-4


Статті по темі:

Як транспонувати / перетворити стовпці та рядки в один рядок?

Як транспонувати / перетворити стовпці та рядки в один стовпець?

Як транспонувати / перетворити один стовпець на кілька стовпців у Excel?


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

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

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці

 

Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    bder4255@gmail.com · 1 years ago
    Hello everyone
    I have tried this code and it worked successfully.
    My question is How could i do the same using Ms Access for bigger data could i get a query works the same or not ?
    Thank you so much .
  • To post as a guest, your comment is unpublished.
    ariellerazzy · 2 years ago
    Hello! Can anyone help me...

    I found this code to turn rows of data with a unique ID into a single row per ID with multiple columns (min column 5 - including ID, maximum columns 25 - including ID). Then it deletes all of the duplicate rows based on unique ID. This code sort of works, the only problem is it isn't transferring two columns of data.

    The number of rows of data per unique ID varies from 1 to 6 (therefore I would need minimum 5 columns to maximum 25 columns)

    There are 20,000 rows of data but I can break the data up by department for a minimum of 5,000 rows of data and run each department separately.

    Thanks for your help!


    My data looks something like this

    A B C D E
    ID DESCRIPTION STATE # DATE
    3 CPR US 567 6/19/2019
    3 AET US 568 6/19/2019
    4 CPR US 6/19/2019
    4 AET
    4 AED

    etc.

    I want it to look like this

    A B C D E F G H I J K L M ETC.....
    ID DESCRIPTION STATE # DATE DESCRIPTION STATE # DATE DESCRIPTION STATE # DATE
    3 CPR US 567 6/19/2019 AET US 568 6/19/2019
    4 CPR US AET US AED US

    Here is the code I found that sort of works (probably for what it was written for, it carries over only the data in columns D and E and omits column B & C... leaving two blank columns per data set. I like that it deletes the duplicates after moving all of the data to a single column based on unique ID

    Sub Addresses_To_Columns()

    Dim lastRow As Long
    Dim addressCount As Integer: addressCount = 0

    lastRow = Range("A" & Rows.Count).End(xlUp).Row

    For i = lastRow To 3 Step -1
    If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
    addressCount = addressCount + 1
    Range(Cells(i - 1, 10), Cells(i - 1, (addressCount * 5) + 10)) = Range(Cells(i, 4), Cells(i, (addressCount * 5) + 4)).Value
    Rows(i).Delete
    Else
    addressCount = 0
    End If
    Next i

    End Sub
  • To post as a guest, your comment is unpublished.
    Joe · 3 years ago
    This works fine for me with different number of duplicates Brian. I only had a problem with the first duplicate showing twice on my output, but that was very minor. I only wish I knew how to make it copy the duplicate results into a comma delimited format instead of new columns for each one.
  • To post as a guest, your comment is unpublished.
    Brian · 3 years ago
    Only works if there's the same number of duplicates and call him a. It doesn't work at if have different numbers of duplicates.
  • To post as a guest, your comment is unpublished.
    Alex · 5 years ago
    Really great. Saved me a lot of time
  • To post as a guest, your comment is unpublished.
    Jon · 5 years ago
    I am so incredibly happy this worked. You are my hero!!!!
  • To post as a guest, your comment is unpublished.
    Santosh · 6 years ago
    Awesome Example - saved me a lot of time.
    Thank You so much !!!
    • To post as a guest, your comment is unpublished.
      Syed · 2 years ago
      Thanks a lot!

      God Bless you.