想在EXCEL 做一個CHECK DIGIT 既功能

2008-12-24 6:01 am
要check 既數字串如下:
一供八個位,
01234567
check 既方法如下
(將頭七個數字 - 最尾個數字) 除 7, 如個係整數(即除得盡),
咁果八個位既數字就有效,

如果唔係整數(即除唔盡), 咁就想整到果一格變紅色, 話俾 user 知個數字串無效.
e.g 1:
71638475
checking process :
(7163847 - 5 ) / 7


如果要響EXCEL 做以上 checking, 應該要怎樣寫呢 ?

回答 (2)

2008-12-25 10:36 am
✔ 最佳答案
新田美香果然犀利,我看過你之前的解答,都十分精彩。但我覺得這樣做不能100%確定輸入正確,例如輸入9個7 (即777777777),輸入7個7,又或者入英文字,都不會變紅色。

設 A 全欄都要有驗證,我有一個建議:

1. 全選 A 欄,按 (格式)(儲存格)(數字類別)改為(文字)。讓輸入者輸入 07777777 這個正確組合時,不會變成 7777777。

2. 按(資料)(驗證)(設定)儲存格內允許改為(自訂),在(公式)輸入
=AND(LEN(A1)=8,MOD(A1-RIGHT(A1)*11,7)=0)
確定
(如出現 : 公式的值將會導致錯誤,按(是),這只是因為你尚未輸入一個正確號碼)

這樣做,錯誤的資料根本無法輸入,何必要讓錯誤變成紅色呢?
當然如果你輸入 77777770 時入錯 77777777,雖然只是按錯一個字,但這兩個組合都正確,無法控制了。

2008-12-25 18:06:20 補充:
RIGHT(A1)*11,是把最後一個數字乘大11倍,這是方便做計算工作。

把你原本想在 (個位) 做的減數工作,在 (十位) 完成。

7163847 - 5 = 7163842 這個數能整除 7

71638475 - 55 = 71638420 這個數相差十倍,也一定能整除 7

2008-12-26 00:09:32 補充:
新田美香提點正確!負數問題應該防止,以下公式能解決吧。

=AND(A1*1>0,LEN(A1)=8,MOD(A1-RIGHT(A1)*11,7)=0)

而小數問題在MOD裏己防止了。
2008-12-24 9:32 am
假設數字在A1:A100
Highlight A1:A100
按格式
>> 設定格式化的條件
>> 公式為
>>輸入公式 =mod(a1-right(a1)*11,7)
>>按格式
>>按色彩
>>選紅色
>>確定 >>確定
完成



2008-12-25 23:24:50 補充:
人家題目是checking 8個位的數字段, checking其實已有隱藏著意思, 是所有8個位的數字串的資料是已存在, 只是檢查這些資料是否符合條件而用變色來識別。正解當然是用條件格式, 驗證是不能對已輸入數字作任何判斷的。
如khshiu2202195認為, 判斷8位數而加上 Len(A1)=8, 亦不是100%正確, 因遇上小數或負數便會判斷錯誤

2008-12-26 02:27:53 補充:
khshiu2202195的新公式是可以(用于驗證)了


收錄日期: 2021-04-13 16:19:09
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20081223000051KK01927

檢視 Wayback Machine 備份