按前两个字母对列进行排序

按前两个字母对列进行排序

我想对一列进行排序,但只基于两个首字母。当两个首字母相同时,我想对另一列进行排序。

stackoverflow 答案提到这个解决方案:

在 C 列中使用以下公式 =left(A1,2)&B1 或任何适当的单元格引用,然后仅按 C 列排序

有没有更优化的方法?创建一个列进行排序然后删除它听起来不太好。

答案1

假设您作为 O365 Excel 用户有权访问动态数组,那么您是对的。您可以对此进行优化,而不必创建辅助列。

SORTBY 函数允许您根据其他列的排序顺序对范围或数组进行排序,或者基于另一个数组的排序顺序,该数组可能是存储在内存中的动态数组。 因此,我们将创建一个动态数组,该数组是 A 列中每个单元格的左侧两个字符,然后使用数组作为我们的主要排序键,B 列作为我们的次要排序键。

假设我有 5 列。主索引在 A 列,次索引在 B 列,而我想要按 A 和 B 排序的其他内容位于 C、D 和 E 列。

因此:

=SORTBY( A1:E10, LEFT(A1:A10,2), 1, B1:B10, 1 )

将创建一个溢出数组,即您想要的结果。

答案2

  1. 选择您的表格,转到数据->获取数据->来自其他来源->来自表格/范围。
  2. 选择第一列(您想要按前 2 个字符排序的列)。右键单击它,选择“复制列”。
  3. 选择重复的列。单击“转换”选项卡 ->“提取”->“第一个字符”。将计数设置为 2。按OK。重复的列现在将仅显示前 2 个字符。
  4. 按升序对重复的列进行排序。然后,按升序对第二列进行排序。

  1. 删除重复的列。关闭 Power query 编辑器。单击Keep保存更改。
  2. 将创建一个新表,其中第一列根据前两个字符按升序排序,第二列按升序排序。

相关内容