Excel formula 在excel中返回多个逗号分隔的列标题值

Excel formula 在excel中返回多个逗号分隔的列标题值,excel-formula,Excel Formula,我的数据集: 我对数据进行了这样的排序,但是,我希望有一个单元格,可以像下面的任何选项一样显示数据。我已经按我的喜好顺序列出了它们 UT(4)、CO(2)、NY(1)——基本上是列标题,括号中的值按降序排列(最理想) UT、CO、NY——同样的想法,没有价值计数,仍然降低顺序 CO、NY、UT——基本上只是一个列表 到目前为止,我有两个只返回第一列的公式 公式1: =IF(COUNTA($U2:$BS2)=0,"",INDEX($U$1:$BS$1,MATCH(FALSE,INDEX(ISBL

我的数据集:

我对数据进行了这样的排序,但是,我希望有一个单元格,可以像下面的任何选项一样显示数据。我已经按我的喜好顺序列出了它们

  • UT(4)、CO(2)、NY(1)——基本上是列标题,括号中的值按降序排列(最理想)
  • UT、CO、NY——同样的想法,没有价值计数,仍然降低顺序
  • CO、NY、UT——基本上只是一个列表
  • 到目前为止,我有两个只返回第一列的公式

    公式1:

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

    =IF(COUNTA($U2:$BS2)=0,"",INDEX($U$1:$BS$1,MATCH(FALSE,INDEX(ISBLANK($U2:$BS2),0),0)))
    
    =IF(COUNTA($U2:$BS2)=0,"",INDEX($U$1:$BS$1,MATCH(TRUE,INDEX($U2:$BS2<>"",0),0)))
    
    =IF(COUNTA($U2:$BS2)=0,”,索引($U$1:$BS$1,匹配(TRUE,索引($U2:$BS2“”,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
    
    函数状态排序(范围作为范围)
    最大值=0
    '查找行中的最大值
    对于范围内的每个单元格
    如果cell.Value>maxValue,则maxValue=cell.Value
    下一个细胞
    StateSort=“”
    '从最大值向后循环到0
    当maxValue>=0时执行此操作
    对于范围内的每个单元格
    如果单元格的.Value为“”,则
    如果cell.Value=maxValue,则
    '如果您的州标签不在第1行中,请更改
    '单元格(,cell.Column)下面的行编号部分
    StateSort=StateSort&Cells(1,cell.Column)和“(&cell.Value&”)
    如果结束
    如果结束
    下一个细胞
    maxValue=maxValue-1
    环
    端函数
    
    使用方法是在底部的“工作表”选项卡上单击鼠标右键,然后单击“查看代码”,这将打开代码编辑器。在菜单中,转至插入>模块。然后在空白空间中粘贴此代码并保存工作簿(如宏启用,以便脚本运行)。

    现在您可以使用
    =StateSort()
    (传入值的范围),它将格式化您的数据


    旧答案(留下作为按行排序的示例) 如果您转到排序>选项…>从左到右排序

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

    完整示例:

    以下是包含总和行和标签行的初始数据:

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

    然后选择要排序的区域并转到排序>选项。。。从左到右排序。选择要排序的第7行(在本例中):

    以及最终排序的数据:


    这个例子实际上是按升序排序的,所以在倒数第二张图中,您希望“顺序”是“从大到小”才能按降序排序。您好,好主意,谢谢您的回复。我不知道您可以更改排序轴,但是结果将不同于我所希望的。不是你的错,是我的错,没有更好的描述。我的数据是在每一行都是一条单独记录的情况下设置的——我不会试图通过列来累加状态,因为那样会累加多条记录。我只是想为我的数据记录显示受影响的状态。谢谢那么4是在UT(4)中吗?这不就是这一栏的总和吗?啊,看了描述我想我明白了。所以你不想把细胞分类,对吧?您希望将数据放在上表中,但在一个单独的单元格中,您希望以排序方式组合这些数据?我认为您将寻找一种代码解决方案(而不仅仅是单元格中的公式)。我以后也许可以试试。