我的问题是因为我想对以下问题中提供的数据进行排序:
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))
如您所见,标题工作正常,但排序后的数据包含标题,因为它是排序后范围内的最后一个A1:F9
。
从排序范围中排除标题行=IF(ROW(A1:F9)=1,A1:F9,SORT(A2:F9,6))
也不起作用,因为范围小于输出范围,导致以下错误并且仍然跳过一个数据行:
我设法通过在排序范围中插入一个 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 的贡献。