在excel中返回多个逗号描述的列标题值

时间:2017-02-02 23:11:07

标签: excel-formula

我的数据集:

enter image description here

我有这样的数据排序,但是,我希望有一个单元格显示数据,如下面的任何选项。我按照我的偏好顺序列出了它们。

  1. UT(4),CO(2),NY(1)---基本上是列标题,括号中的值为降序(最理想)
  2. UT,CO,NY ---没有值计数的相同想法,仍然是降序
  3. CO,NY,UT - 基本上只是一个清单。
  4. 到目前为止,我有两个公式只返回第一列。

    公式1:

    =IF(COUNTA($U2:$BS2)=0,"",INDEX($U$1:$BS$1,MATCH(FALSE,INDEX(ISBLANK($U2:$BS2),0),0)))
    

    公式2:

    =IF(COUNTA($U2:$BS2)=0,"",INDEX($U$1:$BS$1,MATCH(TRUE,INDEX($U2:$BS2<>"",0),0)))
    

    关于我能做什么的任何建议?

1 个答案:

答案 0 :(得分:0)

编辑 - 添加VBA功能以实现此目的,而无需对数据进行排序:

Function StateSort(range As range)
    maxValue = 0

    'Find max value in row
    For Each cell In range
        If cell.Value > maxValue Then maxValue = cell.Value
    Next cell

    StateSort = ""
    'Loop backwards from max value down to 0
    Do While maxValue >= 0
        For Each cell In range
            If cell.Value <> "" Then
                If cell.Value = maxValue Then
                    'If your state labels aren't in row 1, change the                       
                    'Cells(<row number>, cell.Column) portion below with the row number

                    StateSort = StateSort & Cells(1, cell.Column) & " (" & cell.Value & "), "
                End If
            End If
        Next cell

        maxValue = maxValue - 1
    Loop
End Function

使用它的方法是右键单击底部的“工作表”选项卡,然后单击“#34;查看代码”#34;这将打开代码编辑器。在菜单中,转到插入&gt;模块。然后将此代码粘贴到空白处并保存工作簿(启用宏以便脚本运行)。

enter image description here

现在您可以使用=StateSort(<range>)(传递值范围),它会格式化您的数据。

enter image description here

旧答案(留下作为按行排序的例子)

如果你去Sort&gt;,你可以按行排序。选项......&gt;从左到右排序

因此,您可以将每个州的总和放在一个单独的行中。然后,您只需按总和排序,并使用CONCAT函数使标题看起来正确。例如:=CONCAT("UT (", A4, ")")其中A4是具有状态总和的单元格,将为您提供UT (4)

完整示例:

这里是带和和行的初始数据:

enter image description here

在这里,您可以看到第7行和第8行中的公式: enter image description here enter image description here

然后选择您要排序的区域,然后转到排序&gt;选项......从左到右排序。选择第7行(在此示例中)以按:

排序

enter image description here

enter image description here

您的最终排序数据:

enter image description here