将多列合并为一列

Posted

技术标签:

【中文标题】将多列合并为一列【英文标题】:Combining multiple columns into a single column 【发布时间】:2015-10-30 17:21:28 【问题描述】:

使用 Excel,如何使用多列创建单列?

例如:我可能需要删除 2012-2014 列并为年份创建一个列。同时,我需要保留 2012-2014 年的信息,并为这些信息创建一列以与每一行(姓名、国家、年级、年份、数据)对齐:

Name        Country   Grade 2012        2013        2014
Smith       France    A     0.333194233 0.64347979  0.72795544
Adams       Germany   D     0.307532421 0.580823282 0.851274645
Franklin    Americas  C     4.597219783 7.983514354 10.79688839
Roosevelt   Americas  B     0.615064841 1.089043653 1.502249374
Washington  Australia A     0.261792462 0.456573955 0.620206846

所以它应该是这样的:

Name        Country   Grade Year Data
Smith       France    A     2012 0.333194233
Smith       France    A     2013 0.64347979
Smith       France    A     2014 0.72795544 etc.

【问题讨论】:

【参考方案1】:

假设Name 在 A1 中,插入一个新的 ColumnD 并在 D1 中向下复制以适应:

=A1&"#"&B1&C1  

然后取消旋转(带有图像的详细信息 here 选择 D1:Gn(n 适合))。

在第 8 步之后,在表(成为 B:D)和 B2 中插入三个新列:

 =LEFT(A2,FIND("#",A2)-1)  

在 C2 中:

=MID(A2,FIND("#",A2)+1,LEN(A2)-LEN(B2)-2)  

在 D2 中:

=RIGHT(A2)

整理得合身。

【讨论】:

【参考方案2】:

您是否在“Paste Special”中尝试过 TRANSPOSE?还是你想要动态的?

Link

找到解决方案:LINK 有效!

创建此模块并运行宏:

Public Sub tranpose()
Dim i   As Long, _
    LR1 As Long, _
    LR2 As Long, _
    LC  As Long
Application.ScreenUpdating = False
Columns(1).Insert Shift:=xlToRight
LR2 = Range("B" & Rows.Count).End(xlUp).row
Range("A1:A" & LR2).Value = Chr(65)
LC = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 3 To LC
    LR1 = Range("A" & Rows.Count).End(xlUp).row + 1
    LR2 = Cells(Rows.Count, i).End(xlUp).row
    Range(Cells(1, i), Cells(LR2, i)).Cut Destination:=Cells(LR1, 2)
    Range(Cells(LR1, 1), Cells(LR1 + LR2 - 1, 1)).Value = Chr(63 + i)
Next i
Application.ScreenUpdating = True
End Sub

【讨论】:

TRANSPOSE 函数将单元格的垂直范围返回为水平范围,反之亦然。我需要创建更多的信息行。如您所见,只有一行“Smith”和他的信息。我需要三行 Smith,相同的信息,但是有额外的列、年份和数据。这需要对大约 3000 行信息进行。 link

以上是关于将多列合并为一列的主要内容,如果未能解决你的问题,请参考以下文章

Dask - 将多列合并为一列

r 将多列中的数据合并为一列

Excel - 将多列合并为一列

如何将多列合并为一列并使用自定义字符串格式化?

在熊猫中将多列合并为一列

在 Postgres 中将多列合并为一列