如何用公式将横向数据按日期匹配转成纵向格式(Excel 2019)
Excel 2019实现横向数据按日期+登记号匹配转纵向并自动关联登记号
方法一:函数组合(实时自动更新)
假设你的Table A结构如下:
- A列:登记号(enroll)
- B1:Z1:日期表头(如2024/01/01、2024/01/02)
- B2:Z100:对应登记号+日期的班次数据
Table B需要生成日期、登记号、班次的纵向结构,且K2输入登记号后N列自动返回对应班次,操作步骤:
- 生成日期序列:在L2输入公式,下拉至出现#REF!为止:
=INDEX($B$1:$Z$1,ROW(A1)) - 绑定登记号:M2输入公式并下拉,自动关联K2的登记号:
=$K$2 - 提取对应班次:N2输入公式下拉,匹配日期和登记号提取数据,空班次自动显示“无班次”:
=IFERROR(INDEX($B$2:$Z$100,MATCH($K$2,$A$2:$A$100,0),MATCH(L2,$B$1:$Z$1,0)),"无班次")
方法二:Power Query批量转换(适合大数据量)
如果数据量较大,用Power Query批量转置更高效:
- 选中Table A全部数据,点击数据→从表格/区域,加载到Power Query编辑器(确保数据有表头)。
- 选中登记号列,点击转换→逆透视列→逆透视其他列,数据自动转为纵向结构:登记号、属性(日期)、值(班次)。
- 重命名列:将“属性”改为“日期”,“值”改为“班次”。
- 点击关闭并上载,将转换后的表加载到新工作表(命名为Table B)。
- 回到原工作表,N2输入数组公式(按
Ctrl+Shift+Enter确认)并下拉:=INDEX(Table_B[班次],MATCH(L2&$K$2,Table_B[日期]&Table_B[登记号],0)) - 当Table A数据更新时,右键Table B→刷新即可同步数据。
内容的提问来源于stack exchange,提问作者Moaz Abdullah
相关产品推荐
相关产品推荐

