Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Sichere ProgrammierungBreeze TTS 2 vs ElevenLabs: Open Source TTS Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungAgentic AI vs Generative AI: The 2026 Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungI made my agent prove every quote against the source document(23.09.2026 um 05:45 Uhr)
Sichere Programmierung8mb.video Alternative: Skip the Line, Skip the Upsell(23.09.2026 um 05:47 Uhr)
Sichere ProgrammierungBuilding a GTA 6 JSON API for entities and current status(23.09.2026 um 05:52 Uhr)
Sichere ProgrammierungEvery filter needs a documented exception(23.09.2026 um 06:01 Uhr)
Sichere ProgrammierungBreeze TTS 2 vs ElevenLabs: Open Source TTS Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungAgentic AI vs Generative AI: The 2026 Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungI made my agent prove every quote against the source document(23.09.2026 um 05:45 Uhr)
Sichere Programmierung8mb.video Alternative: Skip the Line, Skip the Upsell(23.09.2026 um 05:47 Uhr)
Sichere ProgrammierungBuilding a GTA 6 JSON API for entities and current status(23.09.2026 um 05:52 Uhr)
Sichere ProgrammierungEvery filter needs a documented exception(23.09.2026 um 06:01 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

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

Esses dias fiz um post mostrando como criar duas fórmulas personalizadas para o Google sheets para somar horas com base em critérios (aqui). O problema delas na minha opinião é que elas não eram flexiveis. E se eu quiser N critérios? Bom, a…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

Esses dias fiz um post mostrando como criar duas fórmulas personalizadas para o Google sheets para somar horas com base em critérios (aqui). O problema delas na minha opinião é que elas não eram flexiveis. E se eu quiser N critérios? Bom, agora você pode!



Agora a fórmula toma 3 conjuntos de dados: as durações, os critérios, e as instruções para filtrar. Vamos de novo a planilha de testes:





















































































Título Duração Categoria Status Curti
Perdido em Marte 01:00:00 Filme Já assisti Sim
Interestelar 02:49:00 Filme Já assisti Não
John Wick 01:30:00 Filme Já assisti Não
Vingadores: Ultimato 03:00:00 Filme Quero assistir
Stranger Things 00:45:00 Série Assistindo
The Witcher 01:00:01 Série Assistindo
O Mandaloriano 00:40:00 Série Assistindo
Breaking Bad 00:50:00 Série Já assisti Sim
A Casa de Papel 00:55:00 Série Quero assistir
Game of Thrones 01:10:00 Série Quero assistir


Vamos atualizar nosso app script, sugiro criar outra planilha de testes e começar um novo, lembrando que as horas devem estar como “texto simples”. O código está aqui:




/**
* 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<string>} duracoes - Array de durações em formato de texto.
* @param {Array<Array<string>>} dados - Matriz de dados onde cada linha corresponde a um conjunto de valores.
* @param {Array<string>} criterios - Array de critérios para filtrar as linhas da matriz de dados.
* @returns {Array<string>} 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 < linhas_na_matriz; linha++) {
let incluirLinha = true;

for (let coluna = 0; coluna < dados[linha].length; coluna++) {
if (!criterios.includes(dados[linha][coluna])) {
incluirLinha = false;
break; // Sai do loop se algum critério não for atendido
}
}

if (incluirLinha) {
matriz_de_criterios_concatenada.push(duracoes[linha]);
}
}

return matriz_de_criterios_concatenada;
}

/**
* Soma as horas filtradas de acordo com os critérios fornecidos.
*
* @param {Array<string>} duracoes - Array de durações em formato de texto.
* @param {Array<Array<string>>} 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);
}







Vamos dizer que eu passe:



Filme | Já assisti | Não



Minha soma seria: 04:19:00



E lembrando que posso envolver isso com a função nativa: =VALOR e formatar como “duração” e o sheets volta a trabalhar somas como se tivesse usando uma fórmula nativa!



Como disse no último post, deixem seu comentários de sugestões, ou dúvidas. Abraços.

Ähnliche Beiträge
🔍 Verwandte News

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

Thematisch verwandte Begriffe: Google, Sheets, SUMIFS, para · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-18163 | IBM Financial Transaction Manager (FTM) for RedHat OpenShift could allow…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick