Dear All,
之前買大樂透時候,彩券官網公布中獎號碼後,都會將數字有小到大重新排列。因此,這個功能能夠在 Excel 中實現嗎? 果真,找到方法了。
如何將儲存格內的數字,由小到大、由大到小重新排列,並刪除重複的數字呢?
使用版本: Excel 2019
超級提醒: 因為怕跑格等錯誤發生,請下載後使用。
使用函數:
- ROW
- FIND
- ISNUMBER
- IF
- CONCAT
- IFERROR
函 數 介 紹
1. ROW 函數: 判斷選取範圍內所對應的絕對列位,是第幾列。
公式: =ROW(參照位置)。
如: =ROW(A1:A10),結果為1;=ROW(A10),結果為10。
參考文章: 88.Excel教學- ROW函數,COLUMN函數用法
2. FIND 函數: 查找某特定字元,是在該儲存格欄位中的「第幾字」。
公式: =FIND(查找字元, 儲存格欄位)。
如: =FIND(9,A2),查找數字9,在A2欄位中是第幾字,結果為8。
3. ISNUMBER 函數: 檢查該欄位內容是否為數字,是為TRUE;否為FLASE。
公式: =ISNUMBER(儲存格欄位)
如: =ISNUMBER(8),結果為TRUE。=ISNUMBER(A2),結果為TRUE。
4. IF 函數: 如果某欄位符合特定條件的話,執行條件A,否則執行條件B。
公式:=IF(特定條件,條件A,條件B)
如: =IF(TRUE,9,””),結果為9。=IF(FLASE,9,””),結果為””。
提醒:“”為空白顯示。
在IF公式中,特定條件為TRUE時,執行條件A;為FLASE時,執行條件B。
5. CONCAT 函數: 將範圍內或字串中的文字合併在一起,但不提供分隔符號。
上述函數與CONCATENATE 函數功能相同。
公式: =CONCAT(合併欄位A,欄位B,…)
如: =CONCAT("愛"," ","偷懶"),結果為愛 偷懶。
6. IFERROR 函數: 判斷該函數公式是否有錯誤/執行成功,如錯誤則顯示條件A。
公式: =IFERROR(欄位判斷是否執行成功,條件A)
{…} 符號功能
B2儲存格公式:
{=CONCAT(IF(ISNUMBER(FIND(9-(ROW(A1:A10)-1),A2)),9-(ROW(A1:A10)-1),""))}
C2儲存格公式:
=CONCAT(IF(ISNUMBER(FIND(9-(ROW(A1:A10)-1),A2)),9-(ROW(A1:A10)-1),""))
上述 2 個公式,主要差別在於「{ }」左大括弧、右大括弧符號。
說明: 在「陣列公式」中,使用「陣列常數」。主要用於範圍常數使用。
那一般的函數公式有辦法使用嗎?
不一定,必須滿足「範圍常數」的條件。如B2欄位公式中的「ROW(A1:A10)-1」,就有滿足範圍常數條件;反之「ROW(A10)-1」就無法。
如何執行此條件符號?
使用方法: 輸入完公式後,按下Ctrl + Shift + Enter鍵。
拆解B2儲存格公式
{=CONCAT(IF(ISNUMBER(FIND(9-(ROW(A1:A10)-1),A2)),9-(ROW(A1:A10)-1),""))}
ROW(A1:A10) = ROW(1),結果為 1。
ROW(A1:A10)-1 = ROW(1)-1,結果為 0。
(9-(ROW(A1:A10)-1) = (9-0),結果為 9。
FIND(9-(ROW(A1:A10)-1),A2) = FIND(9,A2),查找 9 是在 A2 欄位中是第幾字,結果為 8。
ISNUMBER(FIND(9-(ROW($A1:$A10)-1),A2)) = ISNUMBER(8),判斷 8 是否為數字,結果為 TRUE。
IF(ISNUMBER(FIND(9-(ROW(A1:A10)-1),A2)),9-(ROW(A1:A10)-1),"") = IF(TRUE,9-((1)-1),""),因為特定條件符合 (TRUE),所以執行條件 A,結果為 9。
接下來,因為使用 CONCAT 函數,能夠將數字串接起來。結果和差別如下圖。
拆解C2儲存格公式
{=CONCAT(IFERROR(FIND(ROW(A1:A10)-1,A3)^0*(ROW(A1:A10)-1),""))}
ROW(A1:A10) = ROW(1),結果為 1。
ROW(A1:A10)-1 = ROW(1)-1,結果為 0。
FIND(ROW(A1:A10)-1,A3) = FIND(0,A3),查找 0 是在 A3 欄位中是第幾字,結果為 5。
FIND(ROW(A1:A10)-1,A3)^0 = FIND(5)^0,5 的 0 次方,結果為 1。
提醒: 除了數字 0 外,所有數字的 0 次方結果皆為 1。
IFERROR(FIND(ROW(A1:A10)-1,A3)^0*(ROW(A1:A10)-1),"") = IFERROR(1*1-1),""),結果為 0。
最後,再使用 CONCAT 函數,將所得結果數字合併、串接起來。