KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中快速找出第一個或最後一個正數/負數?

作者Xiaoyang修改日期

當您在處理同時包含正數與負數的數字欄位時,經常需要快速找出範圍內的第一個或最後一個正數或負數。這在數據分析、趨勢偵測,或於大型資料集中識別特定切入點時特別實用。若依靠人工檢查大型資料集,不僅效率低落,還容易出錯。所幸 Excel 提供多種實用方法,能透過公式或自動化方式精準提取所需數值,大幅簡化此類任務。以下針對不同情境提供多種解決方案,包括適合重複執行或大規模作業的進階技巧。

使用陣列公式找出第一個正數/負數

使用陣列公式找出最後一個正數/負數

使用 VBA 巨集找出第一個/最後一個正數/負數


藍色右向箭頭氣泡使用陣列公式找出第一個正數/負數

若要從一系列數值中快速提取第一個正數或負數,可善用 Excel 的陣列公式。此方法特別適合熟悉公式操作、需迅速取得結果,且處理中等規模資料區域的使用者,尤其適用於無法使用額外增益集或巨集的環境。當來源資料發生變動時,該陣列公式會自動更新,完美契合動態清單的需求。以下是具體操作步驟:

1. 選取一個空白儲存格,輸入下列陣列公式以取得第一個正數:

=INDEX(A2:A18,MATCH(TRUE,A2:A18>0,0))

其中,A2:A18 是您要搜尋的資料清單。此公式會找出範圍中第一個大於 0 的儲存格,並傳回其內容,如下圖所示:

顯示在 Excel 中尋找第一個正數的資料集截圖

2. 輸入公式後,請同時按下 Ctrl + Shift + Enter,而非僅按 Enter,才能正確執行陣列公式,並如以下範例所示,傳回清單中的第一個正數:

顯示在 Excel 中使用陣列公式取得第一個正數結果的截圖

提示:若要改為取得第一個負數,只需使用下列公式(輸入後記得按下 )Ctrl + Shift + Enter):

=INDEX(A2:A18,MATCH(TRUE,A2:A18<0,0))

上述兩種公式只需調整條件()>0 代表正數,<0 代表負數),即可精準鎖定所需的數字類型。請注意,陣列公式不支援空白儲存格的參照,因此務必確保您的數據區域不含任何空白儲存格,以獲得一致且可靠的結果。若所有數字皆為正數或負數,公式可能會傳回錯誤—若您希望隱藏錯誤並顯示自訂訊息,可搭配使用 IFERROR 函數,讓報表更專業、易讀!

注意:在 Excel 近期版本(Office 365 及 Excel 2021 以後版本)中,系統已支援動態陣列,因此無需使用 Ctrl + Shift + Enter,僅按 Enter 即可。


藍色右向箭頭氣泡使用陣列公式找出最後一個正數/負數

若您的目標是找出欄位中最後一個正數或負數,可運用另一種陣列公式。此方法不僅能快速分析趨勢的終點,還能精準鎖定指定類型的最新資料點。更值得留意的是,它會隨著資料更新自動調整——當您定期在清單末尾新增數值時,這項功能尤為實用。

1. 在資料欄旁選取一個空白儲存格,並輸入下列陣列公式以找出最後一個正數:

=LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 >0, $A$2:$A$18))

此公式巧妙運用 LOOKUP 在面對極大數值時會自動傳回最後一個符合條件數值的特性:其中,IF($A$2:$A$18 >0, $A$2:$A$18) 負責篩選所有正數,而 LOOKUP 則精準傳回最後出現的數值。如下圖所示:

顯示在 Excel 中尋找最後一個正數的陣列公式截圖

2. 確認公式時,請按下 Ctrl + Shift + Enter(除非您的 Excel 版本支援動態陣列),即可顯示限定區域中最後一個正數值,如下方範例所示:

顯示在 Excel 中使用陣列公式取得最後一個正數結果的截圖

若要傳回最後一個負數,請改用下列陣列公式,同樣需搭配 Ctrl + Shift + Enter

=LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 <0, $A$2:$A$18))

若找不到任何正數或負數,公式將傳回錯誤()#N/A)。為妥善處理此情況,請將公式包覆於 IFERROR 函數中。例如:

=IFERROR(LOOKUP(9.99999999999999E+307, IF($A$2:$A$18 >0, $A$2:$A$18)), "No match found")

務必避免在範圍內使用合併儲存格,或混用文字與數字的格式,以免干擾公式計算結果。為確保最佳準確度,請於使用這些方法前,先確認資料的完整性。


