0

我的问题是因为我想对以下问题中提供的数据进行排序:
How to select all the column based minimum date value in a sheet

我想做的是选择数据(Range A1:F9)并对其进行排序:

姓名 卡号 帐号 SBL 交易类型 SBL 交易金额 SBL 交易日期
4779 1 POS 购买 280 02-08-2021
4779 1 POS 购买 1 03-05-2021
小号 1475 2 POS 购买 389 05-04-2021
小号 1475 2 POS 购买 755 05-11-2021
小号 1475 2 POS 购买 1794 05-15-2021
一种 0173 3 POS 购买 1 02-01-2021
一种 0173 3 POS 购买 1 2021 年 2 月 2 日
一种 0173 3 POS 购买 1 02-03-2021

我所做的是选择包括标题的数据=SORT(A1:F9,6),这会导致标题与数据一起排序(当然):

排序标头

然后我想到让 SORT 函数忽略第一行,然后对其余的行进行排序。
我的第一次尝试是=IF(ROW(A1:F9)=1,A1:F9,SORT(A1:F9,6))

尝试1

如您所见,标题工作正常,但排序后的数据包含标题,因为它是排序后范围内的最后一个A1:F9

从排序范围中排除标题行=IF(ROW(A1:F9)=1,A1:F9,SORT(A2:F9,6))也不起作用,因为范围小于输出范围,导致以下错误并且仍然跳过一个数据行:

尝试2

我设法通过在排序范围中插入一个 al 零的替代标题来使其正确,然后使用此函数将排序范围堆叠到标题上(这也为两个行标题留出了空间):

=LET(D,A1:F9,rowD,ROW(D),rowsD,ROWS(D),colsD,COLUMNS(D),H,A1:F1,header,INDEX(D,1,1):INDEX(D,ROWS(H),COLUMNS(H)),subsHeader,SEQUENCE(1,colsD,0,0),subsD,IF(rowD<=ROWS(header),subsHeader,D),sortedSubsD,SORT(subsD,6),IF(SEQUENCE(rowsD)<=ROWS(header),header,sortedSubsD))

但我想知道是否有一种更优雅的方式使用公式对数据范围进行排序而不影响标题。

结果要=LET(data;A1:F9;header;A1:F2;sortCol;6;SORTBY(data;IF(ROW(data)>ROWS(header);1;0);1;INDEX(data;;sortCol);1))感谢 Darren Bartrup-Cook 的贡献。

4

1 回答 1

2

如果您有备用列,请在标题旁边添加一个 0 并将其他行留空。然后,您可以先对该列进行排序,然后再对另一列进行排序。

在此处输入图像描述

然后,您可以对 A 列和 F 列进行排序。
=SORTBY(B1:F6,A1:A6,1,F1:F6,1)

在此处输入图像描述

于 2021-08-04T10:57:29.903 回答