【问题标题】:In Excel, find longest subsequence matching some criteria在 Excel 中,查找符合某些条件的最长子序列
【发布时间】:2019-12-04 20:22:41
【问题描述】:

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

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

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

我宁愿没有 VBA 解决方案,只是因为我并不真正了解 VBA,如果我必须维护一个脚本,我会在 perl 中编写一些东西来读取剪贴板并写下我的结果想回到它。

【问题讨论】:

  • 你的预期输出是什么?
  • @cybernetic.nomad 在样例表后面的段落中,符合条件的最长子序列的行号和长度。
  • 对于那些投票结束的人,如果您能评论一下原因会很好。也许我可以通过某种方式改进这个问题?
  • 我投票关闭,因为没有尝试。
  • @BigBen 感谢您告诉我。正如我所说,我真的不知道从哪里开始。我花了几个小时阅读 Excel 帮助并在此处和 Google 进行搜索,但没有找到任何可以让我到达任何地方的内容。

标签: excel sequence subsequence


【解决方案1】:

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

  1. B2中,输入以下公式:

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

(这是你的助手栏)

  1. C1,输入:

    =MAX(B:B)
    

(这是最长序列的长度)

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

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

你应该得到这样的结果:

【讨论】:

  • 非常好,谢谢。一件小事,如果序列在开头,它就不能正常工作。将 A1 和 A2 更改为 0,B1:B3 将为 "", 1, 2,并且不会将前三行计为最长。如果您在 B1 中添加=IF(A1&lt;=10,1,""),它会修复它。我将不得不考虑那个条件格式公式:-),但它工作得很好。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 2019-03-08
  • 2022-01-17
  • 2018-09-10
  • 1970-01-01
  • 2017-03-02
  • 2016-09-13
  • 1970-01-01
相关资源
最近更新 更多