Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

如何在 Excel 中找到第一個/最後一個正數/負數?

Author: Xiaoyang Last Modified: 2025-08-23

當處理一列包含正數和負數的數字時,您可能經常需要快速定位範圍內的第一個或最後一個正數或負數。這對於數據分析、趨勢檢測或在大型數據集中識別特定的進入點尤其有幫助。對於大數據集,依賴手動檢查效率低下且容易出錯。幸運的是,Excel 提供了幾種實用的方法來簡化此任務,讓您可以使用公式或自動化提取所需的精確值。下面,您會找到適合不同場景的多種解決方案,包括適用於重複或大規模操作的理想高級方法。

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

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

VBA 宏查找第一個/最後一個正數/負數


arrow blue right bubble 使用陣列公式查找第一個正數/負數

要從一系列值中提取第一個正數或負數,您可以使用 Excel 的陣列公式。這種方法適合需要為適度數據範圍快速解決方案並且熟悉公式的用戶,特別是在限制額外插件或宏的環境中。如果您的源數據發生變化,陣列方法會自動更新,非常適合動態列表。以下是實現方法:

1. 選擇一個空白單元格,輸入以下陣列公式以獲取第一個正數:

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

這裡,A2:A18 指的是您想搜索的數據列表。這個公式定位範圍內第一個大於 0 的單元格,然後返回該單元格的內容。請參閱以下截圖:

A screenshot showing a dataset to find the first positive number in Excel

2. 輸入公式後,同時按下 Ctrl + Shift + Enter,而不是僅按下 Enter。這樣將正確執行陣列公式並返回列表中的第一個正數,如下例所示:

A screenshot showing the result of the first positive number using an array formula in 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 就足夠了,因為它支持動態陣列。


arrow blue right bubble使用陣列公式查找最後一個正數/負數

如果您希望確定列中的最後一個正數或負數,可以使用不同的陣列公式。此方法適合快速分析結束趨勢或定位最近的特定類型數據點。請注意,此方法動態反映數據更新,在您定期向列表新增數字時尤為有用。

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 然後返回最後一次出現的值。見下圖說明:

A screenshot showing the array formula for finding the last positive number in Excel

2. 按下 Ctrl + Shift + Enter 確認公式(除非您的 Excel 版本支持動態陣列)。結果將顯示指定範圍內的最後一個正數,如下所示:

A screenshot showing the result of the last positive number using an array formula in 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")

請避免在範圍內合併單元格或結合文字/數字格式,因為它們可能會破壞公式的計算結果。在使用這些方法之前,始終驗證您的數據完整性以獲得最佳準確性。


arrow blue right bubbleVBA 宏查找第一個/最後一個正數/負數

如果您經常需要在多個範圍或非常大的數據集中查找第一個或最後一個正數或負數,使用 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 (或點擊 Run button 執行 按鈕),然後按照以下步驟進行:

  • 將彈出一個對話框,提示您選擇數字範圍(例如,A2:A18)。
  • 接下來,輸入您的搜索類型:鍵入 FirstPos 查找第一個正數,FirstNeg 查找第一個負數,LastPos 查找最後一個正數,或 LastNeg 查找最後一個負數(不區分大小寫)。
  • 輸入選擇並確認後,結果將顯示在消息框中。

提示:

  • 此宏可以處理用戶選擇的任何連續數字範圍,使數據佈局更加靈活。
  • 如果指定的類型與範圍內的任何數字都不匹配,您將收到通知而不是錯誤。
  • 請確保您的 Excel 啟用了宏以便 VBA 代碼正常運行。
  • 如果您的數據包含非數字值,宏在處理過程中將忽略它們。

 

故障排除和建議:對於所有解決方案,始終確認您的選擇包含預期範圍且不包括標題。如果您使用大範圍,請考慮限制範圍大小以避免計算或性能延遲,特別是在使用陣列公式或宏時。

如果您發現自己經常執行此任務或希望更多自定義,請考慮在宏中組合多個條件或創建專用按鈕以便更方便訪問。嘗試新 VBA 腳本前始終保存您的工作,如果是編程新手,請在備份副本上測試。


相關文章:

如何在 Excel 中找到第一個/最後一個大於 X 的值?

如何在 Excel 中找到一行中的最大值並返回列標題?

如何在 Excel 中找到最大值並返回相鄰單元格的值?

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

最佳 Office 生產力工具

🤖 Kutools AI 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
15 大工具集12 項文本工具添加文本刪除特定字符…)50+ 儀表 類型甘特圖等)40+ 實用 公式基於生日計算年齡等)19 項插入工具插入QR码根據路徑插入圖片等)12 項轉換工具金額轉大寫匯率轉換等)7 項合併與分割工具高級合併行分割儲存格等)...及更多
使用 Kutools,語言任你選 — 支援英語、西班牙語、德語、法語、中文及超過40 種語言!

運用 Kutools for Excel,全面提升您的 Excel 技能,體驗前所未有的高效。 Kutools for Excel 提供超過300 項進階功能,讓您提升工作效率、節省時間。 點此尋找您最需要的功能...


Office Tab 為 Office 帶來分頁介面,讓您的工作更加輕鬆簡單

  • 在 Word、Excel、PowerPoint 中啟用分頁編輯與閱讀
  • 在同一視窗的新分頁中打開與創建多份文件,而非開啟新視窗。
  • 提升您的生產力50%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用