手动更改时对任务列表重新排序

问题描述 投票:0回答:1

我有一个表格,其中第一列中的任务列表按 1-41 的顺序排列。我想允许通过在中间列中放置任务编号来手动覆盖序列,并在结果序列列中重新计算序列。

问题围绕顺序任务被覆盖。

数据位于表格中,因此我试图避免使用数组公式,但此时我对任何事情都持开放态度。

如果有人知道一种方法来计算此列表中的连续数字的数量,我将不胜感激。

Sequences

我期望结果是“结果序列”列中的结果。

当更改的任务不连续时,我知道如何让它计数并返回正确的序列号。它是一系列基于单元格值和带有数字的单元格计数的 IF、MATCH 和 COUNTIF 公式。正是这些连续的条目把事情搞砸了。按序列偏移的任务按顺序号的计数进行偏移。

excel sequence sequential
1个回答
0
投票

请尝试

=LET(manual,SORT(FILTER([Manual],[Manual]<>"")),
mrows,ROWS(manual),
mstarts,REDUCE("",SEQUENCE(mrows),LAMBDA(a,c,VSTACK(a,IF(c=1,INDEX(manual,1),IF(INDEX(manual,c)<>INDEX(manual,c-1)+1,INDEX(manual,c),""))))),
fmstarts,FILTER(mstarts,mstarts<>""),
mends,REDUCE("",SEQUENCE(mrows),LAMBDA(a,c,VSTACK(a,IF(c=mrows,INDEX(manual,mrows),IF(INDEX(manual,c+1)<>INDEX(manual,c)+1,INDEX(manual,c),""))))),
fmends,FILTER(mends,mends<>""),
lengths,fmends-fmstarts+1,
prevResult,IFERROR(XLOOKUP(TRUE,(FILTER([Manual],ROW([Manual])<ROW())=""),FILTER([Result],ROW([Result])<ROW()),0,0,-1),0)+1,
offset,XLOOKUP(prevResult,fmstarts,lengths,0),
IF(@[Manual]<>"",@[Manual],prevResult+offset))

© www.soinside.com 2019 - 2024. All rights reserved.