Necesito devolver una celda vacía de una fórmula de Excel, pero parece que Excel trata una cadena vacía o una referencia a una celda vacía de manera diferente a una celda vacía verdadera. Así que esencialmente necesito algo como
=IF(some_condition,EMPTY(),some_value)
Traté de hacer cosas como
=IF(some_condition,"",some_value)
y
=IF(some_condition,,some_value)
y suponiendo que B1 es una celda vacía
=IF(some_condition,B1,some_value)
pero ninguno de estos parece ser verdaderas celdas vacías, supongo porque son el resultado de una fórmula. ¿Hay alguna forma de llenar una celda si y solo si se cumple alguna condición y de lo contrario mantener la celda realmente vacía?
EDITAR: según lo recomendado, traté de devolver NA (), pero para mis propósitos esto tampoco funcionó. ¿Hay alguna manera de hacer esto con VB?
EDITAR: Estoy creando una hoja de trabajo que extrae datos de otras hojas de trabajo que está formateada para las demandas muy específicas de una aplicación que importa los datos a una base de datos. No tengo acceso para cambiar la implementación de esta aplicación, y falla si el valor es "" en lugar de estar realmente vacío.
fuente
Respuestas:
Vas a tener que usar
VBA
, entonces. Recorrerá las celdas de su rango, probará la condición y eliminará el contenido si coincide.Algo como:
fuente
VbNullString
Excel no tiene ninguna forma de hacer esto.
El resultado de una fórmula en una celda en Excel debe ser un número, texto, lógico (booleano) o error. No hay un tipo de valor de celda de fórmula "vacío" o "en blanco".
Una práctica que he visto seguir es usar NA () e ISNA (), pero eso puede o no resolver realmente su problema ya que existe una gran diferencia en la forma en que NA () es tratado por otras funciones (SUM (NA ( )) es # N / A mientras SUM (A1) es 0 si A1 está vacío).
fuente
Sí, es posible.
Es posible tener una fórmula aniquiladora que evalúe en blanco verdadero si se cumple la condición. Pasa la prueba de
ISBLANK
fórmula.Todo lo que necesita es configurar un rango con nombre, por ejemplo
GetTrueBlank
, y podrá usar el siguiente patrón como en su pregunta:Paso 1. Pon este código en el Módulo de VBA.
Paso 2. En
Sheet1
enA1
célula añadir nombrado gamaGetTrueBlank
con la siguiente fórmula:Eso es. No hay más pasos. Solo usa la fórmula auto aniquiladora. Poner en celda, digamos
B2
, la siguiente fórmula:La fórmula anterior
B2
se evaluará en trueblank, si escribe 0A2
.Puede descargar un archivo de demostración aquí .
En el ejemplo anterior, la evaluación de la fórmula en trueblank da como resultado una celda vacía. Comprobando el resultado con
ISBLANK
resultados de la fórmula positivamente en VERDADERO. Esta es la fórmula de hara-kiri. La fórmula desaparece de la celda cuando se cumple la condición. Se alcanza el objetivo, aunque probablemente desee que la fórmula no desaparezca.Puede modificar la fórmula para devolver el resultado en la celda adyacente, de modo que la fórmula no se mate sola. Vea cómo obtener el resultado UDF en la celda adyacente .
He encontrado los ejemplos de cómo obtener un verdadero espacio en blanco como resultado de la fórmula revelado por The FrankensTeam aquí: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- célula
fuente
Tal vez esto sea trampa, ¡pero funciona!
También necesitaba una tabla que sea la fuente de un gráfico, y no quería que ninguna celda en blanco o cero produjera un punto en el gráfico. Es cierto que debe establecer la propiedad del gráfico, seleccionar datos, celdas ocultas y vacías para "mostrar celdas vacías como espacios" (haga clic en el botón de opción). Ese es el primer paso.
Luego, en las celdas que pueden terminar con un resultado que no desea trazar, coloque la fórmula en una instrucción IF con
NA()
resultados como=IF($A8>TODAY(),NA(), *formula to be plotted*)
Esto proporciona el gráfico requerido sin puntos cuando se produce un valor de celda no válido. Por supuesto, esto deja todas las celdas con ese valor no válido para leer
#N/A
, y eso es desordenado.Para limpiar esto, seleccione la celda que puede contener el valor no válido, luego seleccione el formato condicional - nueva regla. Seleccione "formatear solo las celdas que contienen" y, en la descripción de la regla, seleccione "errores" en el cuadro desplegable. Luego, en formato, seleccione fuente - color - blanco (o el color de fondo que sea). Haga clic en los diversos botones para salir y debería ver que las celdas con datos no válidos se ven en blanco (en realidad contienen,
#N/A
pero el texto blanco sobre un fondo blanco se ve en blanco). Luego, el gráfico vinculado tampoco muestra los puntos de valor no válidos.fuente
Así es como lo hice para el conjunto de datos que estaba usando. Parece complicado y estúpido, pero fue la única alternativa para aprender a usar la solución VB mencionada anteriormente.
q
ya que no estaba en ninguna parte de mi hoja de datos.q
por nada.Este proceso de tres pasos convirtió todas las celdas "vacías" en celdas "en blanco". Intenté fusionar los pasos 2 y 3 simplemente reemplazando la celda en blanco por una celda en blanco, pero eso no funcionó, tuve que reemplazar el celda en blanco con algún tipo de texto real, luego reemplace ese texto con una celda en blanco.
fuente
Si el objetivo es poder mostrar una celda como vacía cuando de hecho tiene el valor cero, en lugar de usar una fórmula que dé como resultado una celda en blanco o vacía (ya que no hay
empty()
función),donde desea una celda en blanco, devuelva un en
0
lugar de""
y ENTONCESestablezca el formato de número para las celdas de esta manera, donde tendrá que encontrar lo que desea para los números positivos y negativos (los dos primeros elementos separados por punto y coma). En mi caso, los números que tenía eran 0, 1, 2 ... y quería que el 0 apareciera vacío. (Nunca descubrí para qué se usaba el parámetro de texto, pero parecía ser necesario).
fuente
Intenta evaluar la celda usando
LEN
. Si contiene una fórmulaLEN
volverá0
. Si contiene texto, devolverá mayor que0
.fuente
""
o está vacía.LEN(cell)>0
devuelve verdadero si hay un número (incluido cero e incluso si el número se calcula mediante una fórmula), y falso si la cadena está vacía o vacía.Wow, una increíble cantidad de personas leyó mal la pregunta. Es fácil hacer que una celda se vea vacía. El problema es que si necesita que la celda esté vacía, las fórmulas de Excel no pueden devolver "ningún valor" pero solo pueden devolver un valor. Devolver un cero, un espacio o incluso "" es un valor.
Por lo tanto, debe devolver un "valor mágico" y luego reemplazarlo sin ningún valor usando buscar y reemplazar, o usando un script VBA. Si bien podría usar un espacio o "", mi consejo sería usar un valor obvio, como "NODATE" o "NONUMBER" o "XXXXX" para que pueda ver fácilmente dónde ocurre; es bastante difícil de encontrar "" en una hoja de cálculo
fuente
Utilizar
COUNTBLANK(B1)>0
lugar deISBLANK(B1)
dentro de suIF
declaración.A diferencia
ISBLANK()
,COUNTBLANK()
considera""
como vacío y devuelve 1.fuente
Tantas respuestas que devuelven un valor que PARECE vacío pero que en realidad no está vacío como la celda solicitada ...
Según lo solicitado, si realmente desea una fórmula que devuelva una celda vacía. ES posible a través de VBA. Entonces, aquí está el código para hacer exactamente eso. Comience escribiendo una fórmula para devolver el error # N / A donde quiera que las celdas estén vacías. Entonces mi solución borra automáticamente todas las celdas que contienen ese error # N / A. Por supuesto, puede modificar el código para eliminar automáticamente el contenido de las celdas en función de lo que desee.
Abra el "visor básico visual" (Alt + F11) Encuentre el libro de trabajo de interés en el explorador de proyectos y haga doble clic en él (o haga clic con el botón derecho y seleccione ver código). Esto abrirá la ventana "ver código". Seleccione "Libro de trabajo" en el menú desplegable (General) y "SheetCalculate" en el menú desplegable (Declaraciones).
Pegue el siguiente código (basado en la respuesta de JT Grimes) dentro de la función Workbook_SheetCalculate
Guarde su archivo como un libro de trabajo habilitado para macros
NB: Este proceso es como un bisturí. Eliminará todo el contenido de cualquier celda que evalúe el error # N / A, así que tenga en cuenta. Se irán y no podrá recuperarlos sin volver a ingresar la fórmula que solían contener.
NB2: Obviamente, debe habilitar las macros cuando abra el archivo; de lo contrario, no funcionará y los errores # N / A permanecerán sin recuperar.
fuente
Esta respuesta no trata completamente con el OP, pero ha habido varias veces que tuve un problema similar y busqué la respuesta.
Si puede recrear la fórmula o los datos si es necesario (y de su descripción parece que puede), entonces cuando esté listo para ejecutar la parte que requiere que las celdas en blanco estén realmente vacías , puede seleccionar la región y ejecute la siguiente macro vba.
esto eliminará el contenido de cualquier celda que se muestre actualmente
""
o que solo tenga una fórmulafuente
Lo que usé fue un pequeño truco. Usé T (1), que devolvió una celda vacía. T es una función en Excel que devuelve su argumento si es una cadena y una celda vacía de lo contrario. Entonces, lo que puedes hacer es:
fuente
Utilicé el siguiente trabajo para hacer que mi Excel se vea más limpio:
Cuando realice cualquier cálculo, el "" le dará un error, por lo que desea tratarlo como un número, por lo que utilicé una instrucción anidada if para devolver 0 en lugar de "", y luego, si el resultado es 0, esta ecuación devolverá ""
De esta manera, la hoja de Excel se verá limpia ...
fuente
Si está utilizando funciones de búsqueda como BUSCARH y BUSCARV para incorporar los datos a su hoja de trabajo, coloque la función entre paréntesis y la función devolverá una celda vacía en lugar de un {0}. Por ejemplo,
Esto devolverá un valor cero si la celda de búsqueda está vacía:
Esto devolverá una celda vacía si la celda de búsqueda está vacía:
No sé si esto funciona con otras funciones ... No lo he intentado. Estoy usando Excel 2007 para lograr esto.
Editar
Para que un IF (A1 = "",,) vuelva a ser verdadero, debe haber dos búsquedas en la misma celda separadas por un &. La forma fácil de evitar esto es hacer que la segunda búsqueda sea una celda que se encuentra al final de la fila y siempre estará vacía.
fuente
Bueno, hasta ahora es lo mejor que se me ocurrió.
Utiliza la
ISBLANK
función para verificar si la celda está realmente vacía dentro de unaIF
declaración. Si hay algo en la celda,A1
en este ejemplo, incluso un carácter ESPACIO,entonces la celda no es
EMPTY
y el cálculo resultará. Esto evitará que se muestren los errores de cálculo hasta que tenga números con los que trabajar.Si la celda es
EMPTY
entonces, la celda de cálculo no mostrará los errores del cálculo. Si la celda esNOT EMPTY
así, se mostrarán los resultados del cálculo. Esto arrojará un error si sus datos son malos,#DIV/0
¡ temidos !Cambie las referencias de celda y la fórmula según lo necesite.
fuente
La respuesta es positiva: no puede usar la función = IF () y dejar la celda vacía. "Parece vacío" no es lo mismo que vacío. Es una pena que dos comillas consecutivas no produzcan una celda vacía sin borrar la fórmula.
fuente
Google me trajo aquí con un problema muy similar, finalmente descubrí una solución que se adapta a mis necesidades, podría ayudar a alguien más también ...
Usé esta fórmula:
fuente