无限公司的思路是对的,我把具体方法补充一下!
假定表格中A列是输入姓名的,现在A1单元格已经有一个姓名了,我要从A2单元格往下输入,要保证每次输入不重复,方法如下:
选中A2单元格,点击数据菜单->有效性,设置标签里面,允许一栏选为“自定义”,公式为:
=IF(ISBLANK(A2),TRUE,IF(ISERROR(VLOOKUP(A2,$A$1:B1,2,FALSE)),TRUE,FALSE))
点击确定,选中A2单元格,用鼠标往下拖动填充柄(填充柄:位于选定区域右下角的小黑方块。将用鼠标指向填充柄时,鼠标的指针更改为黑十字),填充完预定要输入姓名的区域即可。
现在试一下,在A2单元格以下的A列输入数据时,只要与前面任一单元格的内容一致,就会显示输入值非法的提示框,好了,任务完成。
好吧!把公式原理说一下,你就知道了。
上面的公式中,用填充柄进行填充后,假如是第88行,其数据有效性的判断公式相应填充为:
=IF(ISBLANK(A88),TRUE,IF(ISERROR(VLOOKUP(A88,$A$1:B87,2,FALSE)),TRUE,FALSE))
再来分析上面的公式,首先是用最外层的IF函数,判断条件是ISBLANK(A88),作用是先判断A88是否已填入数据,现在,如果要在A88中填入数据,哪ISBLANK函数为FALSE,IF转向后面的“IF(ISERROR(VLOOKUP(A88,$A$1:B88,2,FALSE)),TRUE,FALSE)”部份执行,这又是一个逻辑判断,条件是“ISERROR(VLOOKUP(A88,$A$1:B87,2,FALSE))”,这是公式的核心内容。首先来看VLOOKUP(A88,$A$1:B87,2,FALSE),这个函数的作用是从A1到B87的区域内,查找是否存在有与A88单元格的内容相同的单元格,有两种可能:
1、如果有的话(假定是A11),就返回B11单元格的内容,这时,ISERROR(B11)判断为FALSE,(ISERROR作用是判断是否为#N/A,如果是就返回TRUE,不是就返回FALSE),哪第二层IF函数返回值为FALSE,整个公式的值为FALSE,EXCEL的有效性判断为非法值,就会出现提示。
2、如果没有,“VLOOKUP(A88,$A$1:B87,2,FALSE)”就会返回一个错误值为“#N/A”,此时ISERROR函数结果为TURE,哪第二层IF函数返回值为TRUE,整个公式返回值TRUE,EXCEL的有效性判断为合法值,就可以输入了。
这样,C1295单元格的公式可设置为:
=IF(ISBLANK(C1295),TRUE,IF(ISERROR(VLOOKUP(C1295,$C$1:D1294,2,FALSE)),TRUE,FALSE))
注意,这里的$C$1:D1294区域是你电话号码表上的姓名列区域(从开始到你输入姓名上一行的内容),如果姓名是从第五行开始的,哪就应该改为$C$5:D1294。
口水都讲干了,懂了吗?
查找完后就删除,否则你就得编程序,进行比较,相同的就取消
数据-有效性。
在菜单栏中点击“筛选”“自动筛选”输入一个数值查找你要的数值,选择相等,想还原原来的界面,再次点击“筛选”“自动筛选”
你可以在条件格式里设置,如果重复的话用不同的颜色提示出来。
跟数据有效性的区别是如果你想输入还是可以输入,但要比数据有效性小,如果数据量很大的话,我建议你用条件格式,这样整个文件相对要小点,打开速度会快点。