提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
马上登记
x

or

如何转置/转换成单列的行和列?

当你使用Excel工作表时,有时候你会遇到这个问题:你怎么能将一个范围的数据转换或转换为一个列? (见下面的截图:)现在,我介绍三个快速技巧来解决这个问题。

将公式转换/转换成单列

使用VBA代码转置/转换列和行到单列中

使用Kutools for Excel转置/转换列和行为单列好idea3

在Excel中快速将范围转置为列/行/反之亦然

在某些情况下,您可能需要将一系列单元格转换为一列或一行,反之亦然,可将列或行转换为Excel表格中的多行和多列。 你有什么快速的方法来解决它? 在这里 移调范围 功能 Kutools for Excel 可以轻松处理所有以上的工作。点击60天免费全功能试用!
doc1
Kutools for Excel:拥有超过300便利的Excel加载项,可以在60天免费试用,不受限制。

将公式转换/转换成单列

选项卡式浏览和编辑多个Excel工作簿/ Word文档,如Firefox,Chrome,Internet浏览10!

您可能熟悉在Firefox / Chrome / IE中查看多个网页,并通过轻松单击相应的选项卡在它们之间切换。 此处,Office选项卡支持类似的处理,允许您在一个Excel窗口或Word窗口中浏览多个Excel工作簿或Word文档,并通过单击其选项卡轻松切换它们。 点击Office Tab的免费45天试用版!

擅长

以下长公式可以帮助您快速将一系列数据转换为列,请按照以下步骤操作:

1。 首先,为您的数据范围定义范围名称,选择要转换的范围数据,右键单击并选择 定义名称 形成上下文菜单。 在里面 新名字 对话框中,输入所需的范围名称。 然后点击 OK。 看截图:

2。 指定范围名称后,单击一个空白单元格,在本例中,我将单击单元格E1,然后输入此公式: =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1).

注意: 迈德特 是所选数据的范围名称,您可以根据需要进行更改。

3。 然后将公式向下拖到单元格中,直到显示错误信息。 该范围内的所有数据已被转换为单个列。 看截图:


使用VBA代码转置/转换列和行到单列中

通过以下VBA代码,您还可以将多个列和行连接到一个列中。

1。 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。

2。 点击 插页 > 模块,并将以下代码粘贴到 模块 窗口。

Sub ConvertRangeToColumn()
'Updateby20131126
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

3。 按 F5 键运行代码,并显示一个对话框供您选择要转换的范围。 看截图:

4。 然后点击 Ok,并显示另一个对话框来选择一个singel单元格以显示结果,请参阅截图:

5。 然后点击 Ok,那么范围的单元格内容将转换为列的列表,请参阅截图:

DOC-转换范围到column11


使用Kutools for Excel转置/转换列和行为单列

也许这个公式太长了,而且VBA代码对你有一些限制,在这种情况下,请不要担心,在这里我将向你介绍一个更简单和更多功能的工具 - Kutools for Excel,其 Transform Range 实用程序,您可以快速方便地解决此问题。

Kutools for Excel, 与超过 300 方便的功能,让您的工作更轻松。

安装后 Kutools for Excel,请按照以下步骤操作:(免费下载Kutools for Excel!)

1。 选择您想要转置的范围。

2。 点击 Kutools > Transform Range,看截图:

doc将范围转换为列12

3。 在里面 Transform Range 对话框中选择 Range to single column 选项,看截图:

doc将范围转换为列13

4。 然后点击 OK,并指定一个单元格将弹出框的结果。

doc将范围转换为列14

5。 点击 OK,并且多个列和行数据已被转换为一列。
doc将范围转换为列15

如果要将列转换为固定行的范围,也可以使用 Transform Range 函数来快速处理它。
doc将范围转换为列16


使用Kutools for Excel将交叉表转换为列表表格

如果您需要将交叉表转换为列表表格,如下面的截图所示,除了逐个重新输入数据外,还可以使用 Kutools for ExcelTranspose Table Dimensions 实用程序在Excel中快速转换交叉表和列表。
doc将范围转换为列19

