La impresión dinámica de Excel se salta datos

La impresión dinámica de Excel se salta datos

Configuré un rango de impresión dinámico en el administrador de nombres para ignorar filas con fórmulas que no devuelven ningún valor de otra hoja de trabajo. En su mayor parte, todo funciona, excepto que se saltan las últimas 8 filas de datos reales. Aquí está la fórmula OFFSET que estoy usando.

=OFFSET('Registro de adquisiciones'!$A$1,0,0,COUNT(IF('Registro de adquisiciones'!$B$8:$B$10003<>0,'Registro de adquisiciones'!$B$8:$B$10003)) ,24)

No puedo entender por qué estaría perdiendo esas últimas 8 filas, a menos que tenga que ver con que comencé el rango en la fila 8. Cambié el rango para comenzar en B1 y ahora se salta las últimas 7 filas. Estoy perdido. ¡Cualquier ayuda es muy apreciada!

[Aquí hay un enlace al archivo][1]. La forma en que funciona es que los datos nuevos se pegan en la pestaña Exportar datos, que luego se incorporan a las otras dos mediante fórmulas. Son las celdas en blanco con fórmulas las que intento ignorar en la impresión dinámica.

Respuesta1

Agregado después de que se proporcionó el enlace:

Sí, las ocho filas son el problema, ya que las primeras siete no están editadas con COUNT() y la octava (el propio B8) tiene texto, por lo que no aumenta el recuento. Pero como se mencionó anteriormente, no puede solucionarlo cambiando el segundo rango. Simplemente necesitas sumar 8 al resultado de COUNT(). Entonces, como la fórmula que se muestra al final, a continuación, excepto que suma 8 en lugar de sumar 7. Todos tus problemas desaparecerán.

(Nota al margen: la razón por la que cambiar ambos rangos a B1 (frente a B8) cambió las filas faltantes a 7 es que el valor en B6 es numérico y se cuenta de esa manera, por lo que ocho de menos se convierten en solo siete de menos).

Respuesta2

Como harrymcse da a entender, definitivamente para responder a esta pregunta realmente se necesita más información e incluso una captura de pantalla podría ser útil.

Sin embargo, parece que está probando un rango (B8:B10003) y no un rango de B1:dondequiera, ya que esa región no tiene nada de material dinámico. De hecho, su contenido podría incluso alterar el cálculo. Hasta ahora, todo bien.

Sin embargo, la cantidad de filas que faltan sugiere que tiene la intención de imprimir lo que haya en esas filas no probadas, ya que el rango dinámico parece comenzar en A1, no en A8 o lo que sea. El 8 que falta frente al 7 en B1: B7 no coincide, pero en su otra pregunta relacionada usted hace una declaración de que está haciendo exactamente lo que hace el otro Respondedor, pero no funciona para usted, mientras que otro texto sugiere que usted casi hace lo que él hace. Así que asumiré que tal vez se aplica aquí la misma inexactitud y seguiré adelante.

Parece que los datos dinámicos comienzan en la fila 8 y que la columna B es una fuente conveniente y precisa para crear el rango de impresión correcto. Y que probablemente desee imprimir algunas o todas las siete filas superiores a ese punto como inicio del informe, posiblemente también como encabezado (pero probablemente no o con tantas filas involucradas, le faltarían mil o dos). )

Se supone que los datos en ese rango son numéricos o no deseados, por lo que COUNT()es excelente y no es necesario COUNTA(). La diferencia es que este último también contará las celdas de texto. Entonces, el primer problema potencial: tal vez, en las 10.000 filas, algo así como ocho de esos valores sean en realidad texto. "CÓMO" aquí solo importa para resolver la fuente de eso (ya que claramente no se espera), y no es un precursor para siquiera considerar si podría ser así o no. Así que configure dos fórmulas, una usando cada función en ese rango, y vea si sus resultados son los mismos. De lo contrario, hay algunas entradas de texto en rojo en la columna. Esos no se cuentan, por lo que el rango termina muy por debajo de donde debe terminar. Francamente, no importa lo improbable que consideres que sea, es absolutamente la fuente más probable de problemas. Además, podría ser parte del problema y el resto otra cosa. Haz la prueba.

