"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Google शीट: अवधि (घंटे) के लिए SUMIFS, भाग 2

Google शीट: अवधि (घंटे) के लिए SUMIFS, भाग 2

2024-11-08 को प्रकाशित
ब्राउज़ करें:897

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

दूसरे दिन मैंने एक पोस्ट बनाई जिसमें दिखाया गया कि मानदंड के आधार पर घंटे जोड़ने के लिए Google शीट के लिए दो कस्टम फ़ॉर्मूले कैसे बनाएं (यहां)। मेरी राय में उनकी समस्या यह है कि वे लचीले नहीं थे। यदि मुझे एन मानदंड चाहिए तो क्या होगा? खैर, अब आप कर सकते हैं!

अब सूत्र डेटा के 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-shields-sumifs-para-duracoes-horas-parte-2-3bf0?1 यदि कोई उल्लंघन है, तो हटाने के लिए कृपया [email protected] पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3