我有一个excel电子表格,其中有多个标签和单元格填充了%值。有些细胞读数为20%,30%,40%等,这些细胞的格式为“百分比”。总和单元将所有这些百分比总和等于100%。我正在尝试编写一个简单的宏/规则,如果它不等于100%,它将不断读取sum单元格并抛出警报。我不知道该怎么办。
我正在尝试使用数据验证来执行此操作而不是任何编码,因为我真正想要的是,如果总数从100开始更改,则用户无法更改单元格的值。数据验证仍然无法正常工作。它似乎总是抛出错误。有没有人对此有任何想法?我选择了数字范围,在数据验证中,我选择Custom我说的是= Sum(C5:C10)= 100。即使总数为100,这总是会引发错误。有什么想法吗?
答案 0 :(得分:0)
如果我已正确理解您的问题,您将无需任何代码即可完成此操作。
例如,您的百分比单元格位于Sheet3,Sheet4和Sheet5的B2:B6范围内。
在Sheet6上,您可以使用公式=SUM(Sheet3:Sheet5!$B$2:$B$6)
注意:这是一个3D公式,并提供Sheet4介于Sheet3和&之间。 Sheet5以Tab键顺序。
然后,您可以对总数使用条件格式 - 仅格式化包含的单元格 - 单元格值大于1 。
然后将其格式化为明显的东西(我通常使用带有红色背景的粗体黄色文本)。
好的,作为对评论的回复,请将此代码添加到工作表代码模块中,该模块将在每次工作表计算时运行:
Private Sub Worksheet_Calculate()
If Cells(6, 3) > 1 Then
MsgBox "Total is too high"
End If
End Sub
答案 1 :(得分:0)
您可以使用UDF替换SUM函数:
Function SumAndAlert(rng As Range) As Variant
SumAndAlert = Application.Sum(rng)
If Application.CountBlank(rng) = 0 And SumAndAlert <> 1 Then MsgBox "not 100%"
End Function
但我认为在输入数据时弹出消息框可能有点烦人。
答案 2 :(得分:0)
我不会使用Worksheet_Calculate事件过程,因为这样做会导致过于频繁地评估MsgBox条件。
尝试将其保持在绝对最小值,如下:
LinearLayout