Necesita una fórmula de Excel que reste el más reciente de los 5 valores en una columna del más antiguo

Necesita una fórmula de Excel que reste el más reciente de los 5 valores en una columna del más antiguo

Soy entrenador de fuerza y ​​​​acondicionamiento y necesito ayuda para desglosar los resultados de la evaluación de mis atletas. Necesito ayuda para escribir una fórmula que reste el resultado de 5 pruebas más antiguo del más reciente. La hoja tiene casi 3000 filas teniendo cada atleta 5 filas cada uno (semestre 1, 2, 3, 4 y verano), independientemente de su participación real en dicha prueba. Entonces, la fórmula básicamente necesita bajar por la columna y tomar el primer valor disponible de las 5 celdas y restarlo del último valor disponible de las 5 celdas. La hoja está configurada como tal:

Captura de pantalla

¡Por favor ayuda! Lo siento si esto no proporciona suficiente información, soy nuevo en el sitio.

Respuesta1

Tengo una fórmula que funciona cuando la pones en cualquiera de esas filas grises tituladas CAMBIAR

Es una maravilla, se ve así:

=INDEX(Values, SMALL(INDEX((Values<>0)*ROW(Values), 0), ROWS(Values)) - ROW(StartValue) + 1,1)- INDEX(Values, SMALL(INDEX((Values<>0)*ROW(Values), 0), COUNTIF(Values, "")+1) - ROW(StartValue)+1,1)

Dónde

  • Valueses el rango de valores, en mi ejemplo esto esH5:H9
  • StartValuees la primera celda en el rango de valores, para mí esto esH5

Cómo funciona

  • La declaración INDEX((Values<>0)*ROW(Values), 0)devuelve una matriz que es 0cuando la celda está en blanco y el número de fila de la celda cuando no está en blanco.
  • La SMALL()función los ordena en orden ascendente y luego devuelve el valor en la matriz correspondiente a su segundo argumento.

Entonces, en la hoja de cálculo de ejemplo a continuación, INDEX((Values<>0)*ROW(Values), 0)devuelve

0
6
7
8
0

SMALL()lo ordena para que se vea así:

0
0
6  <- Row of first nonzero value, second argument to SMALL(): =COUNTIF(Values, "")+1 = 3
7
8  <- Row of last nonzero value, second argument to SMALL(): ROWS(Values) = 5
  • Ahora que conocemos la fila, usamos INDEX()para obtener el valor. La línea - ROW(StartValue) + 1traduce la fila devuelta por SMALL()en un índice.
  • Entonces nos queda el valor distinto de cero más reciente de la primera llamada a INDEX()y le restamos el valor distinto de cero más distante de la segunda llamada aINDEX()

Captura de pantalla

Calcular CAMBIAR Fila

Enlace a la hoja de cálculo

AquíHay un enlace para descargar esta hoja de cálculo de muestra. Normalmente uso FormulaChop para explicar estas fórmulas, pero no funciona con la función ROW(). (Divulgación completa: escribí FormulaChop). Así que incluí una versión de la fórmula que funciona y puedes verla desglosada en la pestaña FormulaChop.

Respuesta2

Con las fechas en la columna A (A2:A3001), los nombres en la columna B y los valores en las columnas C, pon el nombre a buscar en F2 y usa esta fórmula en G2.

=SUMIFS(C:C, B:B, F2, A:A, AGGREGATE(14, 7, (A$2:A$3001)/(B$2:B$3001=F2), 1))-
 SUMIFS(C:C, B:B, F2, A:A, AGGREGATE(15, 7, (A$2:A$3001)/(B$2:B$3001=F2), 1))

Respuesta3

¿Espero que esto sea lo que estás buscando?

[ Foto 1]

En la imagen tenemos dos usuarios. Los datos amarillos son los que tienes en tu hoja (creo que con muchos usuarios), y hay otras columnas para evaluarlos usando fórmulas simples.

Las fórmulas utilizadas se encuentran en la siguiente imagen.

Respuesta4

Esto puede ser lo que estás buscando Imagen que muestra cómo se ven los resultados.

Así luce la fórmula, es muy sencilla de utilizar Imagen que muestra fórmulas

¿Cómo crear fórmula? Presione Alt+F11 y copie y pegue lo siguiente

Función pública Diff2(n1 como doble, n2 como doble, n3 como doble, n4 como doble, n5 como doble)

índice1 = 0 índice2 = 0

'encontrar el primer número Si n1 > 0 Entonces PrimerNum = n1 índice1 = 1 De lo contrario Si n2 > 0 Entonces PrimerNum = n2 índice1 = 1 De lo contrario Si n3 > 0 Entonces PrimerNum = n3 índice1 = 3 De lo contrario Si n4 > 0 Entonces PrimerNum = n4 índice1 = 4 Fin Si

'encontrar el segundo número Si n5 > 0 Entonces SecNum = n5 índice2 = 5 De lo contrario, Si n4 > 0 Entonces SecNum = n4 índice2 = 4 De lo contrario, Si n3 > 0 Entonces SecNum = n3 índice2 = 3 De lo contrario, Si n2 > 0 Entonces SecNum = n2 índice2 = 2 Fin Si

'Error al comprobar si (índice1 = 0) o (índice2 = 0) o (índice1 - índice2 = 0) Entonces Diff2 = "ERROR" De lo contrario Diff2 = SecNum - FirstNum End If

Función final

Imagen que muestra Excel VBA

información relacionada