Excel:是否写入与特定值连接的列和行名称?
我一直在试着为下一个问题写一个公式,但我从来没有把它弄错。因此: 我必须在2D数组中找到前n个值,并写下与该值相连的行和列名(没有重复项!)。例如,下面是一个数组:Excel:是否写入与特定值连接的列和行名称?,excel,Excel,我一直在试着为下一个问题写一个公式,但我从来没有把它弄错。因此: 我必须在2D数组中找到前n个值,并写下与该值相连的行和列名(没有重复项!)。例如,下面是一个数组: A B C D E F 1 Aron Jamie Matt Taylor Zedd 2 Aron - 5 7 6
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
谢谢 删除重复项,然后可以使用Large()计算出三个最大的数字,如下所示:
=LARGE($B$2:$F$6,ROW(A1))
抄写下来。对于C列中的前3个,您可以使用以下两个数组公式作为名称:
=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-Enter键确认
使用数据,运行此宏:
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和I列中获得完整的结果
选择前三行以获得前三个结果:
您能否将
行(A1)
更改为行(A1)*2
,OP将能够保留重复的值?但我喜欢这种方法。