2011-12-07 53 views
17

一些行索引我有A列在隨機順序值一樣發現,發生第一

 A column 
      2 
      3 
      4 
      2 
      5 
      6 
      4 
      3 
      4 

我希望發生的第一特定數量的行索引。說如果我說個數爲4的返回值應該是3

我也希望所發生last.say如果我說的數字是3,特定數量的行索引,則返回的值必須是8

我想Vlookupfind功能要完成的任務,但不能把它們放在order.please能幫我做這些

+0

我認爲你需要遍歷所有的列值的最後出現。 – chance

+0

@chance我很感謝你的幫助,但我確實知道,但我相信必須有一個內置的功能,可能我想找到哪個更優化比循環 – niko

回答

36

我的例子,尋找號碼3但很容易適應。

爲了找到第一次出現,則可以使用:

=MATCH(3,A:A,0) 

爲了找到最後一個,則可以使用陣列式(驗證具有Ctrl鍵 + + 輸入

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

請注意,您也可以使用第一個數組公式爲MIN,但它會是相當複雜的是它的價值。

+1

天才在其簡單! –

+0

如果您需要重複查找相同的文本,但在不同的「部分」或組中,對於A:替代另一個MATCH和INDIRECT的某種組合 – tbone

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保存爲。XLSM格式,如果您使用Excel 2007或2010

  8. 幫助

  9. A欄:在A列輸入數據,然後點擊按鈕或運行宏

  10. 按下按鈕或運行宏

你的結果會是這樣

B欄:數字,在數據確認E獨特d在列A

列C:數據

列d的第一次出現:數據