动态Excel图表与空白表作为起点投掷错误

时间:2014-07-11 20:57:48

标签: excel vba excel-vba charts

我创建了每月费用跟踪器。随着月份的进行输入收据,Excel将使用每个类别的公式自动创建所有付款类型的每月运行总计,如:

=((SUMIF($J$3:$J$58,"Computer", $I$3:$I$58))+(SUMIF($J$3:$J$58,"Computer", $F$3:$F$58))+(SUMIF($J$3:$J$58,"Computer", $E$3:$E$58)))

这些总计保存在每月收据输入界面底部的电子表格中。每个月收据输入界面基于其总计电子表格生成图表。然后通过链接将此数据传输到年度汇总电子表格,并根据该数据生成年度运行图表。除了一个问题,一切都很完美。每个月都以空白表开头。在输入数据之前,动态图表会抛出错误,具体为:

  

"此工作表中的公式包含一个或多个无效引用。"

只要有人查看空白图表,或者保存工作簿或Excel自动保存,就会出现此错误。

图表在名称管理器中运行两个项目:

CATEGORY =OFFSET(A!$B$105,0,0,A!$A$143,1)

TOTAL =OFFSET(A!$C$105,0,0,A!$A$143,1)

问题是,在输入第一张收据之前,$ 143美元为0,这就是造成错误的原因。该声明的价格为143澳元:

=+COUNTIF(C101:C134,">0")

这指向一个隐藏的排名表,其中包含一堆VLOOKUP数据,例如:

=VLOOKUP($A105,$C$64:$E$97,2,FALSE)

这是引用我上面第一段中提到的收据输入界面底部的运行月度总图表,其中的公式如下:

=(RANK(E93,$E$64:$E$97))+COUNTIF(E$64:E92,E93)

效果是忽略所有零值的费用类别。有许多可能的类别。因此,要将它们全部列在每个图表中,即使它们具有零值也会产生具有大量视觉混乱的演示文稿。

如果只是我使用工作簿,那就好了。但是会有其他人,他们肯定会被错误搞糊涂。任何帮助,将不胜感激。我大部分时间都在阅读博客文章,而且还没有#34;啊哈!"时刻。我已经尽力把这一切都放在一边所以这是可以理解的,同时还包括有用的细节。如果您有任何问题,请与我们联系。

2 个答案:

答案 0 :(得分:0)

您可以使用0陷印条件替换COUNT公式

=MAX(1,COUNTIF(C101:C134,">0"))

它会错误地显示1而不是0,但您可能只需选择较小的邪恶。

答案 1 :(得分:0)

因此,正如hnk所描述的那样,这个问题的解决方案并不容易出现。我想我会分享我是如何解决它的。这样,这个帖子就不是一个无用的孤儿。

如上所述,我没有留下空白的动态图表,而是在每个工作表中删除并用VBA触发器替换它们。例如:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$J$3" Then
Call A_Chart_Creation
End If

End Sub

这样,当每个月输入第一笔费用时(在必须填充单元格J3的过程中),宏(在本例中为A_Chart_Creation)创建动态图表,并从那里开始一切都在自动驾驶。由于费用跟踪器还包含年度摘要费用日志和图表,因此我在1月的宏中包含了年度图表的生成。这样一切都很好而且干净:没有用户混淆的错误。