[英]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)易於安裝和使用:
如果您保存工作簿,則UDF將隨之保存。 如果您在2003年以后使用Excel版本,則必須將文件另存為.xlsm而不是.xlsx
刪除UDF:
要從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.