Google sheets 自定义序列号公式

Google sheets 自定义序列号公式,google-sheets,google-sheets-formula,array-formulas,google-sheets-query,gs-vlookup,Google Sheets,Google Sheets Formula,Array Formulas,Google Sheets Query,Gs Vlookup,在谷歌表单中 我希望以满足以下要求的特定方式实现序列编号系统: 序列号应按降序倒序排列。 只有列B中具有非空值的行才能获得序列号。 在列B中添加任何非空值使该行有资格拥有序列号。因此,将列B设为空白将删除其序列号,并调整修改后的列上方行上的所有序列号。 测试用例: 在填充的行之间保留一行空白,不应影响按顺序编号的序列。 任何人都可以提供在Google Sheets中实现此功能的公式或步骤吗?试试以下方法: 如果需要反映B列的字母顺序: =ArrayFormula(if(B:B<>""

在谷歌表单中

我希望以满足以下要求的特定方式实现序列编号系统:

序列号应按降序倒序排列。 只有列B中具有非空值的行才能获得序列号。 在列B中添加任何非空值使该行有资格拥有序列号。因此,将列B设为空白将删除其序列号,并调整修改后的列上方行上的所有序列号。 测试用例:

在填充的行之间保留一行空白,不应影响按顺序编号的序列。 任何人都可以提供在Google Sheets中实现此功能的公式或步骤吗?

试试以下方法:

如果需要反映B列的字母顺序:

=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,sort(B:B,1,TRUE),0),))
=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,filter(B:B,B:B<>""),0),))
如果您只需要在B列中反映值的索引/位置:

=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,sort(B:B,1,TRUE),0),))
=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,filter(B:B,B:B<>""),0),))
不过,我不太清楚规范3,所以我可能错过了一些东西

如果这不起作用,你能描述一下你已经尝试了什么,或者分享一个不包含机密信息的示例电子表格,其中包含每个用例的预期结果吗

试试这个:

如果需要反映B列的字母顺序:

=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,sort(B:B,1,TRUE),0),))
=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,filter(B:B,B:B<>""),0),))
如果您只需要在B列中反映值的索引/位置:

=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,sort(B:B,1,TRUE),0),))
=ArrayFormula(if(B:B<>"",counta(B:B)+1-match(B:B,filter(B:B,B:B<>""),0),))
不过,我不太清楚规范3,所以我可能错过了一些东西

如果这不起作用,你能描述一下你已经尝试了什么,或者分享一个不包含机密信息的示例电子表格,其中包含每个用例的预期结果吗

使用以下公式:

=ARRAYFORMULA(IFERROR(VLOOKUP(ROW(B:B)&B:B, QUERY({SORT({ROW(
 INDIRECT("B1:B"&COUNTA(B:B))), FILTER(ROW(B:B)&B:B, B:B<>"")}, 1, 0), ROW(
 INDIRECT("B1:B"&COUNTA(B:B)))}, "select Col2,Col3", 0), 2, 0)))
使用以下公式:

=ARRAYFORMULA(IFERROR(VLOOKUP(ROW(B:B)&B:B, QUERY({SORT({ROW(
 INDIRECT("B1:B"&COUNTA(B:B))), FILTER(ROW(B:B)&B:B, B:B<>"")}, 1, 0), ROW(
 INDIRECT("B1:B"&COUNTA(B:B)))}, "select Col2,Col3", 0), 2, 0)))

它给出了一个错误:数组结果未展开,因为它将覆盖A2中的数据。也许我做错了什么。在粘贴@player0的答案之前,首先需要删除A列的所有内容A1@Vin选择一列并删除其中的所有内容。然后使用A1中的公式。您得到的错误意味着无法展开值数组,因为没有空间容纳它。它给出了一个错误:数组结果未展开,因为它将覆盖A2中的数据。也许我做错了什么。在粘贴@player0的答案之前,首先需要删除A列的所有内容A1@Vin选择一列并删除其中的所有内容。然后使用A1中的公式。您得到的错误意味着无法展开值数组,因为没有空间容纳它。edited as player0的回答表明,可能不需要对列B的值进行排序,因此,如果您不希望它为B中的任何重复项提供相同的编号,=ArrayFormulaifB:B=,则可以选择适合您的值,,countaB:B+1-matchrowB:B,filterrowB:B,B:Bedited as player0的答案表明,对B列的值进行排序可能不是必需的,因此如果您不希望它为B中的任何重复项提供相同的编号,=ArrayFormulaifB:B=,,countaB:B+1-matchrowB:B,filterrowB:B,B:B,您可以选择一个适合您的