”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Google 表格:持续时间(小时)的 SUMIFS,第 2 部分

Google 表格:持续时间(小时)的 SUMIFS,第 2 部分

发布于2024-11-08
浏览:281

Google Sheets: SUMIFS para durações (horas), parte 2

前几天我发表了一篇文章,展示了如何为 Google 表格创建两个自定义公式以根据条件添加小时数(此处)。我认为他们的问题是不灵活。如果我想要 N 个条件怎么办?好吧,现在你可以了!

现在该公式采用 3 组数据:持续时间、条件和过滤器指令。 让我们回到测试电子表格:

标题 期间 类别 地位 喜欢
火星人 01:00:00 电影 我已经看过了 是的
星际穿越 02:49:00 电影 我已经看过了
约翰威克 01:30:00 电影 我已经看过了
复仇者联盟:终局之战 03:00:00 电影 我想看
怪奇物语 00:45:00 系列 参加
巫师 01:00:01 系列 参加
曼达洛人 00:40:00 系列 参加
绝命毒师 00:50:00 系列 我已经看过了 是的
纸房子 00:55:00 系列 我想看
权力的游戏 01:10:00 系列 我想看

让我们更新我们的应用程序脚本,我建议创建另一个测试电子表格并开始一个新的电子表格,记住时间必须采用“纯文本”。代码在这里:

/**
 * Converte uma string no formato HH:MM:SS para o total em segundos.
 *
 * @param {string} hms - A string no formato HH:MM:SS.
 * @returns {number} O total em segundos.
 */
function converterHMSParaSegundos(hms) {
  const partes = String(hms).split(":");
  const [horas, minutos, segundos] = partes;
  return Number(horas) * 3600   Number(minutos) * 60   Number(segundos);
}

/**
 * Converte um número de segundos para o formato HH:MM:SS.
 *
 * @param {number} segundos - O total de segundos.
 * @returns {string} O tempo no formato HH:MM:SS.
 */
function converterSegundosParaHMS(segundos) {
  const horas = Math.floor(segundos / 3600);
  const minutos = Math.floor((segundos % 3600) / 60);
  const segundosRestantes = segundos % 60;
  return `${String(horas).padStart(2, "0")}:${String(minutos).padStart(
    2,
    "0"
  )}:${String(segundosRestantes).padStart(2, "0")}`;
}

/**
 * Filtra as linhas da matriz de dados com base nos critérios fornecidos e retorna as durações correspondentes.
 *
 * @param {Array} duracoes - Array de durações em formato de texto.
 * @param {Array>} dados - Matriz de dados onde cada linha corresponde a um conjunto de valores.
 * @param {Array} criterios - Array de critérios para filtrar as linhas da matriz de dados.
 * @returns {Array} Retorna as durações que correspondem aos critérios.
 */
