tutorial spreadsheets sheets sheet query google functions funcion español docs chegg google-sheets worksheet-function google-sheets-formula

spreadsheets - Obtenga la última celda no vacía en una columna en Google Sheets



sheet text (9)

Yo uso la siguiente función

=DAYS360(A2, A35)

Para calcular la diferencia entre dos fechas en mi columna. Sin embargo, la columna siempre se está expandiendo y actualmente tengo que cambiar manualmente ''A35'' cuando actualizo mi hoja de cálculo.

¿Hay alguna forma (en Google Sheets) de encontrar la última celda no vacía en esta columna y luego configurar dinámicamente ese parámetro en la función anterior?


¿Qué pasa con esta fórmula para obtener el último valor:

=index(G:G;max((G:G<>"")*row(G:G)))

Y esta sería una fórmula final para tu tarea original:

=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))

Supongamos que su fecha inicial es en G10.


Aqui hay otro más:

=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))

Con la ecuación final siendo esta:

=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))

Las otras ecuaciones aquí funcionan, pero me gusta esta porque hace que sea más fácil obtener el número de la fila, lo que creo que necesito hacer más a menudo. Solo el número de la fila sería así:

=max(arrayformula(if(A:A<>"",row(A:A),"")))

Originalmente traté de encontrar solo esto para resolver un problema de la hoja de cálculo, pero no pude encontrar nada útil que solo diera el número de fila de la última entrada, así que espero que esto sea útil para alguien.

Además, esto tiene la ventaja adicional de que funciona para cualquier tipo de datos en cualquier orden, y puede tener filas en blanco entre las filas con contenido, y no cuenta las celdas con fórmulas que se evalúan como "". También puede manejar valores repetidos. En general, es muy similar a la ecuación que usa el máximo ((G: G <> "") * fila (G: G)) aquí, pero hace que sea más fácil extraer el número de la fila si eso es lo que buscas. .

Alternativamente, si desea poner un guión en su hoja, puede hacerlo más fácil si planea hacerlo mucho. Aquí está ese scirpt:

function lastRow(sheet,column) { var ss = SpreadsheetApp.getActiveSpreadsheet(); if (column == null) { if (sheet != null) { var sheet = ss.getSheetByName(sheet); } else { var sheet = ss.getActiveSheet(); } return sheet.getLastRow(); } else { var sheet = ss.getSheetByName(sheet); var lastRow = sheet.getLastRow(); var array = sheet.getRange(column + 1 + '':'' + column + lastRow).getValues(); for (i=0;i<array.length;i++) { if (array[i] != '''') { var final = i + 1; } } if (final != null) { return final; } else { return 0; } } }

Aquí puede escribir lo siguiente si desea la última fila en la misma hoja que está editando actualmente:

=LASTROW()

o si desea la última fila de una columna particular de esa hoja, o de una columna particular de otra hoja, puede hacer lo siguiente:

=LASTROW("Sheet1","A")

Y para la última fila de una hoja en particular en general:

=LASTROW("Sheet1")

Luego, para obtener los datos reales, puede utilizar indirectamente:

=INDIRECT("A"&LASTROW())

o puede modificar el script anterior en las últimas dos líneas de retorno (las dos últimas, ya que tendría que colocar tanto la hoja como la columna para obtener el valor real de una columna real) y reemplazar la variable con lo siguiente:

return sheet.getRange(column + final).getValue();

y

return sheet.getRange(column + lastRow).getValue();

Una de las ventajas de este script es que puede elegir si desea incluir ecuaciones que evalúen a "". Si no se agregan argumentos, las ecuaciones que se evalúan como "" se contarán, pero si especifica una hoja y una columna, ahora se contarán. Además, hay mucha flexibilidad si estás dispuesto a usar variaciones del script.

Probablemente una exageración, pero todo lo posible.


Aunque la pregunta ya está respondida, hay una forma elocuente de hacerlo.

Use just the column name to denote last non-empty row of that column.

Por ejemplo:

Si sus datos están en A1:A100 y desea poder agregar más datos a la columna A, digamos que puede ser A1:A105 o incluso A1:A1234 más adelante, puede usar este rango:

A1:A


La forma en que lo hace un aficionado es "= CONCATENATE (" A ", COUNTUNIQUE (A1: A9999))", donde A1 es la primera celda de la columna, y A9999 está más abajo en esa columna de lo que nunca esperé que tuviera ninguna entrada. Este A # resultante se puede usar con la función INDIRECTA según sea necesario.


Mi favorito es:

=INDEX(A2:A,COUNTA(A2:A),1)

Entonces, para las necesidades de los OP:

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))


Para encontrar la última celda no vacía, puede usar las funciones de INDEX y MATCH como esta:

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

Creo que esto es un poco más rápido y más fácil.


Puede haber una forma más elocuente, pero esta es la forma en que se me ocurrió:

La función para encontrar la última celda rellenada en una columna es:

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) )

Entonces, si lo combinas con tu función actual, se vería así:

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))


Si A2: A contiene fechas contiguas, entonces el ÍNDICE (A2: A, COUNT (A2: A)) devolverá la última fecha. La formula final es

=DAYS360(A2,INDEX(A2:A,COUNT(A2:A)))


Si la columna se expandió solo por fechas agregadas de manera contigua como en mi caso, usé la función MAX para obtener la última fecha.

La fórmula final será:

=DAYS360(A2; MAX(A2:A))