Excel 将函数排序到 "skip" 第一行
Excel sort function to "skip" 1st row
我的问题是因为我想按照以下问题中提供的方式对数据进行排序:
How to select all the column based minimum date value in a sheet
我想做的是select数据(Range A1:F9
)并对其进行排序:
NAME
CARD NUMBER
ACCOUNT NUMBER
SBL Transaction Type
SBL Transaction Amount
SBL Transaction Date
B
4779
1
POS purchase
280
02-08-2021
B
4779
1
POS purchase
1
03-05-2021
S
1475
2
POS purchase
389
05-04-2021
S
1475
2
POS purchase
755
05-11-2021
S
1475
2
POS purchase
1794
05-15-2021
A
0173
3
POS purchase
1
02-01-2021
A
0173
3
POS purchase
1
02-02-2021
A
0173
3
POS purchase
1
02-03-2021
我所做的是 select 包含 header =SORT(A1:F9,6)
的数据,结果是 header 与数据一起排序(当然):
然后我想到了让 SORT 函数忽略第一行然后对其余行进行排序的想法。
我的第一次尝试是 =IF(ROW(A1:F9)=1,A1:F9,SORT(A1:F9,6))
如您所见,header 工作正常,但排序后的数据包括 header,因为它是排序后范围内的最后一个 A1:F9
。
从排序范围 =IF(ROW(A1:F9)=1,A1:F9,SORT(A2:F9,6))
中排除 header 行也不起作用,因为该范围随后小于导致以下错误的输出范围,并且仍然跳过一个数据行:
我设法通过在排序范围内插入 al 零的替代 header 来使其正确,然后使用此函数将排序范围堆叠到 headers 上(这也提供了空间两行 headers):
=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))
但我想知道是否有更优雅的方法使用公式对数据范围进行排序而不影响 header。
由于 Darren Bartrup-Cook 的贡献,结果是 =LET(data;A1:F9;header;A1:F2;sortCol;6;SORTBY(data;IF(ROW(data)>ROWS(header);1;0);1;INDEX(data;;sortCol);1))
。
我的问题是因为我想按照以下问题中提供的方式对数据进行排序:
How to select all the column based minimum date value in a sheet
我想做的是select数据(Range A1:F9
)并对其进行排序:
NAME | CARD NUMBER | ACCOUNT NUMBER | SBL Transaction Type | SBL Transaction Amount | SBL Transaction Date |
---|---|---|---|---|---|
B | 4779 | 1 | POS purchase | 280 | 02-08-2021 |
B | 4779 | 1 | POS purchase | 1 | 03-05-2021 |
S | 1475 | 2 | POS purchase | 389 | 05-04-2021 |
S | 1475 | 2 | POS purchase | 755 | 05-11-2021 |
S | 1475 | 2 | POS purchase | 1794 | 05-15-2021 |
A | 0173 | 3 | POS purchase | 1 | 02-01-2021 |
A | 0173 | 3 | POS purchase | 1 | 02-02-2021 |
A | 0173 | 3 | POS purchase | 1 | 02-03-2021 |
我所做的是 select 包含 header =SORT(A1:F9,6)
的数据,结果是 header 与数据一起排序(当然):
然后我想到了让 SORT 函数忽略第一行然后对其余行进行排序的想法。
我的第一次尝试是 =IF(ROW(A1:F9)=1,A1:F9,SORT(A1:F9,6))
如您所见,header 工作正常,但排序后的数据包括 header,因为它是排序后范围内的最后一个 A1:F9
。
从排序范围 =IF(ROW(A1:F9)=1,A1:F9,SORT(A2:F9,6))
中排除 header 行也不起作用,因为该范围随后小于导致以下错误的输出范围,并且仍然跳过一个数据行:
我设法通过在排序范围内插入 al 零的替代 header 来使其正确,然后使用此函数将排序范围堆叠到 headers 上(这也提供了空间两行 headers):
=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))
但我想知道是否有更优雅的方法使用公式对数据范围进行排序而不影响 header。
由于 Darren Bartrup-Cook 的贡献,结果是 =LET(data;A1:F9;header;A1:F2;sortCol;6;SORTBY(data;IF(ROW(data)>ROWS(header);1;0);1;INDEX(data;;sortCol);1))
。