0

我是 Excel 新手,到目前为止的旅程一直很好,但我自己无法解决这个特定问题。我正在处理如下表格:

在此处输入图像描述

本质上,我希望引用 B3:E6 中列中的标签数组,并执行以下操作:

创建“唯一标签”列:通过删除重复项在 H 列中创建唯一的“标签”列表。

创建一个“Maximum Marks”列:在每一行的数组中查找每个唯一标签,并从同一行的标记列中返回标记。如果标签出现在多行中。这些多行对应的分数之和应该在第一列的最大分数列中返回。例如,'EASY'出现在E3和E5中。因此,在“唯一标签”列表中,“EASY”应对应于最大标记 = 4 (2+2)。

我可以使用 SUMIF 等公式手动执行此操作,但我正在寻找一种自动化方法,因为我可能必须对具有附加行和列的类似数据集执行此操作。我也对 VBA 解决方案持开放态度,但更喜欢某种公式。

我希望我已经解释得足够好!感谢并期待您的意见。

4

1 回答 1

1

一种方法是创建一个函数,该函数返回唯一单元格的数组,然后将它们全部乘以 Marks 列中的匹配项。

使用此数组函数创建唯一单元格。请注意,此函数使用 Dictionary 对象。在 VB 编辑器中,转到工具 > 参考,并确保选择了 Microsoft Scripting Runtime。

Public Function UniqueValues(aRange As Range)
Dim DictValues As New Dictionary
Dim cll As Variant
Dim aryResults() As String
For Each cll In aRange
    If Not DictValues.Exists(cll.Value) Then DictValues.Add cll.Value, "":
Next

UniqueValues = DictValues.Keys
Set DictValues = Nothing
End Function

在单元格 H3 中输入并按 CTRL SHIFT RETURN(因为它是一个数组函数)

=TRANSPOSE(uniquevalues(B3:E6))

并向下拖动到 H15 或更高

我们必须使用 TRANSPOSE,因为数组从函数中连续出来。

接下来我们需要找到匹配的单元格并相乘。在 C15 中输入以下公式

=INDEX(SUM((($B$3:$E$6=H3)*1)*$F$3:$F$6),1)

将其拖至 H15。

于 2013-06-09T21:17:33.480 回答