如果条件为假,则保留单元格值不变(Microsoft Excel)
在使用IF函数时,如果条件为假,Vineet希望在单元格中保留旧值。换句话说,仅当IF函数测试的条件为真时,使用IF函数的单元格中的值才应更改。但是,默认情况下,如果条件为False,则IF函数将值设为0。
IF功能最多可以包含三个参数。第一个参数是要进行的比较,第二个参数是在比较为true时应返回的参数,第三个参数是在比较为false时应返回的参数。可以省略最后一个参数,但是如果比较失败,则Excel将返回值0。 (这就是Vineet通过其IF函数用法返回的内容。)
那么,显而易见的解决方案是确保为IF函数提供在比较为假时应返回的内容。例如,假设您的公式在单元格B1中,而您正在比较单元格A1中的某些内容。您使用的公式可能如下所示:
=IF(A1<10,"under ten",B1)
请注意,如果A1中的值小于10,则返回单词“低于10”。如果不满足此条件,则返回B1中的值。
由于此公式位于单元格B1中,因此,如果条件为false,则返回单元格中的先前值。
这也意味着该公式包含一个循环引用。为了使循环引用正常工作,您需要让Excel知道可以在工作表中进行循环引用。选择工具|选项|计算选项卡,并确保选中迭代复选框。 Excel现在将允许在没有投诉的情况下进行循环引用。
如果您不想在工作表中使用循环引用,那么唯一的办法就是创建一个宏,该宏根据对单元格A1的任何更改来更新单元格B1中的值:
Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Range) ' See if the change is related to our cell If Not (Application.Intersect(Target, Range("A1")) _ Is Nothing) Then If Range("A1") < 10 Then Range("B1") = "under ten" End If End If End Sub
每当工作簿中有更改时,都会执行此简单宏,并将其添加到ThisWorkbook模块中。如果值是单元格A1更改了(并且只有该单元格),那么将检查该值以查看它是否小于10。如果是,则更改单元格B1中的值。如果不是,那么将保留单元格B1中的值。
到目前为止讨论的任何方法,公式或宏都需要记住一个“陷阱”。如果单元格A1中的值是15(假设),则单元格B1中将包含之前的内容。如果将单元格A1中的值更改为7,那么B1将更改为“低于10”。很好,但是从那时起,单元格B1似乎永远不会改变。为什么?因为如果随后将单元格A1的值更改为大于10,则单元格B1将包含(如前所述)之前的内容。而且,正如您现在所了解的,以前存在的值是前一个真实结果的结果,即“小于10”。因此,从这一点来看,公式或宏的正确与否显示的文字是“低于10”。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(8260)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: