答案1
我最初误读了你的问题 - 你有右边的数据,你想把它转换成左边的数据?我不是专业人士,但我的做法是如图所示这里(我的声誉不足以在线发布图片)。
本质上,我在左侧创建了几个辅助索引,第一个跟踪当前行的位置,如果有数据可用,则该索引会增加,否则会重置为零:
=IFERROR(IF(INDEX(data,A3+1,B3)<>"",A3+1,1),1)
IFERROR 只是因为我有一个命名数组(数据),它有限制,而我不想检查是否已达到该限制。A3 是对当前单元格正上方的先前使用的行的引用,而 B3 是对先前使用的列(右上方)的引用。
列索引公式仅取当前行,如果为 1,则表示我们已经开始了一个新列,因此取先前使用的列并加 1,否则我们坚持使用同一列。
=IF(A4=1,B3+1,B3)
日期列仅获取当前列索引并使用“索引”获取它
=IFERROR(INDEX(dates,1,B4),"")
值列仅获取行和列索引并从表中弹出值:
=IFERROR(INDEX(data,A4,B4),"")
行/列的初始索引设置为 1,其余部分自动生成。希望这能有所帮助!
答案2
这可以通过 Power Query 完成。
选择范围内的单元格,然后单击“数据功能区”>“从表格”(或者,对于 2016 之前的 Excel 版本,请安装 Power Query 加载项,然后单击“Power Query 功能区”>“从表格”)。然后
- 勾选“我的表格有标题”复选框,然后单击“确定”。
- 当数据在 Power Query 编辑器中打开时,单击“添加列”>“索引”。
- 选择新创建的索引列,然后单击“转换”>“取消透视其他列”
现在,数据已标准化,您可以添加命令来排序、重命名列,最后删除不再需要的索引列。然后保存查询以将数据加载到电子表格中。当原始数据发生变化时,您可以刷新查询以更新标准化列表。