如何在 Excel 中自动将行转换为列

如何在 Excel 中自动将行转换为列

我有一张包含 2000 行的表格,结构如下

company   product   targetJan   targetFeb   targetMarch   targetApril ...
Google    Docs      10          20          30            40
Google    Mail      13          25          45            70

我想转换到

Company  product  Date  Target
Google   Docs     Jan   10
Google   Docs     Feb   20
...
Google   Mail     Jan   13
...

我不知道该如何解决这个问题,而且我对宏或 vba 也不是很熟悉。我该如何解决这个问题?

编辑:我录制了一个宏,它可以完成这项工作,但仅限于我指定的第一行。现在我需要弄清楚如何将其应用于整个文档的每 12 行:https://pastebin.com/D9yUHxZk

答案1

无需使用宏即可完成此操作。以下公式会在现有数据的右侧填充一个新表:

在此处输入图片描述

这些公式分别从 O2:R2 向下填充,给出所示的结果。

 =OFFSET($A$2,TRUNC((ROW()-2)/12),0)
 =OFFSET($B$2,TRUNC((ROW()-2)/12),0)
 =RIGHT(OFFSET($C$1,0,MOD((ROW()-2),12)),3)
 =OFFSET($C$2,TRUNC((ROW()-2)/12),MOD((ROW()-2),12))

请注意(为简单起见)我已更改您的目标标题,因此月份部分是三个字母的缩写。如果您想提取更长的月份名称,可以使用 MID() 和 LEN() 文本函数来完成。

填写完所有新数据后,您可以根据需要删除包含旧数据的列。但首先,选择所有新数据,复制它,然后选择选择性粘贴 > 值...,这样当您删除派生它的列时数据就不会丢失。

答案2

要将行转换为列(转置):

  • 复制你的范围
  • 粘贴
  • 单击粘贴选项(粘贴数组的右下角)
  • 点击转置 (T)

否则,您的转置示例不清楚,但如果您希望它更加自定义,这是一个学习一些 vba/excel 函数的好机会。只需从逐步拆分预期操作开始。

祝你好运。

相关内容