如何用单个区域引用堆叠足球赛程日期矩阵为单列并处理空值?
Excel矩阵转单列的优化方案
问题背景
你有足球赛程日期的矩阵表格,想要将其转为单列,当前使用公式:=TRANSPOSE(HSTACK(B2:F2,B3:F3,B4:F4,B5:F5,B6:F6))
但存在两个问题:
- 需逐个引用每行,无法直接引用整个区域(如
B2:F6) - 空单元格会输出
00/01/1900,希望显示为空白
解决方案
针对Excel 365/2021及以上版本(支持动态数组)
直接使用TOCOL函数,一次性解决两个问题:
=TOCOL(IF(B2:F6=0,"",B2:F6), , FALSE)
参数说明:
B2:F6:直接引用你的整个矩阵区域,无需逐行拼接IF(B2:F6=0,"",B2:F6):将对应00/01/1900的空日期单元格(数值为0)替换为空白字符串- 第三个参数
FALSE:设置按行优先顺序转成单列,和你原公式的输出顺序完全一致
针对旧版Excel(无动态数组支持)
使用INDEX函数配合行列计算,下拉填充即可:
=IF(INDEX(B2:F6,INT((ROW(A1)-1)/COLUMNS(B2:F6))+1,MOD(ROW(A1)-1,COLUMNS(B2:F6))+1)=0,"",INDEX(B2:F6,INT((ROW(A1)-1)/COLUMNS(B2:F6))+1,MOD(ROW(A1)-1,COLUMNS(B2:F6))+1))
逻辑说明:
INT((ROW(A1)-1)/COLUMNS(B2:F6))+1:计算当前行对应的原矩阵行号MOD(ROW(A1)-1,COLUMNS(B2:F6))+1:计算当前行对应的原矩阵列号IF(...):将空日期对应的数值0替换为空白
内容的提问来源于stack exchange,提问作者Statto
相关产品推荐
相关产品推荐

