IF(logical_test,value_if_true,value_if_false)
if函数 Logical_test 表示条件,条件符合就把value_if_true值赋给单元格,不符合就把value_if_false值赋给单元格。
你的条件是A1=B1,你要赋值的单元格也是A1,所以会报错的。
如果要实现,只能单独把条件区域输入一列,如第三列 A1单元格=if(C1=B1,0,C1)
用VBA也会有循环引用问题。
自动变成0不能通过条件格式达到,只能是表面上的隐藏,比如把字变成白色,这样就看不到了。
设置方法如下:
公式输入 =$A1=$B1 ,格式选 字体为白色
用条件格式无法实现的,格式是无法改变当前单元格的值的。
应该可以使用VBA来实现。用条件公式也不行的。
VBA的方法如下(Excel 2003):
1)设置安全级别:菜单 ->工具->宏->安全性,将安全性的级别设置为中级。
2)菜单 ->工具->宏->Visual Basic编缉器,打开进行编辑:
在窗口左侧的VBAProject..点击右键,在弹的菜单中选择“插入”->“模块”,然后在右侧中输入以下内容。
Sub a()
If Worksheets("Sheet1").Evaluate("B1") = Worksheets("Sheet1").Evaluate("A1") Then
Worksheets("Sheet1").Evaluate("A1") = "0"
End If
End Sub
然后再双击左侧的Sheet1,再在右侧中填入以下的内容:
Private Sub Worksheet_Change(ByVal Target As Range)
Call a
End Sub
好了,以上的操作就行了,保存退出,重开这个档案,这时注意要启用“宏”
你这个是无法实现的,
因为假设B1的内容是0,
在A1中输入0,假如你真有这个功能了,那么这个功能会无限循环地运行下去了。
但是如果你想把结果(即A1自动变为0)放到除A1、B1以外的地方还是可以的
如放到C1中,刚在C1中输入:=IF(A1=B1,0,"")
这是不可能的啊,违反了EXCEL的规则,原因有下:
1、A1要输数,又要自已会变(自己会变只有用公式)是不可能的。这情况就等同于叫你吃饭,但又要不给你吃饭。每一个格里只可能是常量或是变量,不可能又是常量又是变量
2、EXCEL公式的运算强调一种原则,不可自己调用自己,否则就是死循环啦