You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取数组中与上一选中元素间隔≥指定值的元素?

解决动态间隔筛选数组元素的思路

方法一:用Google Apps Script写自定义函数

这类需要跟踪上一个选中值的逻辑,用脚本循环处理最直接:

  • 打开Google Sheets,点「扩展程序」→「Apps 脚本」
  • 粘贴下面的代码:
function filterByDynamicGap(arr, gap) {
  if (!arr || arr.length === 0) return [];
  const result = [arr[0]];
  let lastSelected = arr[0];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] - lastSelected >= gap) {
      result.push(arr[i]);
      lastSelected = arr[i];
    }
  }
  return result;
}
  • 保存脚本,回到表格,在单元格输入=filterByDynamicGap(A1:A10, 0.25)(把A1:A10换成你的数据范围),就能得到符合要求的结果。

方法二:辅助列+迭代计算(不用写脚本)

如果不想碰脚本,用迭代计算传递状态也能实现:

  1. 先开迭代计算:点「文件」→「设置」→「计算」,勾选「启用迭代计算」,最大迭代次数设100就行(足够处理你的数据量)。
  2. 假设数据在A列(A1到A10),B1直接输入=A1(第一个元素直接选)。
  3. B2输入公式:
=IF(A2 - B1 >= 0.25, A2, B1)
  1. 把B2的公式下拉到B10,此时B列会一直跟踪最新的选中元素。接下来提取所有选中的元素:
    • C1输入=IF(B1<>B2, B1, "")
    • C2输入=IF(B2<>B3, B2, "")
    • 下拉C列到C10,最后用=FILTER(C1:C10, C1:C10<>"")就能得到筛选后的列表。

原理:B列负责更新选中状态,当前元素满足间隔要求就替换成当前值,否则保持上一个选中值;C列则把B列里所有变化的节点(也就是每次选中的新元素)提取出来。

内容的提问来源于stack exchange,提问作者T J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:53:27