藍色右向箭頭氣泡 使用 VBA 巨集找出第一個/最後一個正數/負數

若您經常需要在多個範圍或超大型資料集中快速找出第一個或最後一個正數或負數,運用 VBA 巨集自動化此任務將大幅節省時間並降低人為錯誤風險。此解決方案能立即掃描所選區域並回傳所需數值,非常適合用於批次處理或重複性分析作業。VBA 方法尤其適用於需搭配複雜條件或自訂工作流程的場景,但使用者須具備 Excel 開發人員工具的基本操作能力。

1. 按一下開發人員 > Visual Basic,開啟 Microsoft Visual Basic for Applications 視窗。接著在 VBA 編輯器中,按一下插入 > 模組,並將下列程式碼貼上至新模組中:

Sub FindFirstOrLastPosNegNumber()
    Dim rng As Range
    Dim cell As Range
    Dim result As Variant
    Dim firstPos As Variant, firstNeg As Variant
    Dim lastPos As Variant, lastNeg As Variant
    Dim selType As String
    
    On Error Resume Next
    Set rng = Application.InputBox("Select the data range", "KutoolsforExcel", Selection.Address, Type:=8)
    
    If rng Is Nothing Then Exit Sub
    
    selType = Application.InputBox("Type 'FirstPos' for first positive, 'FirstNeg' for first negative, 'LastPos' for last positive, or 'LastNeg' for last negative:", "KutoolsforExcel", "FirstPos", Type:=2)
    
    If selType = "" Then Exit Sub
    
    firstPos = Empty
    firstNeg = Empty
    lastPos = Empty
    lastNeg = Empty
    
    ' Find first positive and first negative
    For Each cell In rng
        If IsNumeric(cell.Value) Then
            If firstPos = Empty And cell.Value > 0 Then
                firstPos = cell.Value
            End If
            If firstNeg = Empty And cell.Value < 0 Then
                firstNeg = cell.Value
            End If
            If cell.Value > 0 Then
                lastPos = cell.Value
            End If
            If cell.Value < 0 Then
                lastNeg = cell.Value
            End If
        End If
    Next cell
    
    Select Case UCase(selType)
        Case "FIRSTPOS"
            result = firstPos
        Case "FIRSTNEG"
            result = firstNeg
        Case "LASTPOS"
            result = lastPos
        Case "LASTNEG"
            result = lastNeg
        Case Else
            result = "Invalid input"
    End Select
    
    If IsEmpty(result) Then
        MsgBox "No matching value found in the selected range.", vbInformation, "KutoolsforExcel"
    Else
        MsgBox "Result: " & result, vbInformation, "KutoolsforExcel"
    End If
End Sub

2. 若要執行巨集,請按下 F5(或按一下)執行按鈕執行按鈕),並依照下列步驟操作:

  • 系統將彈出對話方塊,提示您選取數字範圍(例如 A2:A18)。
  • 接著,輸入您的查找類型:FirstPos 取得第一個正數、FirstNeg 取得第一個負數、LastPos 取得最後一個正數,或 LastNeg 取得最後一個負數(不區分大小寫)。
  • 輸入選擇並確認後,結果將顯示在訊息方塊中。

提示:

  • 此巨集可處理使用者所選取的任何連續數值範圍,讓資料佈局更加靈活彈性。
  • 若指定的類型與範圍內的任何數字皆不相符,系統將顯示通知,而非錯誤。
  • 請務必先在 Excel 中啟用巨集,VBA 程式碼才能順利執行。
  • 若您的資料包含非數值內容,巨集將自動忽略這些項目。

 

疑難排解與建議:所有解決方案皆須確認所選範圍正確且不含標題列。若使用大型範圍,建議縮小範圍以避免計算延遲或效能問題,特別是在使用陣列公式或巨集時。

若您經常執行此任務,或需要更多自訂功能,可考慮在巨集中結合多重條件,或建立專用按鈕以快速存取。嘗試新的 VBA 腳本前,務必先儲存檔案;若您是程式設計新手,建議先在備份副本上測試。


相關文章:

如何在 Excel 中找出第一個或最後一個大於 X 的數值?

如何在 Excel 中找出某欄的最大值,並傳回對應的欄位標題?

如何在 Excel 中找出最大值,並傳回其相鄰儲存格的數值?

如何在 Excel 中根據特定條件找出最大值或最小值?

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用