根据具有字母和数值的一列对 Excel 中的分组单元格进行排序

根据具有字母和数值的一列对 Excel 中的分组单元格进行排序

因此,我的原始数据集的结构是,每行代表一条街道,然后有三组列代表对设计特征更改的建议(例如添加树木),然后是另一列,其中包含数字(表示该更改的重要性),然后是另一列,解释是否增加或减少该设计特征。这三列最多可能有 15 组。但是,现在,列的顺序是随机的 - 但我希望最重要的特征(得分最高)首先显示(最左边的列),得分最低的特征最后显示(最右边的列),但列的顺序仍然必须是特征、分数、增加/减少等。

所以我认为这太难了 - 所以我想我会先转置它,这样我就可以在三行而不是列中获得特征、分数、增加/减少的值。然后我发现我可以对行进行分组(列也是一样,但我仍然认为对行进行分组更容易)。我以为通过对行进行分组,我可以按分数排序,这样就可以将特征、分数、增加/减少保持在一起,但按得分最高到最低的特征排序,但这行不通。

我附上了原始配置(列)与转置配置(行)的示例数据集的图片,以帮助解释我上面的意思。有什么想法吗? 解释上述内容以及我希望的结果的屏幕截图

显示我被困在哪里。

找不到表名

再次尝试 - 仍然卡住。这是我将示例数据复制/粘贴到 Power 查询中时看到的内容:

来自 power query 的屏幕截图

答案1

我建议您使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中可用的 Power Query。

算法类似:

  • 转置
  • 以现在的第二列(即数据中的第二行)为中心
    • 在 Power Query 中,您可以进行数据透视而不进行聚合。
  • 这将为您提供单独的列featurescore以及direction
  • 然后仅按score列排序

使用 Power Query

  • 在数据表中选择一些单元格
  • Data => Get&Transform => from Table/Range或者from within sheet
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下表格姓名在第 2 行
  • 将下面的 M 代码粘贴到您所看到的位置
  • 将第 2 行的表名改回最初生成的表名。
  • 阅读评论并探索Applied Steps以了解算法

数据源
在此处输入图片描述

M 代码

let

//change next lines to reflect actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}}),

//Transpose, then pivot and sort
    #"Transposed Table" = Table.Transpose(#"Changed Type"),
    #"Pivoted Column" = Table.Pivot(#"Transposed Table", List.Distinct(#"Transposed Table"[Column2]), "Column2", "Column3"),
    #"Sorted Rows" = Table.Sort(#"Pivoted Column",{{"score", Order.Descending}})
in
    #"Sorted Rows"

结果
在此处输入图片描述

相关内容