我一直在努力为下一个问题编写一个公式,但我从来没有弄清楚它。所以:
我必须在2D数组中找到前n个值并记下连接到该值的行名和列名(没有重复项!)。举个例子,这是一个数组:
A B C D E F
1 Aron Jamie Matt Taylor Zedd
2 Aron - 5 7 6 8
3 Jamie 5 - 2 4 3
4 Matt 7 2 - 15 12
5 Taylor 6 4 15 - 26
6 Zedd 8 3 12 26 -
应该用公式写下什么,在这个例子中,前3个值和与这些值相关的名称:
A B C
Taylor Zedd 26
Taylor Matt 15
Matt Zedd 12
谢谢!
答案 0 :(得分:1)
删除重复项,然后您可以使用Large()来计算出这样的三个最大数字:
=LARGE($B$2:$F$6,ROW(A1))
复制下来。使用C列中的前三个,您可以使用这两个数组公式作为名称:
=INDEX($A$1:$A$6,MIN(IF($B$2:$F$6=C10,ROW($B$2:$F$6))))
=INDEX($A$1:$F$1,MIN(IF($B$2:$F$6=C10,COLUMN($B$2:$F$6))))
使用 Ctrl 确认 - Shift - 输入。
答案 1 :(得分:0)
使用您的数据,运行此宏:
Sub dural()
Dim i As Long, j As Long, K As Long
i = 3: j = 2: K = 1
Do
Cells(K, "G") = Cells(i, 1)
Cells(K, "H") = Cells(1, j)
Cells(K, "I") = Cells(i, j)
K = K + 1
j = j + 1
If Cells(i, j).Value = "-" Then
j = 2
i = i + 1
If i = 7 Then Exit Do
End If
Loop
Range("G1:I10").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("I1:I10") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("G1:I10")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
将在 G , H 和我列中为您提供完整的结果。
选择前三行以获得前三个结果: