Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

351
Views
¿Es posible recorrer una fila de datos y sumar cada n-ésima celda usando una función Lambda?

Tengo un modelo que produce una matriz de valores que pueden tener varios cientos de columnas de ancho. Cada columna 25 contiene un número que necesito agregar al total.

Pensé que la solución más limpia sería crear una función LAMBDA que tomaría la celda inicial de la entrada del usuario y luego la compensaría en las celdas de la fila 25, agregaría el valor allí a un total acumulado y continuaría con la compensación hasta llegar a una celda vacía. .

¿Es posible? ¿Cómo hacerlo?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

No creo que sea posible hacer un bucle como desee en Excel con funciones normales (puede hacerlo con VBA resistente). Pero puede beneficiarse de DESREF y SUMPRODUCT para resumir valores cada n-ésima columna.

Como ejemplo, hice un conjunto de datos falso:

ingrese la descripción de la imagen aquí

Obtuvo valores de las columnas 1 a 30 (A a AD). Quiero sumar valores cada 5 columnas (1, 5, 10, 15,... y así sucesivamente). Las celdas bordeadas son los resultados calculados manualmente para comprender la lógica, pero puede hacerlo en una sola fórmula:

 =SUMPRODUCT(--(COLUMN(OFFSET(A4;0;0;1;COUNTA(A4:AD4)+COUNTBLANK(A4:AD4)))/5=INT(COLUMN(OFFSET(A4;0;0;1;COUNTA(A4:AD4)+COUNTBLANK(A4:AD4)))/5))*A4:AD4)+A4

Así es como funciona:

  1. COUNTA(A4:AD4)+COUNTBLANK(A4:AD4) esto devolverá cuántas columnas, incluidos los espacios en blanco, obtuvieron sus datos
  2. OFFSET creará un rango desde la primera hasta la enésima columna (resultado del paso anterior)
  3. SUMPRODUCT sumará cada enésimo valor de esa fila (en mi ejemplo, cada 5 columnas)
  4. Agregamos manualmente la primera entrada, la columna 1, al final de la fórmula

Si desea cada 25 columnas, simplemente reemplace /5 con /25

over 4 years ago · Santiago Trujillo Report

0

Debería poder hacer esto con un LAMBDA recursivo.

 StridingSum = LAMBDA(cell, step, [start], LET( colOffset, IF(ISOMITTED(start), -1, start) + step, value, OFFSET(cell, 0, colOffset), IF( value = "", 0, value + StridingSum(cell, step, colOffset) ) ) );

Que llamas como =StridingSum(A2, 25) (asumiendo que tus datos comenzaron en A1)

over 4 years ago · Santiago Trujillo Report

0

Esto podría funcionar un poco mejor que el de Paul al permitirle seleccionar la primera celda de datos en lugar de la segunda.

 StridingSum = LAMBDA(cell, step, [start], LET( colOffset, IF(ISOMITTED(start), 0, start + step), value, OFFSET(cell, 0, colOffset), IF( value = "", 0, value + StridingSum(cell, step, colOffset) ) )
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!