簡體   English   中英

在多個工作表數組中匹配值

[英]Match value in multiple sheets array

我有一個包含8個工作表的工作簿,其中每個工作單元中都包含一個分數(I28)。 表格以參與者的名字命名,並包含空格。 我想知道哪一個是8分中得分最高的,更難的是誰得分高。

最高分數很容易通過MAX或LARGE函數獲取(= MAX('Sheet1:Sheet8'$ I $ 28),但是我很難將這個高分數與獲得該分數的參與者相匹配。參與者的名字在工作表,只有工作表名稱具有引用。

如何讓Excel將最高分數與合適的參與者匹配,而無需首先列出分數? 如果分數相等,是否可以列出更多名稱?

試試這個小的用戶定義函數:

Public Function PersonOfInterest()
    Dim v As Variant, nam As String
    Application.Volatile
    nam = Sheet1.Name
    v = Sheet1.Range("J28").Value
    For i = 2 To 8
        v2 = Sheets(i).Range("J28").Value
        If v2 > v Then
            v = v2
            nam = Sheets(i).Name
        End If
    Next i

    PersonOfInterest = nam
End Function

編輯#1:

用戶定義函數(UDF)易於安裝和使用:

  1. ALT-F11彈出VBE窗口
  2. ALT-I ALT-M打開一個新模塊
  3. 將內容粘貼並關閉VBE窗口

如果您保存工作簿,則UDF將隨之保存。 如果您在2003年以后使用Excel版本,則必須將文件另存為.xlsm而不是.xlsx

刪除UDF:

  1. 如上調出VBE窗口
  2. 清除代碼
  3. 關閉VBE窗口

要從Excel使用UDF:

= myfunction的(A1)

要總體上了解有關宏的更多信息,請參見:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有關UDF的詳細信息,請參見:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必須啟用宏才能使其正常工作!

編輯#2:

此版本將返回多個名稱:

Public Function PersonsOfInterest()
    Dim v As Variant, nam As String
    Dim i As Long, v2 As Variant
    Application.Volatile
    nam = Sheet1.Name
    v = Sheet1.Range("J28").Value
    For i = 2 To 8
        v2 = Sheets(i).Range("J28").Value
        If v2 > v Then
            v = v2
        End If
    Next i

    PersonsOfInterest = ""
    For i = 1 To 8
        If Sheets(i).Range("J28").Value = v Then
            If PersonsOfInterest = "" Then
                PersonsOfInterest = Sheets(i).Name
            Else
                PersonsOfInterest = PersonsOfInterest & ", " & Sheets(i).Name
            End If
        End If
    Next i
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM