MS Access 365 组合图表生成空白月份列问题求解
MS Access 365 组合图表空白月份+保留全部门图例解决方案
方案1:纯内置图表设置(无需改代码,优先推荐)
直接调整图表属性即可实现需求:
- 打开现代组合图表的属性面板,切换到「轴」选项卡,关闭「显示空轴条目」开关,即可自动过滤掉月份为空的空白列
- 再切换到「图例」选项卡,开启「显示所有预定义系列」,无论对应部门是否有当月错误数据,都会在图例中保留该部门名称
方案2:查询微调+图表设置(稳定性更高)
如果方案1的内置设置因为数据波动失效,可以用最小SQL调整实现:
- 先新建一个仅包含有数据月份的查询(查询设计可视化操作即可,无需手动写SQL):
- 新增查询,添加
T_Errors表 - 添加字段
Periode: Format([Oprettet_dato],"mmm"),设置分组总计,保存为Q_ValidMonths,该查询只会返回存在错误记录的月份,无空值
- 新增查询,添加
- 调整你原有的统计查询SQL如下:
SELECT T_Departments.Afdeling, Q_ValidMonths.Periode, Nz(Sum(T_Errors.Samlet_økonomi),0) AS SumOfSamlet_økonomi FROM (T_Departments, Q_ValidMonths) LEFT JOIN T_Errors ON T_Departments.Id = T_Errors.Afdeling AND Format(T_Errors.Oprettet_dato,"mmm") = Q_ValidMonths.Periode GROUP BY T_Departments.Afdeling, Q_ValidMonths.Periode ORDER BY Q_ValidMonths.Periode;
该查询会生成所有部门+所有有效月份的组合,没有错误成本的部门对应月份值为0,既没有空白月份列,也能保证所有部门出现在系列中,图例默认就会显示全部门。
方案3:VBA方案(适合动态筛选场景)
如果你需要后续加时间范围筛选等功能,可以用VBA实现动态控制,你有Excel VBA基础很容易适配:
Sub RefreshCostChart() ' 绑定你的统计查询 Dim qdf As QueryDef Set qdf = CurrentDb.QueryDefs("你的统计查询名称") ' 过滤空月份条目 qdf.SQL = Replace(qdf.SQL, "GROUP BY", "WHERE Periode IS NOT NULL GROUP BY") ' 刷新图表 Me.YourChartName.Requery Set qdf = Nothing End Sub
内容的提问来源于stack exchange,提问作者mlan
相关产品推荐
相关产品推荐

