如何将数据从多列转移到一列?

如何将数据从多列转移到一列?

我需要将所有这些值放在一列中。我需要一个像这样的矩阵范围,例如:{29,28,25,11,20,21,16,13,15,10,23 ,, 9,22,0,21,12 ,,, 21 , 25} 等等……等等,您该怎么做?我尝试使用公式“Transpose ()”但没有成功,有什么方法可以做到这一点吗?

在此处输入图片描述

答案1

您可以在单元格中编写一个简单的公式(在您的示例中),其中B9使用和是您需要获取的数据的位置。在您的示例中,它将从 开始。INDIRECT(ADDRESS(x,y))xy(1,1)

(正如 Scott Craner 在评论中指出的那样,您可能想要使用INDEX()而不是INDIRECT())。

位置x将从 1 增加到 n,然后重复。因此,您可以使用函数MOD()来执行此操作。在我们的例子中,ROW()是我们需要使用的数字。由于MOD()是从零开始的,因此您必须进行一些数学运算,但没有什么大不了的:

MOD(ROW() - 9, 1000) + 1
  • '-9' 是因为我们从第 9 行开始。在您的例子中,如果您有 2,000 行,当然会更接近 2,000。数字必须在第一个条目中变为 0。
  • 1,000 是电子表格中的列数。

对于y位置,可以使用整数除法(即 a FLOOR())。同样,ROW()从 1 开始,因此我们需要考虑到这一点。

FLOOR((ROW() - 9) / 1000) + 1
  • “-9”和 1,000 与上面的类似。

现在我们有了一个完整的公式:

=INDIRECT(ADDRESS(MOD(ROW() - 9, 1000) + 1, FLOOR((ROW() - 9) / 1000) + 1))

首先验证第一个单元格(即)是否按预期工作,然后通过复制行(即选择之后的 N 行,然后点击)B9对接下来的几个单元格(B10、 )重试。您应该测试足够多的单元格,这样您就会开始看到第二行出现在新列中。B11B9Ctrl-D

现在选择B9所有行,垂直复制整个值集(因此,如果您有 1,000 列 × 2,000 行,则需要该列中有 2,000,000 行,但不太确定 Excel 是否可以做到这么多)

这将垂直复制数据。如有必要,您可以在单独的工作表中执行此操作,而不是在现有数据下方执行此操作。由您决定。引用行时,需要包含工作表的名称。我不太确定如何使用,ADDRESS但您可能可以在文档中找到信息。不过,此时,这是公式,而不仅仅是纯数据。如果您想将该列转换为纯数据,请将其保存在不保存公式的 CSV 文件中。然后重新加载 CSV 并将该列复制到您想要的位置。

无需 VBA 即可完成。(尽管公式是一种 VBA 表达式……)

相关内容