在Excel中,找到符合某些条件的最长子序列
In Excel, find longest subsequence matching some criteria
我在 Excel 工作表中有一个数字序列,我想找到符合某些条件的最长子序列。例如,假设我有以下内容:
并且我想知道每个值小于 10 的最长子序列从哪里开始以及它有多长(第 7、3 行长)或大于等于 10(第 4、3 行长)等.
我可以很容易地生成与值对应的 TRUE 和 FALSE 的数组或向量,以及它们是否符合我想要的标准,但我什至不知道从哪里开始查找和计算子序列。
我不想有一个 VBA 解决方案,只是因为我真的不知道 VBA 如果我必须维护一个脚本,我会在perl 读取剪贴板并将我想要的结果写回它。
如果仅使用公式,您将需要一个辅助列。
在B2
中输入以下公式:
=IF(A2>10,"",IF(A1<=10,B1+1,1))
(这是你的助手专栏)
在C1
中输入:
=MAX(B:B)
(这是最长序列的长度)
Select 整个第一列并使用以下公式创建新的条件格式:
=AND(ROW()>=MATCH(MAX(B:B),B:B,0)-MAX(B:B)+1,ROW()<=MATCH(MAX(B:B),B:B,0))
你应该得到这样的结果:
我在 Excel 工作表中有一个数字序列,我想找到符合某些条件的最长子序列。例如,假设我有以下内容:
并且我想知道每个值小于 10 的最长子序列从哪里开始以及它有多长(第 7、3 行长)或大于等于 10(第 4、3 行长)等.
我可以很容易地生成与值对应的 TRUE 和 FALSE 的数组或向量,以及它们是否符合我想要的标准,但我什至不知道从哪里开始查找和计算子序列。
我不想有一个 VBA 解决方案,只是因为我真的不知道 VBA 如果我必须维护一个脚本,我会在perl 读取剪贴板并将我想要的结果写回它。
如果仅使用公式,您将需要一个辅助列。
在
B2
中输入以下公式:=IF(A2>10,"",IF(A1<=10,B1+1,1))
(这是你的助手专栏)
在
C1
中输入:=MAX(B:B)
(这是最长序列的长度)
Select 整个第一列并使用以下公式创建新的条件格式:
=AND(ROW()>=MATCH(MAX(B:B),B:B,0)-MAX(B:B)+1,ROW()<=MATCH(MAX(B:B),B:B,0))
你应该得到这样的结果: