我有一张包含 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 函数的好机会。只需从逐步拆分预期操作开始。
祝你好运。