Google sheets 一种复杂函数的思想,它在整数的排序列表中找到一个不大于给定值的数

Google sheets 一种复杂函数的思想,它在整数的排序列表中找到一个不大于给定值的数,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,比如说,A1中有一个文本,其中包含一个排序(最终反转)的整数列表,由一些非数字字符分隔,例如“10123230750103420301001”;在B1中,我有一个整数n;我需要一个不涉及其他单元格的公式,该公式返回: 如果n属于A1中的列表,则为n 否则,如果n不大于A1中的最大值,则A1中的值立即大于n(例如,对于n=567,返回值必须为750) 否则,将出现错误 在我看来,解决这个问题的唯一方法是使用regexp替换(googlesheet支持),但直到现在我还找不到一个合理的方法 有人

比如说,A1中有一个文本,其中包含一个排序(最终反转)的整数列表,由一些非数字字符分隔,例如“10123230750103420301001”;在B1中,我有一个整数n;我需要一个不涉及其他单元格的公式,该公式返回:

  • 如果n属于A1中的列表,则为n
  • 否则,如果n不大于A1中的最大值,则A1中的值立即大于n(例如,对于n=567,返回值必须为750)
  • 否则,将出现错误
在我看来,解决这个问题的唯一方法是使用regexp替换(googlesheet支持),但直到现在我还找不到一个合理的方法

有人有不同的想法吗?

请尝试:

=if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1))
上述方法不适用于低于第一种方法的数字,但如果需要,可以扩展到:

=if(B1<1*left(A1,find(",",A1)-1),1*left(A1,find(",",A1)-1),if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1)))
=如果(B1请尝试:

=if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1))
上述方法不适用于低于第一种方法的数字,但如果需要,可以扩展到:

=if(B1<1*left(A1,find(",",A1)-1),1*left(A1,find(",",A1)-1),if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1)))
=如果(B1请尝试:

=if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1))
=索引(排序(转置(拆分(A1,”),1,0),
匹配(B1,排序(转置(拆分(A1,“,”),1,0),-1))

在这个公式中,我使用了
search\u type
=-1来表示:

匹配(搜索关键字、范围、搜索类型)

  • search_key-要搜索的值。例如,42,“Cats”或 I24
  • range—要搜索的一维数组。如果使用高度和宽度均大于1的范围,则MATCH将返回#N/a

  • 搜索类型-[默认情况下可选-1]-选择的方式 搜索


    • 1,默认值,使MATCH假定范围按升序排序,并返回小于或等于
      搜索你的钥匙
    • 0表示完全匹配,并且在范围未排序的情况下是必需的
    • -1使MATCH假定范围按降序排序,并返回大于或等于搜索键的最小值。

    简化案件 假设您有一个文本按降序排序的单元格:

    公式是:

    =index(SPLIT(A1,", "),MATCH(B1,SPLIT(A1,", "),-1))
    
    请尝试:

    =if(isnumber(find(B1,A1)),B1,index(split(A1,","),match(B1,split(A1,","),1)+1))
    
    =索引(排序(转置(拆分(A1,”),1,0),
    匹配(B1,排序(转置(拆分(A1,“,”),1,0),-1))

    在这个公式中,我使用了
    search\u type
    =-1来表示:

    匹配(搜索关键字、范围、搜索类型)

  • search_key-要搜索的值。例如,42,“Cats”或 I24
  • range—要搜索的一维数组。如果使用高度和宽度均大于1的范围,则MATCH将返回#N/a

  • 搜索类型-[默认情况下可选-1]-选择的方式 搜索


    • 1,默认值,使MATCH假定范围按升序排序,并返回小于或等于
      搜索你的钥匙
    • 0表示完全匹配,并且在范围未排序的情况下是必需的
    • -1使MATCH假定范围按降序排序,并返回大于或等于搜索键的最小值。

    简化案件 假设您有一个文本按降序排序的单元格:

    公式是:

    =index(SPLIT(A1,", "),MATCH(B1,SPLIT(A1,", "),-1))
    

    很好。我忘记了split命令。在我离开的时候我已经生锈了。pnuts,你的公式很棒,并向我介绍了匹配函数,由于意大利Google Sheet的函数参考中的一个非常糟糕的解释,我对该函数一无所知。不幸的是,你的公式并不完美,因为“isnumber(find(…)这会使小数字混淆。请参见示例()我出版了,你的公式在C列。尼斯。我忘了split命令。我在我离开的时候生锈了。pnuts,你的公式很棒,并向我介绍了匹配函数,由于意大利谷歌表的函数参考中的一个非常糟糕的解释,我对它一无所知。不幸的是,你的公式并不完美,因为e“isnumber(find(…”,这会使小数字混淆。请参阅我发布的示例(),其中公式位于C列。