如何在 Excel 中将列转置为行(有中断)?
How to transpose Columns to rows (with interruptions) in Excel?
假设我们有两列包括一百万行
像这样:
什么是正确的公式或VBA使另一个排列table像这样?
JohnTopley 在 excelforum 中解决的问题:
http://www.excelforum.com/excel-formulas-and-functions/1174447-interrupted-transpose.html
对于纯粹的 Excel 解决方案,试试这个。
首先您需要添加一个辅助列。这只是 returns 在 header 行上为 TRUE,否则为 FALSE。这不是 严格地 必需的,但它会使其余公式更简单一些。在您上面提供的示例中,将其键入单元格 C1:
=IF(A1=B1,TRUE,FALSE)
现在输入这是单元格 D1:
=IF(AND(C1,NOT(C2)),A2,"")
这样做是检查当前行是否是 header 但不是下一行,如果是则复制下一行的第一个单元格,如果是 returns 则复制一个空白字符串不是。
每个后续单元格都遵循相同的模式,但它首先检查前一个单元格是否为空白。在单元格 E1 中输入此函数:
=IF(D1="","",IF(AND(C1,NOT(C3)),A3,""))
现在您只需要将此图案复制出另外 10 个单元格。不幸的是,copy-and-paste 将不起作用,因为您需要向下递增 A3 和 C3,而 copy-and-paste 将它们向右递增。所以,从 E1,我们得到:
F1: =IF(E1="","",IF(AND(C1,NOT(C4)),A4,""))
G1: =IF(F1="","",IF(AND(C1,NOT(C5)),A5,""))
.
.
.
O1: =IF(N1="","",IF(AND(C1,NOT(C13)),A13,""))
现在将这些单元格复制到数据集的底部,您应该会得到想要的结果。这是一个例子:
注意单元格 C21 中的额外 TRUE,以便最后的计算正确终止。
但是,如果您的数据集中真的有一百万行,我会质疑使用 Excel 是否明智。根据您的情况和资源,您最好将数据保存在文本文件中并使用适当的脚本语言进行处理。
假设我们有两列包括一百万行 像这样:
什么是正确的公式或VBA使另一个排列table像这样?
JohnTopley 在 excelforum 中解决的问题:
http://www.excelforum.com/excel-formulas-and-functions/1174447-interrupted-transpose.html
对于纯粹的 Excel 解决方案,试试这个。
首先您需要添加一个辅助列。这只是 returns 在 header 行上为 TRUE,否则为 FALSE。这不是 严格地 必需的,但它会使其余公式更简单一些。在您上面提供的示例中,将其键入单元格 C1:
=IF(A1=B1,TRUE,FALSE)
现在输入这是单元格 D1:
=IF(AND(C1,NOT(C2)),A2,"")
这样做是检查当前行是否是 header 但不是下一行,如果是则复制下一行的第一个单元格,如果是 returns 则复制一个空白字符串不是。
每个后续单元格都遵循相同的模式,但它首先检查前一个单元格是否为空白。在单元格 E1 中输入此函数:
=IF(D1="","",IF(AND(C1,NOT(C3)),A3,""))
现在您只需要将此图案复制出另外 10 个单元格。不幸的是,copy-and-paste 将不起作用,因为您需要向下递增 A3 和 C3,而 copy-and-paste 将它们向右递增。所以,从 E1,我们得到:
F1: =IF(E1="","",IF(AND(C1,NOT(C4)),A4,""))
G1: =IF(F1="","",IF(AND(C1,NOT(C5)),A5,""))
.
.
.
O1: =IF(N1="","",IF(AND(C1,NOT(C13)),A13,""))
现在将这些单元格复制到数据集的底部,您应该会得到想要的结果。这是一个例子:
注意单元格 C21 中的额外 TRUE,以便最后的计算正确终止。
但是,如果您的数据集中真的有一百万行,我会质疑使用 Excel 是否明智。根据您的情况和资源,您最好将数据保存在文本文件中并使用适当的脚本语言进行处理。