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

or

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

в Excel функція "Текст до стовпців" може розділити комірку на кілька стовпців на основі роздільника, але якщо є якісь способи складання декількох стовпців в один стовпець, як показано на знімку екрана нижче? У цій статті я представив кілька прийомів щодо швидкого вирішення цього завдання.
doc стек стовпців до одного 1

Складіть кілька стовпців в один за допомогою формули

Складайте кілька стовпців в один за допомогою VBA

Складіть кілька стовпців в один за допомогою Transform Range гарна ідея3


Складіть кілька стовпців в один за допомогою формули

1. Виберіть діапазон, який потрібно скласти, і перейдіть до Ім'я Box щоб дати цьому діапазону назву, та натисніть вводити ключ. Дивіться знімок екрана:
doc стек стовпців до одного 2

2. Потім виберіть порожню клітинку, куди потрібно розмістити результати, введіть цю формулу =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1), натисніть Enteклавішу r та перетягніть маркер заповнення вниз, доки не з'явиться помилка. Дивіться знімок екрана:
doc стек стовпців до одного 3

У формулі MyData - це назва діапазону, яку ви вказали на кроці 1.

Складайте кілька стовпців в один за допомогою VBA

Ось код VBA, який також може вам допомогти.

1. прес Alt + F11 клавіші для відображення Microsoft Visual Basic для додатків вікна.

2. клацання Insert > Модулі, вставте код нижче в Модулі.

VBA: Складіть стовпці до одного

Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
    Rng.Copy
    Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

doc стек стовпців до одного 4

3. прес F5 для запуску коду, вискакує діалогове вікно для вибору вихідних даних і натисніть OK, щоб вибрати клітинку для розміщення результатів. Дивіться знімок екрана:
doc стек стовпців до одного 5

4. клацання OK. Тепер стовпці складені в одну колонку.
doc стек стовпців до одного 6


Складіть кілька стовпців в один за допомогою Transform Range

Застосовувати Kutools для ExcelАвтора Діапазон трансформації Утиліта також може допомогти вам швидко вирішити цю проблему.

Kutools для Excel, з більш ніж 300 зручні функції, полегшує вам роботу. 

після безкоштовна установка Kutools для Excel, будь-ласка, виконайте наведені нижче дії:

1. Виберіть дані стовпців, якими ви користуєтесь, і натисніть Кутулс > Діапазон > Діапазон трансформації. Дивіться знімок екрана:
doc стек стовпців до одного 8

2 В Діапазон трансформації діалогове вікно, перевірте Діапазон до однієї колонки і натисніть Ok, потім виберіть комірку для розміщення результатів. Дивіться знімок екрана:
doc стек стовпців до одного 9

