如何按year、week条件匹配行并将非空结果汇总输出为单列

方案1:Excel/WPS 公式实现(适合小数据量快速处理)
如果你用的是Excel 365/2021、WPS 2022及以上版本,直接用如下公式即可:
=TOCOL(FILTER(C:Z,(A:A=目标年份)*(B:B=目标周数)),1)
参数说明:
- 把
C:Z替换为你表中除了year、week列之外的所有数据列范围 - 把
目标年份、目标周数替换为你要匹配的具体值,也可以引用单元格值 - TOCOL第二个参数填1,表示自动忽略转换过程中的空值
如果是低版本Excel,使用如下数组公式(输入后按Ctrl+Shift+Enter生效):
=INDEX($C:$Z,SMALL(IF(($A:$A=目标年份)*($B:$B=目标周数)*($C:$Z<>""),ROW($C:$Z),99999),ROW(A1)),MOD(SMALL(IF(($A:$A=目标年份)*($B:$B=目标周数)*($C:$Z<>""),ROW($C:$Z)*1000+COLUMN($C:$Z),99999999),ROW(A1)),1000)-COLUMN($C:$C)+1)
公式下拉到出现#REF!错误为止,就是所有匹配的非空结果。
方案2:Power Query 实现(适合批量重复处理)
如果需要经常更新数据做相同转换,用Power Query更高效:
- 选中数据表,点击「数据」选项卡-「从表格/区域」加载到Power Query编辑器
- 选中
year和week列,筛选出你需要匹配的年份和周数 - 按住Ctrl选中
year、week两列,右键点击「逆透视其他列」 - 选中新生成的「值」列,筛选掉空值
- 删除不需要的「属性」列,最后点击「关闭并上载」即可得到单列结果
方案3:Python Pandas 实现(适合大数据量处理)
如果数据量较大,用pandas可以快速完成转换,示例代码如下:
import pandas as pd # 读取源数据,支持Excel、csv等格式 df = pd.read_excel("你的数据表路径.xlsx") # 按目标年周筛选数据,示例为筛选2024年第12周 target_df = df[(df["year"] == 2024) & (df["week"] == 12)] # 提取所有非空值转单列 result = target_df.drop(columns=["year", "week"]).stack().reset_index(drop=True).to_frame("匹配结果") # 导出结果到文件 result.to_excel("输出结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者erikburg
相关产品推荐
相关产品推荐