安装后 Kutools for Excel,请按照以下步骤操作:(免费下载Kutools for Excel!)

1。 选择要转换为列表的交叉表,单击 Kutools > Range > Transpose Table Dimensions.
doc将范围转换为列17

2。 在 Transpose Table Dimension 对话框,检查 Cross table to list 选项 Transpose type 部分,选择一个单元格以放置新的格式表。
doc将范围转换为列18

3。 点击 Ok,现在交叉表已被转换为列表。


相关文章:

如何在Excel中更改行列?

如何转置/转换单列到Excel中的多列?

如何转置/转换成单行的行和列?


Kutools for Excel - 最佳办公生产力工具提高80%的生产力

  • 重用: 快速插入 复杂的公式,图表 以及你以前用过的任何东西; 加密单元格 密码; 创建邮件列表 并发送电子邮件...
  • 超级方程式酒吧 (轻松编辑多行文字和公式); 阅读布局 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不丢失数据; 分裂细胞含量; 组合重复的行/列...防止重复的细胞; 比较范围...
  • 选择复制或唯一 行; 选择空行 (所有细胞都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择......
  • 精确复制 多个单元格而不更改公式参考; 自动创建参考 多张表; 插入项目符号,复选框等等......
  • 提取文本,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级过滤器 (将过滤方案保存并应用到其他工作表); 高级排序 按月/周/日,频率等; 特殊过滤器 用粗体,斜体......
  • 结合工作簿和工作表; 根据键列合并表; 将数据拆分为多个表格; 批量转换xls,xlsx和PDF...
  • 超过300强大的功能。 支持Office / Excel 2007-2019和365。 支持所有语言。 在您的企业或组织中轻松部署。 全功能60天免费试用。
kte tab 201905

Office选项卡为Office提供选项卡式界面,使您的工作更轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
官方底部
Say something here...
symbols left.
You are guest ( Sign Up? )
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.
    Dana · 8 months ago
    thanks a lot; beautifull :-)
  • To post as a guest, your comment is unpublished.
    Philippe · 1 years ago
    Worked like a charm. Thanks a lot
  • To post as a guest, your comment is unpublished.
    deep · 1 years ago
    thanxs you have reduced my too much time....wonderful
  • To post as a guest, your comment is unpublished.
    NL · 1 years ago
    What if the table you start with has a range of values that is different for each row? Example: Say the table doesn't have FF, KK and LL, how do you make a single column from that table without doing them above example by hand?
    • To post as a guest, your comment is unpublished.
      Sunny · 1 years ago
      Just try above methods, if they cannot work, please tell me and upload your data as a picture to give some details
  • To post as a guest, your comment is unpublished.
    YO · 1 years ago
    THAT'S AMAZING! THANKYOU
  • To post as a guest, your comment is unpublished.
    Mahesh Kumar · 1 years ago
    Hi Friend I/m also facing a problem in excel

    My data are column-wise

    3.26mm 3.05mm 3.10mm
    0.1285 0.1200 0.1220
    1/4 1/4 6mm
    1-1/8 1-1/8 28mm
    2-5/8 2-5/8 66mm


    I want to arrange all in a single column

    3.05mm
    0.1200
    1/4
    1-1/8
    2-5/8
    3.10mm
    0.1220
    6mm
    28mm
    66mm


    Kindly share me formula or valuable suggestion. It's urgent for me. Please help me on priority bases.
  • To post as a guest, your comment is unpublished.
    sANJANA SURESH · 1 years ago
    HI,
    This formula is not working for me. giving error.
    here is my data

    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
    7 G
    8 H
    9 I
    10 J
    This needs to be converted to the below

    1
    2
    A
    B
    3
    4
    C
    D
    5
    6
    E
    F
    7
    8
    G
    H
    9
    10
    I
    J


    PLEASE HELP ME ASAP. ITS REALLY URGENT. THANK YOU
  • To post as a guest, your comment is unpublished.
    RIAZ · 1 years ago
    I want to convert multiple column into single row in sequene. for example
    jan feb march april may june

    I want in this way

    jan

    feb

    march

    april

    may

    please comment
    • To post as a guest, your comment is unpublished.
      Phillip Kruchten · 1 years ago
      Copy the data into memory, then use the Paste Special, Tranpose option, this will convert your row of data into a column of data.
  • To post as a guest, your comment is unpublished.
    bsac · 2 years ago
    This did not work for me because I have 98 columns and 230 rows of uneven data. That is ROW 1 may have only 3 entries (A1, B1 & C1). While, row 2 may have 5 entries (A1, B1, C1, D1, E1) etc....etc..... you get the gist over the huge table of 98 columns and 230 rows.
  • To post as a guest, your comment is unpublished.
    bob · 2 years ago
    This did not work for me because I have 98 columns and 230 rows of uneven data. That is ROW 1 may have only 3 entries (A1, B1 & C1). While, row 2 may have 5 entries (A1, B1, C1, D1, E1) etc....etc..... you get the gist over the huge table of 98 columns and 230 rows.


    The formula did not work. Any suggestions?
  • To post as a guest, your comment is unpublished.
    budi · 2 years ago
    Hi. . . I have multiple range with same dimension in each sheet of excel file.
    Is it possible to transform column row range into single column for each sheet all at once?
  • To post as a guest, your comment is unpublished.
    Pj · 2 years ago
    Hello all,

    Is there a way to transpose multiple columns into single column based on a primary key, without using kutools?

    Example: Left table should be converted into right table:
    Id A B C D ID Category
    1 0 3 1 0 1 B
    2 1 2 1 0 1 B
    3 0 0 1 2 1 B
    4 0 1 0 0 1 C
    5 2 0 0 1 2 A
    2 B
    2 B
    2 C
    3 C
    3 D
    3 D
    4 B
    5 A
    5 A
    5 D
  • To post as a guest, your comment is unpublished.
    Ric · 2 years ago
    To get from
    A1 B1 C1
    A2 B2 C2

    to

    A1
    A2
    B1
    B2
    C1
    C2

    Use:
    =INDEX(Range,MOD(ROW(A1)+ROWS(Range)+1,ROWS(Range)+1),1+INT(ROW(A1)/(ROWS(Range)+1)))

    Ric
    • To post as a guest, your comment is unpublished.
      Gershome · 1 years ago
      This formula is not working for me. giving error.
      here is my data

      A1 B1
      A2 B2
      A3 B3
      A4 B4
      A5 B5
      A6 B6

      This needs to be converted to the below

      A1
      A2
      A3
      A4
      A5
      A6
      B1
      B2
      B3
      B4
      B5
      B6


      Please help me
  • To post as a guest, your comment is unpublished.
    MICHAEL · 2 years ago
    Using formula with same data ends up showing AA in E1. Not sure why?

    =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)
  • To post as a guest, your comment is unpublished.
    Fritz · 2 years ago
    Awesome makro! I just have a "minor" problem. I get stuck with an error: "Overflow (Error 6)". I have a table with many empty cells but still 51 columns and 1561 rows. Did anybody already faced such dimensions and problems? I guess it's really just a technical limit that I'm breaching here.
    Thanks for any help
    BR
    Fritz
  • To post as a guest, your comment is unpublished.
    Ryan · 2 years ago
    Hey,

    I was wondering how to change the to use two absolute values for the cells. This script is great and I want to add it into a bigger macro that requires no user input.
    Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
    Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)

    These two ranges need to be changed, but having some trouble.
    I tried this but am getting overflow errors.
    Set Range1 = Range("O2:BA1000")
    Set Range2 = Range("N2")

    Any ideas?
  • To post as a guest, your comment is unpublished.
    Joel · 2 years ago
    Fantastic VBA for transforming columns and rows into a single sorted column. Just saved me a ton of time. Thanks!
  • To post as a guest, your comment is unpublished.
    Gopi · 2 years ago
    Amazing.. thanks a ton..
  • To post as a guest, your comment is unpublished.
    Srikanth · 3 years ago
    I have different rows and column with large data. example as

    Mon jan Feb
    Cat N S W E N S W E
    A 4 6 7 8 1 2 3 4
    B 1 2 3 4 4 3 2 1
    C 3 2 4 4 3 2 4 6

    Now i have 2 years data which needs to copy pasted. can we do it any formula to get the February month data under January month.
  • To post as a guest, your comment is unpublished.
    rojo · 3 years ago
    Thank you so much. Awesome job!
  • To post as a guest, your comment is unpublished.
    bbe · 3 years ago
    Thank you so much!! This saved me so much time and worked perfectly for combining multiple columns into a single column.
  • To post as a guest, your comment is unpublished.
    Ann Voltz · 3 years ago
    Anyone know how to convert the following: Keeping 1st 3 columns the same but moving the rest of the columns to one column with the data lined up with the correct row. FROM THIS-
    14.05.2016 14:35:02 c8k000001 CHO2A ALB2 SI-I LDL_C GLUC3
    14.05.2016 14:35:03 c8k000002 CDC05 CHO2A ALB2 SI-I LDL_C
    14.05.2016 14:18:15 c8k000003 CDC05 ALTL CHO2A ALB2 SI-I

    TO THIS -
    14.05.2016 14:35:02 c8k000001 CHO2A
    ALB2
    SI-I
    LDL_C
    GLUC3
    14.05.2016 14:35:03 c8k000002 CDC05
    CHO2A
    ALB2
    SI-I
    LDL_C
    14.05.2016 14:18:15 c8k000003 CDC05
    ALTL
    CHO2A
    ALB2
    SI-I
    Really looking forward to some help with this one. Thanks!
    • To post as a guest, your comment is unpublished.
      Chris · 2 years ago
      I need the same solution as Ann. Your help is much appreciated
  • To post as a guest, your comment is unpublished.
    pinokio · 3 years ago
    If you do this and you also have dates in column A and customers in column (B1;D1), how do you adjus these likewise, so you will get it in column D and E next to the values? This also means that you get one customer and one date 3 times afer each other (18/07/2016) AA (18/07/2016) BB etc.
  • To post as a guest, your comment is unpublished.
    thomas · 3 years ago
    In case column A defines the group, and the other cells are exactly like this. You still want to get everything in one cell (except column A) and you want to adjust cell A so it still continues displaying to which value the columns belong after this (which means for example that group 1 has to repeated 3 times. I hope it's clear, can anyone tell me how to do that please
  • To post as a guest, your comment is unpublished.
    Happy Data Girl · 3 years ago
    Transpose/Convert columns and rows into single column with VBA code:
    THIS WAS AWESOME!!!!!! I was able to merge some columns appropriately and preserve the cell formatting!!!! I have mixed formats within cells (italics, bold, regular etc.) using mostly text relating to species biological analyses, and trying to keep that formatting in excel to use for exports can be VERY difficult when merging or rearranging data. This worked flawlessly and quickly, I kept crashing my VBA for merging cells and preserving formatting because the amount of data within a cell got to be too much. THANK YOU to whoever put this out there!!!
    Best Wishes,
    Happy Data Girl
  • To post as a guest, your comment is unpublished.
    Lavi Shawn · 3 years ago
    pradeep.kumar@rsrit.com
    rash@svktechinc.com
    Akshit kumar7hAkshit kumarHi s to akshith@smtworks.com
    K. Sandeep Babu {KSB}7hK. Sandeep Babu {KSB} to sandeep.babu@stiorg.com
    Anup Kumar7hAnup Kumar s on basis to anup@r3tek.com
    harsha Hemanth6hharsha Hemanth s to hemanth@imbuesys.com
    sriram rao6hsriram raopls recuirnts to sriram@itcomnce.com
    Radha Reddy6hRadha Reddy s at radha@infogensoftware.com
    Raja sekhar Reddy6hRaja sekhar Reddy to raj@prospectinfosys.com


    This is my data and I need to separate email IDS. Please help how to do it.
  • To post as a guest, your comment is unpublished.
    Nathan · 3 years ago
    phewwwwww!!!!!

    after hours of researching on how to do this
    GREAT WORK and thanks a lot

    Kind regards
    Nathan
  • To post as a guest, your comment is unpublished.
    Karpagaraj · 3 years ago
    Thanks it was very much helpful.....
  • To post as a guest, your comment is unpublished.
    Ramu b · 3 years ago
    This formula works better when data is in square format,

    =INDEX(Range,MOD(ROW(B5)-1+COLUMNS(Range),COLUMNS(Range))+1,1+INT((ROW(B5)-1)/COLUMNS(Range)))

    but challenge is how to use this formula when data is odd & even Rows & columns and also Dynamic range (Rows or Columns) data.

    Eg: A1:A5,B1:B4,C1:C6 range of data
    • To post as a guest, your comment is unpublished.
      joel · 3 years ago
      yeah i agree, is this possible if the no. of rows in each column is uneven?
  • To post as a guest, your comment is unpublished.
    s.mojtaba · 3 years ago
    thanks.It was very good.
  • To post as a guest, your comment is unpublished.
    Henock · 3 years ago
    Thank you very much! It saved my time and it is effective!!!!!!
  • To post as a guest, your comment is unpublished.
    DJ · 3 years ago
    Hi guys, I also needed to see down-then-across (a1, a2, a3, b1, b2, b3 etc) instead of across-then-down but that can be done easily by switching the formula to:

    =INDEX(Range,MOD(ROW(B5)-1+COLUMNS(Range),COLUMNS(Range))+1,1+INT((ROW(B5)-1)/COLUMNS(Range)))

    Note how the original formula was:

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

    So this was simply a matter of switching parts before and after the comma. Thanks for this thread, helped a lot!
  • To post as a guest, your comment is unpublished.
    Dave · 3 years ago
    This was a HUGE help!! Thank you so much for posting!!
  • To post as a guest, your comment is unpublished.
    Jowjow · 3 years ago
    Very helpful! Thanks!
  • To post as a guest, your comment is unpublished.
    VCR · 3 years ago
    AMAZING! Thank you for posting for the world to benefit from your knowledge!
  • To post as a guest, your comment is unpublished.
    Ari · 4 years ago
    The order shown is across-then-down (A1, B1, C1, A2, B2, C2 ...) . I need down-then-across (A1, A2, A3, B1, B2, B3, ...). Is there a way to do that?
  • To post as a guest, your comment is unpublished.
    Poshiya Nikunj · 4 years ago
    Now I Feel Great........

    You Save My 30 Hours Of Work.....

    Excellent Work.
  • To post as a guest, your comment is unpublished.
    newb · 4 years ago
    thank you:) but how to less 0 value or null on the table or on the name of a range?
  • To post as a guest, your comment is unpublished.
    wil · 4 years ago
    Your indexing formula was exactly what i needed. Only note is that when copied, there is a "." at the end and Excel doesn't like that. Minor issue.
  • To post as a guest, your comment is unpublished.
    Parisa · 5 years ago
    Thank you very much.
  • To post as a guest, your comment is unpublished.
    steve trifelos · 5 years ago
    I'm using the .xls formula to convert a range of data into one column. I have input the formula as specified with my range name, but I am not clear on 'drag the formula to the cell until the error message appears'. I can't drag the formula anywhere from the formula bar. I'm sure it is user error but can you please help? Thanks
  • To post as a guest, your comment is unpublished.
    Phildobya · 5 years ago
    Full formula is =INDEX(Range,1+INT((ROW(A1)-1)/COLUMNS(Range)),MOD(ROW(A1)-1+COLUMNS(Range),COLUMNS(Range))+1)
    • To post as a guest, your comment is unpublished.
      steve trifelos · 5 years ago
      how did you 'drag the formula to the cell'? I can't drag it from the formula bar.
  • To post as a guest, your comment is unpublished.
    Chris · 5 years ago
    Is there a way to do this but when it grabs the range, it starts from A1 and does all of column A downward, and then grabs Column B and etc?
  • To post as a guest, your comment is unpublished.
    Muz · 5 years ago
    NICE! Thanks so much! Saved me tons of time!
  • To post as a guest, your comment is unpublished.
    Jow · 5 years ago
    Would have been nice to see the full equation in #2.