這篇文章介紹的技巧很有趣,不知道讀完后,有沒有感興趣的朋友能再貢獻出幾個全數字(pandigitals)來。
技巧來源于使用公式從由數字字母組成的字符串末尾返回數字,例如在單元格A1中有下面的字符串:
ABCDEF123456
使用公式:
=0+MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&”0123456789″)),LEN(A1))
將返回字符串末尾的數字123456。
我們已經知道,在公式中,將字符串“0123456789”與單元格A1中的字符串聯接,以避免MIN函數返回錯誤,因為如果在單元格A1中沒有包含從0-9中的所有數字,那么從FIND函數中返回的結果將包含錯誤值,而MIN函數不能忽略錯誤值,這樣會導致公式的結果是錯誤值。
首先在單元格A1中的字符串末尾添加“0123456789”,確保要查找的字符串中現在至少包含1個0-9中的每個數字(這樣,從FIND返回的所有10個值都是非錯誤值),同時通過將這個由0-9這10個數字組成的字符串放在A1的末尾以確保不會影響MIN函數所需的輸出。
下面的公式也可以得到相同的結果:
=0+MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&7^18)),LEN(A1))
這里使用了7^18來代替添加字符串“0123456789”。究其原因,7^18的結果為1628413597910450,包含0-9中的每個數字,因此可以達到與前面給出的公式相同的效果。
其實,還可以使用5^19來代替字符串“0123456789”,原因同上。那么,還能不能找到運算后的結果是這些全數字(pandigital)的計算式呢?
當然,這樣的操作數不勝數,但需要注意的是,操作中的字符總數應盡可能短,并且在Excel中是可復制的,下圖1展示一些這樣的運算式/數字列表。
圖1
列C中檢查這些生成的數字中是否包含0-9這10個數字,在單元格C2中的公式為:
=SUMPRODUCT(0+ISNUMBER(FIND({0,1,2,3,4,5,6,7,8,9},B2)))
可以從中選擇一個包含0-9這10個數字且最小的/最短的作為字符串“0123456789”的替換。