close

Dear All,

之前買大樂透時候,彩券官網公布中獎號碼後,都會將數字有小到大重新排列。因此,這個功能能夠在 Excel 中實現嗎? 果真,找到方法了。

如何將儲存格內的數字,由小到大、由大到小重新排列,並刪除重複的數字呢?

使用版本: Excel 2019

練習檔下載: 第157篇.練習檔。

超級提醒: 因為怕跑格等錯誤發生,請下載後使用。

使用函數:

  • ROW
  • FIND
  • ISNUMBER
  • IF
  • CONCAT
  • IFERROR

image

函 數 介 紹

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 函數,能夠將數字串接起來。結果和差別如下圖。

image

image

拆解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 函數,將所得結果數字合併、串接起來。

image

arrow
arrow

    愛偷懶先生 發表在 痞客邦 留言(0) 人氣()