function filtroDeLinhas(duracoes, dados, criterios) {
  const linhas_na_matriz = duracoes.length;
  const matriz_de_criterios_concatenada = [];

  for (let linha = 0; linha } duracoes - Array de durações em formato de texto.
 * @param {Array>} intervalo_de_criterios - Matriz de dados onde cada linha corresponde a um conjunto de valores.
 * @param {...string} criterios - Um ou mais critérios para filtrar as linhas da matriz de dados.
 * @returns {string} A soma das durações no formato HH:MM:SS.
 */
function somarHorasComCriterios(
  duracoes,
  intervalo_de_criterios,
  ...criterios
) {
  // Verifica se todos os argumentos são arrays
  if (
    !Array.isArray(duracoes) ||
    !Array.isArray(intervalo_de_criterios) ||
    !Array.isArray(criterios)
  ) {
    return "Passe os intervalos para o cálculo!";
  }

  const horasParaSomar = filtroDeLinhas(
    duracoes,
    intervalo_de_criterios,
    criterios.flat(Infinity)
  );
  const horasEmSegundos = horasParaSomar.map((n) =>
    converterHMSParaSegundos(n)
  );
  const somaDosSegundos = horasEmSegundos.reduce(
    (acumulador, valorAtual) => acumulador   valorAtual,
    0
  );

  return converterSegundosParaHMS(somaDosSegundos);
}

假设我通过了:

电影 |我已经看过了 |不

我的总和是:04:19:00

并且请记住,我可以使用本机函数将其包装:=VALUE 并将其格式化为“持续时间”,并且工作表将返回到工作总和,就像使用本机公式一样!

正如我在上一篇文章中所说,请留下您的评论以及任何建议或问题。拥抱。

版本声明 本文转载于:https://dev.to/casewinter/google-sheets-sumifs-para-duracoes-horas-parte-2-3bf0?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在Python中确定整数的位数?
    如何在Python中确定整数的位数?
    在 Python 中确定整数中的位数长度在 Python 中,获取整数中的位数是一个简单的过程。该技术涉及使用 str() 函数将整数临时转换为字符串,然后使用 len() 函数确定字符串的长度。例如,如果要查找整数 123 中的位数,可以使用 str(123) 将其转换为字符串,结果为“123”。...
    编程 发布于2024-11-09
  • 超自然故事:来自世界各地的神话生物
    超自然故事:来自世界各地的神话生物
    https://pageexplorer.blogspot.com/2024/10/tales-of-supernatural-mythical.html 我希望您能查看我最新的博客文章!您的想法和反馈对我来说非常有价值,如果您能花点时间阅读并在评论中分享您的见解,我将不胜感激。无论是建设性的批评还...
    编程 发布于2024-11-09
  • Python 中的结构模式匹配
    Python 中的结构模式匹配
    结构模式匹配是Python中的一个强大功能,它允许您根据复杂数据的结构做出决策并从中提取所需的值。它提供了一种简洁、声明式的方式来表达条件逻辑,可以极大地提高代码的可读性和可维护性。在本文中,我们将探讨一些在 Python 中使用结构模式匹配的真实案例研究示例。 1。解析 API 响应 结构模式匹配...
    编程 发布于2024-11-09
  • 在 Laravel 11 中的支付处理编译时实现上下文绑定
    在 Laravel 11 中的支付处理编译时实现上下文绑定
    在我们之前的文章(如何在 Laravel 11 中添加和实现支付处理接口:硬编码绑定)中,我们通过硬编码 PaymentProcessorInterface 之间的绑定探索了设置支付处理器的第一步以及具体的实现,例如 StripePaymentProcessor。 虽然这种方法对于小型应用程序来说...
    编程 发布于2024-11-09
  • 如何解决“TypeError: Unsupported Operand Type(s) for -: \'str\' and \'int\'\”错误?
    如何解决“TypeError: Unsupported Operand Type(s) for -: \'str\' and \'int\'\”错误?
    "解决 TypeError: Unsupported Operand Type(s) for -: 'str' and 'int'"尝试编码时在 Python 中,遇到类似“TypeError: unsupported operand type(s...
    编程 发布于2024-11-09
  • 用于构建生成式人工智能应用程序的开源框架
    用于构建生成式人工智能应用程序的开源框架
    有许多令人惊叹的工具可以帮助构建生成式人工智能应用程序。但开始使用新工具需要时间学习和练习。 因此,我创建了一个存储库,其中包含用于构建生成人工智能应用程序的流行开源框架的示例。 这些示例还展示了如何将这些框架与 Amazon Bedrock 结合使用。 您可以在这里找到存储库: https://g...
    编程 发布于2024-11-09
  • 如何在不使用CSS“not”选择器的情况下选择特定元素之外的输入字段?
    如何在不使用CSS“not”选择器的情况下选择特定元素之外的输入字段?
    在没有“Not”的情况下导航CSS选择器:外部输入字段选择在CSS中,“not”选择器是一个受欢迎的功能这将允许用户从匹配条件中排除特定元素。目前,除非使用 JavaScript/jQuery,否则此功能在浏览器中不可用。例如,要选择类为“classname”的元素中的所有输入字段,CSS 代码将为...
    编程 发布于2024-11-09
  • CSS 形状:将文本环绕形状
    CSS 形状:将文本环绕形状
    介绍 CSS Shapes 是一个功能强大的工具,允许设计人员通过操纵 HTML 元素的形状来创建独特且具有视觉吸引力的布局。 CSS Shapes 最令人兴奋的功能之一是能够将文本环绕不同的形状。这允许更具创意和动态的文本布局,摆脱传统的矩形文本块。在本文中,我们将探讨 CSS ...
    编程 发布于2024-11-09
  • 如何维护禁用的选择元素中的输入字段值?
    如何维护禁用的选择元素中的输入字段值?
    在禁用的选择元素中维护输入字段值防止用户修改 表单字段,同时确保提交其值禁用选择元素和选项一种方法是禁用选择元素及其选项。这会阻止用户与元素交互,从而创建只读效果。但是,它也会阻止提交该值。在提交表单之前启用元素要解决此问题,请在提交表单之前禁用所有禁用的下拉菜单。这可以通过 JavaScript...
    编程 发布于2024-11-09
  • 如何确定 C++ 中动态分配数组的大小?
    如何确定 C++ 中动态分配数组的大小?
    在 C 中动态分配后确定数组大小 在 C 中,使用 new 运算符动态分配的数组本质上不会以编程方式公开其大小。这个问题源于这样的观察:delete[] 必须知道分配的数组的大小才能有效地释放内存。为什么没有内置函数来获取数组大小?与在堆栈上声明的数组不同,其大小可以使用 sizeof() 确定,动...
    编程 发布于2024-11-09
  • 解决 PHP 中的命名空间问题:为什么找不到类?
    解决 PHP 中的命名空间问题:为什么找不到类?
    解决 PHP 自动加载的命名空间问题在 PHP 中使用命名空间和自动加载机制时,经常会遇到无法找到所需类的错误。让我们探讨一下这个错误背后的原因并提供解决方案。如提供的代码片段所示,出现错误“Class 'Class1' not found”是因为 Class1 类未在全局范围内定义...
    编程 发布于2024-11-09
  • 如何轻松将 JavaScript 数组转换为逗号分隔列表?
    如何轻松将 JavaScript 数组转换为逗号分隔列表?
    提升 JavaScript:轻松将数组转换为逗号分隔列表在 JavaScript 中处理数组时,将它们转换为可读格式像逗号分隔的列表通常是一项常见任务。有一种巧妙的方法可以轻松实现此目的,而不是诉诸手动字符串连接。Array.prototype.join() 方法介绍数组。 prototype.jo...
    编程 发布于2024-11-09
  • 如何在 Socket.IO 中阻止发送方接收响应?
    如何在 Socket.IO 中阻止发送方接收响应?
    如何在 Socket.IO 中向除发送者之外的所有客户端发送响应?Socket.IO 提供了一系列的通信方法客户端和服务器。要将消息发送到所有客户端,可以使用 io.sockets.emit('response', data);。但是,当您需要排除发送客户端接收响应时,这种方法就不够...
    编程 发布于2024-11-09
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于2024-11-09
  • 如何在 Go 中使用实时请求测试 HTTP 服务器?
    如何在 Go 中使用实时请求测试 HTTP 服务器?
    在 Go 中使用实时请求测试 HTTP 服务器独立的单元测试处理程序至关重要,但可能会忽略路由和其他中间件的影响。对于全面的测试,请考虑使用“实时服务器”方法。使用 httptest.Server 进行实时服务器测试net/http/httptest.Server 类型有助于实时服务器测试。它使用提...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3