Excel:写入与特定值相关的列和行名称?

时间:2016-02-20 19:07:54

标签: excel

我一直在努力为下一个问题编写一个公式,但我从来没有弄清楚它。所以:

我必须在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

谢谢!

2 个答案:

答案 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 - 输入

enter image description here

答案 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 列中为您提供完整的结果。

选择前三行以获得前三个结果:

enter image description here