【问题标题】:find a row index of a number that occurred first查找首先出现的数字的行索引
【发布时间】:2011-12-07 08:38:29
【问题描述】:

我有 A 列,其中的值按随机顺序排列,例如

       A column
           2
           3
           4
           2
           5
           6
           4
           3
           4

我想要首先出现的特定数字的行索引。说如果我说数字是 4 返回的值应该是 3

我还想要最后出现的特定数字的行索引。如果我说数字是 3,那么返回的值必须是 8

我在想Vlookupfind 函数必须完成任务但无法将它们按顺序排列。请帮我解决这些问题

【问题讨论】:

  • 我认为您需要遍历列值。
  • @chance 感谢您的帮助,但我确实知道,但我相信肯定有一个内置函数,我猜可能会找到比循环更优化的函数

标签: excel excel-formula


【解决方案1】:

我的示例正在寻找号码3,但它很容易适应。

要查找第一次出现,您可以使用:

=MATCH(3,A:A,0)

要找到最后一个,您可以使用数组公式(使用 Ctrl+Shift+Enter 验证)

{=MAX(IF(A1:A10=3,ROW(A1:A10),0))}

请注意,您也可以对第一个带有 MIN 的数组公式使用数组公式,但它的价值会相当复杂。

【讨论】:

  • 如果您需要重复查找相同的文本,但在不同的“部分”或组中,A:A 替代另一个 MATCH 和 INDIRECT 的组合
【解决方案2】:

你好朋友,你可以使用宏来做到这一点

使用以下代码

Sub FindNumbers()

    Sheet1.Range("B:D") = ""
    Application.ScreenUpdating = False
    tot = Sheet1.Range("A1048575").End(xlUp).Row
    i = 1
    k = 1
    m = 1
    n = 1
    o = 1
    p = 1

    For i = 1 To tot
            c = Application.WorksheetFunction.CountIf(Sheet1.Range("B:B"), Sheet1.Range("A" & i).Value)
            If c <= 0 Then
            Sheet1.Range("B" & k).Value = Sheet1.Range("A" & i).Value
            k = k + 1
            End If
    Next

    tots = Sheet1.Range("B1048575").End(xlUp).Row

    For m = 1 To tots
        For n = 1 To tot
            If Sheet1.Range("B" & m).Value = Sheet1.Range("A" & n).Value Then
            Sheet1.Range("D" & m).Value = n
            End If
        Next
    Next

    For o = 1 To tots
        For p = 1 To tot
            If Sheet1.Range("B" & o).Value = Sheet1.Range("A" & p).Value Then
            Sheet1.Range("C" & o).Value = p
            p = tot
            End If
        Next
    Next

    Application.ScreenUpdating = True

End Sub

如何使用代码? (如果您不熟悉宏)

  1. 打开一个新的 excel 文件

  2. 按 Alt + F11

  3. 插入新模块

  4. 将代码粘贴到模块中

  5. 回到excel表格并添加一个按钮

  6. 将宏“FindNumbers”分配给按钮

  7. 如果您使用的是 excel 2007 或 2010,请将 excel 保存为 .xlsm 格式

  8. 帮助

  9. A 列:在 A 列输入您的数据,然后单击按钮或运行宏

  10. 按下按钮或运行宏

你的结果会是这样的

B 列:A 列中输入的数据中唯一的数字

C 列:数据的第一次出现

D 列:最后一次出现的数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2011-05-08
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多