KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 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 中根据指定条件查找最大值或最小值?

最佳办公效率工具

🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 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、Publisher、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 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