3. клацання OK. Тепер стовпці складені в одну колонку.
doc стек стовпців до одного 1


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

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.
    Alfred · 6 months ago
    For those looking to stack columns into one but not rows into one, you need to have a clear picture of what you really want to do.
    Suppose you have some 3x3 array, you want your index() function to get entries in the form of (row,column) for (1,1), (2,1), (3,1), then (1,2), (2,2), (3,2) then so on.
    So what you want to do is to have index() refer to a single column containing all the row numbers (1;2;3;1;2;3;1;2;3) and a single column containing all the column numbers (1;1;1;2;2;2;3;3;3).
    To get (1;2;3;1;2;3;1;2;3), a common programming approach is to use 1+mod(some_counter-1,3) where the mod() function gives the residuals 0,1,2,0,1,2,...
    To get (1;1;1;2;2;2;3;3;3), one uses 1+int((some_counter-1)/3) where it gives 1+0, 1+0, 1+0, 1+1, 1+1, 1+1, 1+2, 1+2, 1+2

    Therefore, to get a 3x3 array stacked into one, you use the formula (press Ctrl +Shft + Enter):
    =index( $A$1:$C$3, 1+mod(row(A1)-1,3), 1+int((row(A1)-1)/3)))
    where row(A1) serves as the counter as you fill your formula downwards

    If you put it the other way round (row to columns, columns to row), you will get rows stacked into one column
    =INDEX( $A$1:$C$3, 1+INT((ROW(A1)-1)/3),1+MOD(ROW(A1)-1,3))
    which is essentially what the formula in this article does

    In a nutshell, the formula used to stack columns in an array into a single column would be:
    =index( your_array_cells , 1+mod(row(A1)-1, number_of_rows_of_your_array ), 1+int((row(A1)-1)/ number_of_columns_of_your_array)))
  • To post as a guest, your comment is unpublished.
    Ryan · 1 years ago
    Thank you for the formula and VBA, but neither one does what the title of the post says. I was expecting them to stack the columns, but instead they transpose each row into a column and stacks those... so it's stacking transposed rows, not columns. Still very helpful for some cases, but does anyone know how to modify the formula and/or VBA to actually stack the columns? I suppose I could transpose the entire input range then use these...
  • To post as a guest, your comment is unpublished.
    Ashfaq · 1 years ago
    Thank you, a lot, the formula option worked very well.. your saved my lot of time.
  • To post as a guest, your comment is unpublished.
    Susan Millard · 2 years ago
    I am using the Stack Multiple Columns Into One With Formula method and it worked perfectly, but I want it to maintain the formatting, i.e. some columns were bold & 1 was hyperlinks. Is there something that can be added to the formula to make this happen?
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      Hi, Susan Milard, their formula can meet your need, you can use the VBA or the Transpose Range tool,both of them can satisfy you.
  • To post as a guest, your comment is unpublished.
    Tom · 2 years ago
    I am attempting to do this over a very large table (100s of columns and rows that are all linked to formulas. My excel will keep loading and then ultimately go to not responding. Is there a way to get past this? Thanks
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      Hi, Tom, which method you apply does not work? The method three, transform range tool must can work.
  • To post as a guest, your comment is unpublished.
    CBExL553 · 2 years ago
    Hi, I'm looking to go a step further with this. I've used Stack Multiple Columns Into One With VBA, code and this works. I've used Tables as the source with this code and I get the list. Is there a way to automate running the Macro? So that when I add a new entry into the table the Macro automatically runs and keeps the resulting list up to date?
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      Hi, Chris Blackburn, sorry I am affraid I cannot find a code can automatically run to update the result, maybe someone else can.
  • To post as a guest, your comment is unpublished.
    tom · 3 years ago
    Hi, is there a way to make the formula ignore any blank cells your data may contain?


    =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1),


    I am using a helper sheet to create a contiguous list for a data validation drop down list. Thanks in advance.
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      Sorry, I am not good at formula, maybe you can try to use Kutools for Excel's Select Nonblank cells utility to select the unempty cells firstly, and copy and paste them to another location, then use above methods.
  • To post as a guest, your comment is unpublished.
    Gokceuraz · 3 years ago
    I have data which ends at the same row but multiple columns in which I want them to be stacked in a sequence where B column data will go under A column data where the data ends for A column and C column data to go under A column data where the data from B column ends and so on. This way I will have data from multiple columns to fit into one column. How can I do that?
  • To post as a guest, your comment is unpublished.
    badusha · 3 years ago
    Hello , is there any to convert above data to following form ??
    1
    A
    Lilly
    2
    B
    Judy
    ...
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      Thanks for your leaving message, this tutorial https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
      is talking about how to solve this problem, you can go to view.
  • To post as a guest, your comment is unpublished.
    John Smith · 3 years ago
    this is just a clickbait to have you download a paying software
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      The first download will be free to use in 60 days, after that, you can decide to pay for use or not.
  • To post as a guest, your comment is unpublished.
    Jon · 3 years ago
    you are stacking multiple rows into one column, not multiple columns... not what I was looking for.
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      Maybe this tutorial can help you.https://www.extendoffice.com/documents/excel/3327-excel-convert-multiple-rows-to-columns.html
    • To post as a guest, your comment is unpublished.
      Phil · 3 years ago
      To stack columns A-P that are in blocks of 6 rows put this formulae in cell R1 and fill down

      =OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)
      • To post as a guest, your comment is unpublished.
        Miguel · 3 years ago
        Cancel that last one, missed the truncate step.
      • To post as a guest, your comment is unpublished.
        Miguel · 3 years ago
        Dang, now it doesn’t work! Tried on a new tab but it’s now back to stacking column contents in one in stead of originally row content.
      • To post as a guest, your comment is unpublished.
        Miguel · 3 years ago
        Thank you for posting this solution! In case anyone needs a space after/at the end of each block, just add an additional count to the rows, so going by the example above, instead of $A$6, write $A$7. It inputs a zero ‘0’ to the row but you can easily ‘Use selection for Find’ in Sublime to edit them out. If you know the solution which doesn’t add a zero, please post!?
        • To post as a guest, your comment is unpublished.
          Timkil · 2 years ago
          to output a blank cell instead of 0, do an IF function>0, TRUE-->output the original cell content, FALSE-->output ""

          =if(OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)>0,OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1),"")
      • To post as a guest, your comment is unpublished.
        Fish · 3 years ago
        This works perfect, thanks