在Excel 2013中,我使用单元格中的值标记散点图。我希望标签不重叠。我可以手动移动标签,但我已经创建了一个过滤器来自动创建新图,所以我希望标签反冲突自动发生。
这可能吗?没有VBA的解决方案的奖金。
以下重叠标签的示例:
答案 0 :(得分:4)
这是一个非VBA解决方案,如果没有太多的点并且值的范围相当稳定,则可以正常工作。
它的工作原理是将Y系列分成两个独立的系列,一个在点上方有标签,另一个在点下方有标签。
默认情况下,积分将放入系列中,标签位于该点下方。但是,对于每个点,拆分公式检查是否有另一个附近点低于或等于当前点。如果有,则将当前点放入具有该点上方标签的系列中。
我假设您有3列数据:过滤器,X,Y。(如果您只是在X或Y上过滤,也可以忽略过滤器列,这也适用)
需要四个工作栏。前两个是X Filtered和Y Filtered。
使用下面屏幕截图中的示例,此公式进入D2并填充D和E列:
=SUBTOTAL(9,B2)
如果数据点被过滤掉,只会导致数据点转到0,0,以便在拆分公式中忽略它们。
为了便于阅读,请将过滤值的名称设置为X(D2:D10)和Y(E2:E10)
然后,此公式作为数组公式进入F2,使用CTRL + SHIFT + ENTER
输入,然后填充。
=IF(SUM((ABS(D2-X)<0.75)*(E2-Y>0)*(E2-Y<0.75))+(SUM((ABS(D2-$D$2:D2)<0.75)*($E$2:E2=E2))>1),E2,NA())
此公式创建带有点上方标签的系列。该公式进行了两项检查:
如果满足其中任何一个条件,则使用该值,否则使用NA()(因此不显示任何点)。
在此公式中,close定义为&#34; 0.75&#34;在X轴和Y轴上。您需要根据&#34;关闭&#34;更改公式中的这些值。在你的数据中。即X和Y值的差异要求标签放置在点的相对侧。
然后该公式进入G2以创建具有点下方标签的系列,这是所有剩余值:
=IF(ISERROR(F2),E2,NA())
只需要一个技巧就可以让自动过滤器处理数据。因为我们使用了SUBTOTAL公式,所以Excel认为最后一行是小计行,并自动将其从自动过滤器中排除,即使我们在应用自动过滤器之前选择了所有数据。要使用自动过滤器,在创建自动过滤器之前,您实际上需要创建一个没有小计函数的额外虚拟行。
现在,使用2个系列创建散点图:
系列1使用X和Y以上
系列2使用X和Y
(这些数据系列中不需要包含空行)
将所有细节中的两个系列格式化为相同,但系列1的标签显示在点上方,而系列2的标签显示在点下方。
我的屏幕截图显示了结果,包括过滤时的结果。标签将始终低于值,除非附近有另一个可见点。每个屏幕截图还显示了其中一个公式。
所有要点:
过滤&#34; a&#34;
过滤&#34; b&#34;
编辑:我们实际上可以使公式更智能地处理多个近似值。这将在上面和下面的标签之间交替每个后续值。但是,它只适用于所有值都在&#34; close&#34;范围,仅当数据按X排序时才
=IF(SUM((ABS(D2-X)<0.75)*(E2-Y>0)*(E2-Y<0.75))+(MOD(SUM((ABS(D2-$D$2:D2)<0.75)*($E$2:E2=E2)),2)=0),E2,NA())