Excel图表制作:如何忽略带*标记的无效数据点
嘿,这个问题我之前帮同事踩过坑,Excel默认把带*的文本值当成0确实闹心,给你几个实用的解决办法,按需选就行:
方法1:预处理提取有效数据(最直观,适合小批量)
先把原始数据里的有效数值单独拎出来,再用干净的数据做图表:
- 如果你的数据是单单元格内用空格分隔(比如A1是整行数据),用Excel 365/2021的新函数一键提取:
这个公式会先把单元格内容按空格拆分成单个数据项,过滤掉开头带*的无效值,再把剩下的有效数值用空格拼接起来。=TEXTJOIN(" ", TRUE, FILTER(TEXTSPLIT(A1, " "), LEFT(TEXTSPLIT(A1, " "), 1) <> "*")) - 要是用的是旧版Excel(没有TEXTSPLIT),可以用这个数组公式(输入后按
Ctrl+Shift+Enter确认):=TEXTJOIN(" ", TRUE, IF(LEFT(TRIM(MID(SUBSTITUTE(A1, " ", REPT(" ", 100)), (ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*100+1, 100)), 1) <> "*", TRIM(MID(SUBSTITUTE(A1, " ", REPT(" ", 100)), (ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*100+1, 100)), "")) - 提取完后,用「数据→分列」功能,按空格把拼接好的数值拆成单独的列,再用这些列做图表就行。
方法2:直接让图表忽略无效值(不用动原始数据)
如果不想修改原始数据,只要把无效值转成空单元格,再设置图表忽略空值:
- 假设原始数据是按列排列的(每个数据点占一个单元格),在旁边新建一列,用公式判断:
下拉填充所有行,这样带*的无效值会变成空单元格。=IF(LEFT(B1, 1) = "*", "", B1) - 选中这些空单元格,右键选择「隐藏」(列的话隐藏列,行的话隐藏行),然后制作图表,Excel默认会忽略隐藏的单元格数据。
- 或者图表做好后,右键点击数据系列→选择数据→点击「隐藏的单元格和空单元格」→选择「空单元格显示为:空距」,这样空值就不会被当成0显示了。
方法3:用Power Query批量清洗(适合几千行的大数据)
如果数据量很大,手动处理太麻烦,用Power Query批量清洗效率更高:
- 选中原始数据区域,点击「数据」选项卡→「从表格/区域」,导入Power Query编辑器。
- 如果数据是单单元格内用空格分隔,点击「拆分列→按分隔符」,选择空格,把数据拆成多列。
- 选中所有列,点击「转换→替换值」,把包含的内容替换成空;或者直接筛选掉开头带的列/行。
- 点击「关闭并上载」,把清洗好的数据导出到新工作表,直接用这个干净的数据源做图表就行。
最后提醒下:如果你的数据是按行排列的,制作图表时记得选择「按行」作为数据系列,这样有效数据就会按你想要的顺序排列成94.22 96.80 95.29 96.38 94.67 95.22啦。
内容的提问来源于stack exchange,提问作者d01




