在Excel中,找到符合某些条件的最长子序列

In Excel, find longest subsequence matching some criteria

我在 Excel 工作表中有一个数字序列,我想找到符合某些条件的最长子序列。例如,假设我有以下内容:

并且我想知道每个值小于 10 的最长子序列从哪里开始以及它有多长(第 7、3 行长)或大于等于 10(第 4、3 行长)等.

我可以很容易地生成与值对应的 TRUE 和 FALSE 的数组或向量,以及它们是否符合我想要的标准,但我什至不知道从哪里开始查找和计算子序列。

我不想有一个 VBA 解决方案,只是因为我真的不知道 VBA 如果我必须维护一个脚本,我会在perl 读取剪贴板并将我想要的结果写回它。

如果仅使用公式,您将需要一个辅助列。

  1. B2中输入以下公式:

    =IF(A2>10,"",IF(A1<=10,B1+1,1))
    

(这是你的助手专栏)

  1. C1中输入:

    =MAX(B:B)
    

(这是最长序列的长度)

  1. Select 整个第一列并使用以下公式创建新的条件格式:

    =AND(ROW()>=MATCH(MAX(B:B),B:B,0)-MAX(B:B)+1,ROW()<=MATCH(MAX(B:B),B:B,0))
    

你应该得到这样的结果: