匹配多个工作表数组中的值

时间:2017-07-24 15:29:11

标签: arrays excel-2010 matching

我有一张8张工作簿,其中包含同一单元格中的分数(I28)。工作表以参与者命名并包含空格。我想知道哪个是8分的最高分,哪个更难,谁有这个分数。

最高分很容易通过MAX或LARGE功能检索(= MAX(' Sheet1:Sheet8' $ I $ 28),但我很难将这个高分与参与者相匹配该分数。参与者的名字在表单上没有,它只是具有参考的表单名称。

如何在不首先列出分数的情况下让Excel与最高分数匹配?如果得分相同,是否可以列出更多名称?

1 个答案:

答案 0 :(得分:0)

尝试这个小的用户定义函数:

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窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从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