2017-02-18 31 views
0

假设我们有两列,包括一百万行 像这样:如何在Excel中将列转置为行(有中断)?

1

什么是正确的公式或VBA再拍安排表这样吗?

2

+0

你有什么试过?例子会帮助其他人避免不起作用的东西。有一点需要注意的是“所有关键字都是红色的?”如果是这样,那么也许可以基于颜色在关键字之间搜索如果它们不是红色的,那么是否有“关键”或关键字列表? –

+0

感谢您的建议。红色文本仅仅是为了引起更多关注。由于您的担心,我编辑了pix。我们只需要将每组数据转置到旁边。 – Sushiant

+0

有两个问题。对于需要创建的额外列的数量是否存在已知的严格限制?你需要一个纯粹的Excel答案还是VBA解决方案可以接受? – xarxziux

回答

0

对于纯的Excel解决方案尝试。

首先你需要添加一个辅助列。这只在标题行返回TRUE,否则返回FALSE。这不是严格必要的,但它会使公式的其余部分更简单。在你上面提供的样品中,键入此单元格C1:

=IF(A1=B1,TRUE,FALSE) 

现在进入这个小区D1:

=IF(AND(C1,NOT(C2)),A2,"") 

这样做是检查当前的行头,但不是下一个,如果是,则复制下一行的第一个单元格,如果不是,则返回空白字符串。

每个后续单元格遵循相同的模式,但它首先检查前一个单元格是否为空。在E1单元格中输入这个函数:

=IF(D1="","",IF(AND(C1,NOT(C3)),A3,"")) 

现在你只需要复制另外10个单元格。不幸的是,复制和粘贴不起作用,因为您需要向下增加A3和C3,而复制和粘贴并将它们增加到右侧。因此,从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,"")) 

现在将这些单元格复制到数据集的底部,您应该得到您所追踪的结果。这里有一个例子:

Completed example

注意,在小区C21额外true,这样最后计算终止正确。然而,如果你的数据集中真的有一百万行,我会质疑使用Excel的智慧。根据您的情况和资源,您最好将数据保存在文本文件中并使用适当的脚本语言进行处理。