Continuando, probar el rango exacto correcto es sin duda fundamental, así que felicitaciones por hacerlo. Sin embargo, ese no es necesariamente exactamente el rango en el que desea generar el área de impresión real. No por sí solo. Entonces, digamos que desea imprimir comenzando en A1, por lo que se usarán siete filas del total calculado para las filas 1 a 7, no para los datos reales. En otras palabras, digamos que el recuento es 2.433. Tal como está escrito, ese sería el rango A1:X2433, pero dado que implica 2433 filas en las filas 8 a 10003, realmente querrás esa cantidad Y siete más. Entonces, si el cálculo encuentra 2433 elementos, realmente necesita el rango A1:X2440, no A1:X2433. Eso eliminaría siete filas del informe solo por eso.

¿Cómo se aplica esto en su fórmula? Debes agregar esas siete filas a la salida de la COUNT()función. Justo después del paréntesis de cierre:

=OFFSET('Procurement Log'!$A$1,0,0,COUNT(IF('Procurement Log'!$B$8:$B$10003<>0,'Procurement Log'!$B$8:$B$10003))  +7,  24)

(justo antes del "24").

Mi apuesta es que con eso obtendrás siete de las filas que faltan. Y tal vez exista una entrada de texto en algún lugar de esas 9,996 celdas de la columna B para obtener la otra.

Cambiar la referencia de B8 a B1 en el primer uso agregaría filas al recuento si las filas 1 a 7 tienen contenido (ya que el uso en la prueba las agrega al recuento cuando simplemente contarlas no lo haría) y usted lo dice. es perderlos, no ganarlos, así que ese no es el problema. Cambiarlo en el segundo uso probablemente (es necesario ver la página real exacta de la hoja de cálculo) los perdería, ya que los primeros siete probablemente no sean numéricos. Excel relaciona elementos con elementos, no direcciones con direcciones. Eso significa que si los primeros siete elementos del rango no son numéricos, sus FALDOS se compararán con las entradas numéricas del rango de prueba (que comienza en B8, presumiblemente una entrada numérica en sí). Por lo tanto, los primeros siete elementos del rango de interés quedarían fuera del recuento, lo que haría que el rango de impresión dinámica estuviera a siete filas de ser correcto.

Dejar que los rangos coincidan y agregar un siete al resultado de su función principal ( COUNT()) logra su objetivo sin estropear las comparaciones. Hazlo y apuesto a que empezará a verse muy bien. No juegues con nada en la COUNT()función, solo agrega los siete necesarios después.

Por último, mencionaré a cualquiera que no se haya dado cuenta de que su situación presumiblemente es una de fórmulas que devuelven valores en un bloque continuo a lo largo de las filas hasta algún punto en el que no lo hacen, y nunca lo vuelven a hacer en el resto del camino. Por lo tanto, no tiene datos en las filas 23, 24, 2438, 2499 y 2900. Para esos cinco como únicos datos, estarían en las filas 8 a 12. Así que no estás usando esto para "cazar y picotear" las filas, por así decirlo, sino que estás tomando como un bloque para imprimir, la primera fila hacia abajo hasta la primera fila vacía y sin importarte después de eso. Este enfoque no funcionaría en lo más mínimo si fueran detectados por todas partes.

También significa que algunas filas en blanco entre los datos devueltos no son la causa del problema y que usar una fórmula como una basada en FILTER()para empaquetarlos todos en un grupo continuo no hará nada como ya están. (Y si eso está completamente mal y SE los detecta con líneas en blanco en el medio, bueno, esa es la fuente de su dificultad y es hora de abordarla FILTER()).

información relacionada