|
假定表格中A列是輸入姓名的,現在A1單元格已經有一個姓名了,我要從A2單元格往下輸入,要保證每次輸入不重復,方法如下:
選中A2單元格,點擊數據菜單->有效性,設置標簽里面,允許一欄選為“自定義”,公式為: =IF(ISBLANK(A2),TRUE,IF(ISERROR(VLOOKUP(A2,$A$1:B1,2,FALSE)),TRUE,FALSE)) 點擊確定,選中A2單元格,用鼠標往下拖動填充柄(填充柄:位于選定區(qū)域右下角的小黑方塊。將用鼠標指向填充柄時,鼠標的指針更改為黑十字),填充完預定要輸入姓名的區(qū)域即可。 現在試一下,在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)”部份執(zhí)行,這又是一個邏輯判斷,條件是“ISERROR(VLOOKUP(A88,$A$1:B87,2,FALSE))”,這是公式的核心內容。首先來看VLOOKUP(A88,$A$1:B87,2,FALSE),這個函數的作用是從A1到B87的區(qū)域內,查找是否存在有與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區(qū)域是你電話號碼表上的姓名列區(qū)域(從開始到你輸入姓名上一行的內容),如果姓名是從第五行開始的,哪就應該改為$C$5:D1294。 |
|
|