当前位置: 首页 > 知识库问答 >
问题:

自定义Google Sheets功能以查找小计的位置

李鸿
2023-03-14

我目前正试图为google sheets编写一个自定义函数,在给定的一维范围内,该函数告诉我在该范围内,累计和达到(或超过)给定的总和,或者如果累计和从未达到给定的总和,则抛出一个错误。

例如,给定如下范围:

10
12
14
15
18
 3
 8
 9

如果请求的总和为“24”,则函数将返回3。

如果请求的总和是“60”,函数将返回5。

如果请求的和是“1000”,函数将抛出一个错误。

我目前卡住的代码是:

function SUBTOTALPOSITION(range,sum)
{
 /**
 * Finds the position in a one-dimensional range where
 * the cumulative sum reaches the requested subtotal
 *
 * @range The range being searched (1-dimensional range only)
 * @sum The cumulative sum being searched for
 * @customfunction
 */
  if((range.length > 1) && (range[0].length > 1))
  {
    throw 'range is multi-dimensional';
  }

  var position = 0;
  var total = 0;
  while(position < range.length)
  {
    total = total + range[position];
    position++;

    if(total >= sum)
    {
      return position;
    }
  }
  throw 'Sum not reached';
}

我已经到了一个地步,它给了我一个位置,但不是正确的位置。如果我给出的和等于或小于范围中的第一个数字,它正确地返回1,但任何其他给定的数字总是返回2(并且从不抛出错误),并且我已经达到了调试能力的极限。

在这段代码中,我哪里出错了?或者有更好的方法来解决这个问题?没有自定义功能可以做到这一点吗?

共有1个答案

公羊俊
2023-03-14

这次修改怎么样?

  • 我认为错误的原因是range[position]total=total range[position]。因为当10,12,14,15,18,3,8,9的值被置于A1:A8时,=小计(A1:a8100)给出的范围[[10.0]、[12.0]、[14.0]、[15.0]、[18.0]、[3.0]、[8.0]、[9.0]。这是二维数组<代码>范围[位置]是一个对象。因此在这种情况下,当运行total=total range[position]时,total被用作字符串。这样,数组中的每个元素都将被求和为字符串,如0101214 。因此,当sum为1000时,total在第二个循环变为01012,并且total

为了删除此问题,请修改如下。

total = total + range[position];
total = total + range[position][0];

或者

total += range[position][0];

如果我误解了你的问题,对不起。

 类似资料:
  • 我想在表单中使用jQuery.AutoComplete.js插件进行输入。我想在客户端进行搜索,不能使用Ajax。但我不想在数组中使用一些简单的基于“包含”的搜索算法。我要做的是用javascript编写一个自定义搜索函数,对结果进行搜索和排序。这可能吗?怎么可能? 谢谢你抽出时间。

  • 问题内容: 如何找出给定功能在哪个文件和行中定义? 问题答案: 您也可以在PHP本身中执行此操作:

  • 1.1.1. 自定义功能 1.1.2. 拦截器 1.1.3. 入口词多样化 1.1.4. 场景化技能 1.1.1. 自定义功能 本文将讲解除了Rokid技能创建平台上面提供的技能开发工具外,平台独有的一些自定义功能。 目录 一、拦截器 二、入口词多样化 三、场景化技能 1.1.2. 拦截器 拦截器接口文档 语义理解(NLP)的拦截器(interceptor),可以允许开发者在进入Rokid NLP

  • New in Django 1.7. Django为过滤提供了大量的内建的查找(例如,exact和icontains)。这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能。关于查找的API参考,详见查找API参考。 一个简单的查找示例 让我们从一个简单的自定义查找开始。我们会编写一个自定义查找ne,提供和exact相反的功能。Author.objects.filter(name__ne

  • 问题内容: 使用我正在尝试在模板中使用自己的功能之一。不幸的是,我无法使用go模板的功能映射功能。我得到的只是以下错误: 简化的测试用例如下所示(): 我有以下简单模板(): 这是1.1.1。 问题答案: IIRC,必须在解析模板之前定义模板功能图。下面的代码似乎有效。

  • 本文向大家介绍Python元类的自定义功能,包括了Python元类的自定义功能的使用技巧和注意事项,需要的朋友参考一下 示例 可以更改元类中的功能,以便每当构建一个类时,就将字符串打印到标准输出,或者引发异常。此元类将打印正在构建的类的名称。 您可以像这样使用元类: 标准输出为: