![如何隐藏 Excel 分组条形图中的零值?](https://linux22.com/image/1578084/%E5%A6%82%E4%BD%95%E9%9A%90%E8%97%8F%20Excel%20%E5%88%86%E7%BB%84%E6%9D%A1%E5%BD%A2%E5%9B%BE%E4%B8%AD%E7%9A%84%E9%9B%B6%E5%80%BC%EF%BC%9F.png)
假设以下数据:
X | A | B | C | D | E | F
Group 1 | 1 | 0 | 0 | 2 | 0 | 0
Group 2 | 0 | 0 | 3 | 0 | 1 | 0
Group 3 | 0 | 1 | 0 | 0 | 0 | 2
基本上,我测量了 A 到 F 的 6 个元素,因此我有 6 个值。它们属于 3 种不同的类型,因此我创建了 3 个组。
我想使用分组条形图,这样我只有 6 个条形图,按组分组。因此,理论上,人们会按以下顺序看到数据:ADCEBF,其中 A 和 D 属于一起,C 和 E,依此类推:
我设法使用条形图部分地实现了这一点,但 Excel 对所有组都显示从 A 到 F(也显示零值元素)。因此,我现在看到 18 个条形图,其中有 12 个(零)间隙:ABCDEFABC ... F。而且,使用我的方法,组之间没有间隙。
如何才能实现仅显示非零值的分组图表?如果有其他策略,我不介意使用。或者甚至是 VB 脚本。
到目前为止,我发现数据透视图与我尝试的最为接近。但我还没有设法在组之间获得间距。
答案1
因此从理论上讲,人们会按以下顺序看到数据:ADCEBF
首先生成“已排序”表格,然后仅绘制条形图。
TLDR :从此(生成的)表中绘制条形图
| F | B | E | C | D | A
Group 1 | | | | | 2 | 1
Group 2 | | | 1 | 3 | |
Group 3 | 2 | 1 | | | |
一步步
- 清理表格。使所有‘0’变成“”。
- 获取非“0”条目的列号。
- 对步骤2中的数字进行排序,除以10,然后将行号作为整数添加。
- 排序生成的第 3 步数字得到 1,2,3,4..
- 根据已排序的“步骤 4”数字生成新表(第 1 部分,共 2 部分)
- 使用“步骤 5”数字中的索引匹配生成新表(第 2 部分,共 2 部分)
- 从新表中绘制条形图。
假设 B1 是“X”,H4 是 OP 表中的最终数据,这些是详细步骤:
输入 :
A6 ----> cleaned
A11 ----> column
A15 ----> rank1
A19 ----> rank2
A24 ----> generate new table
A28 ----> generate final table
第 1 步工作:
C6 ----> =C1
并拖动到 H6,然后
C7 ----> =IF(C2=0,"",C2)
并拖动直到 H9。然后进行步骤 2:
C11 ----> =IF(C7="","",COLUMN(C7))
并拖动直到 H13。然后进行步骤 3:
C15 ----> =IFERROR(ROW(C11)+RANK(C11,$C11:$H11,1)/10,"")
并拖动直到 H17。对于步骤 4:
C19 ----> =IFERROR(RANK(C15,$C$15:$H$17,0),"")
并拖动直到 H21,然后进行步骤 5:
C23 ----> =B23+1
并拖动直到 H23,然后
C25 ----> =IFERROR(MATCH(C$23,$C19:$H19,0),"")
并拖动直到 H27,最后:
B30 ----> =B7
并拖动直到 F32,然后
C29 ----> =INDEX($C6:$H6,1,MAX(C$25:C$27))
并拖动直到 H29,然后
C30 ----> =IFERROR(INDEX($C7:$H7,1,C25),"")
并拖动直到 H32。
使用 B29:H32 表生成条形图。希望对您有所帮助。(: