valor - excel como eliminar n a
Devuelve la celda vacía de la fórmula en Excel (17)
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 forma diferente que una celda vacía verdadera. Entonces, esencialmente, necesito algo como
=IF(some_condition,EMPTY(),some_value)
Intenté 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 parecen ser verdaderas celdas vacías, supongo porque son el resultado de una fórmula. ¿Hay alguna manera de poblar una celda si y solo si se cumple alguna condición y mantener la celda realmente vacía?
EDITAR: como se recomienda, 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 formateadas según las demandas específicas de una aplicación que importa los datos en 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.
Así es como lo hice para el conjunto de datos que estaba usando. Parece enrevesado y estúpido, pero era la única alternativa para aprender a usar la solución VB mencionada anteriormente.
- Hice una "copia" de todos los datos y pegué los datos como "valores".
- Luego resalté los datos pegados e hice un "reemplazo" ( Ctrl - H ) de las celdas vacías con alguna letra, elegí
q
ya que no estaba en ninguna parte de mi hoja de datos. - Finalmente, hice otro "reemplazo" y reemplacé
q
con 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 con 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.
Bueno, hasta ahora esto es lo mejor que se me ha ocurrido.
Utiliza la función ISBLANK
para verificar si la celda está realmente vacía dentro de una declaración IF
. Si hay algo en la celda, A1
en este ejemplo, incluso un carácter ESPACIO, entonces la celda no está
EMPTY
y dará como resultado el cálculo. Esto evitará que se muestren los errores de cálculo hasta que tenga números para trabajar.
Si la celda está EMPTY
, la celda de cálculo no mostrará los errores del cálculo. Si la celda NOT EMPTY
está NOT EMPTY
, se mostrarán los resultados del cálculo. Esto arrojará un error si sus datos son malos, el temido #DIV/0
!
=IF(ISBLANK(A1)," ",STDEV(B5:B14))
Cambie las referencias de celda y la fórmula como lo necesite.
Esta respuesta no trata completamente con el OP, pero ha habido varias veces que he tenido un problema similar y busqué la respuesta.
Si puede recrear la fórmula o los datos si es necesario (y a partir de su descripción parece que puede), 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 ejecuta la siguiente macro vba.
Sub clearBlanks()
Dim r As Range
For Each r In Selection.Cells
If Len(r.Text) = 0 Then
r.Clear
End If
Next r
End Sub
esto se eliminará del contenido de cualquier celda que actualmente muestra ""
o que solo tiene una fórmula
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ógica (booleana) o error. No hay ningún tipo de valor de celda de fórmula de "vacío" o "en blanco".
Una práctica que he visto seguido es usar NA () e ISNA (), pero eso puede o no resolver realmente su problema ya que hay una gran diferencia en la forma en que NA () es tratada por otras funciones (SUM (NA ( )) es # N / A mientras SUM (A1) es 0 si A1 está vacío).
Google me trajo aquí con un problema muy similar, finalmente descubrí una solución que se ajusta a mis necesidades, podría ayudar a alguien más también ...
Usé esta fórmula:
=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
Guau, un número sorprendente de personas malinterpretó la pregunta. Es fácil hacer que una celda parezca 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 utilizando búsqueda y reemplazo, o usando un script VBA. Aunque 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.
Intente evaluar la celda usando LEN
. Si contiene una fórmula, LEN
devolverá 0
. Si contiene texto, devolverá más que 0
.
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 den una celda vacía sin borrar la fórmula.
Parece que se ha perdido una respuesta simple que funciona.
Nombre una celda vacía en su hoja de cálculo BlankCell
.
Devuelva BlankCell
en su fórmula, por ejemplo
=ISBLANK(IFNA(VLOOKUP(A2,SomeTable,2,False),BlankCell))
Esto devolverá TRUE
si ISBLANK(VLOOKUP(A2,SomeTable,2,False))
es TRUE
.
Sí, es posible.
Es posible tener una fórmula aniquiladora que evalúe a trueblank si se cumple la condición. Pasa la prueba de la fórmula ISBLANK. Este truco aparentemente imposible se puede hacer de diferentes maneras. Aquí va mi ejemplo favorito de la colección The FrankensTeam.
Podrás usar, por ejemplo:
=IF(A1="Hello world",GetTrueBlank,A1)
después de definir GetTrueBlank
como rango con nombre .
Paso 1. Pon este código en el Módulo.
Function Delete_UDF(rng)
ThisWorkbook.Application.Volatile
rng.Value = ""
End Function
Dos comentarios sobre el código VBA. (1) No se deje engañar por rng.Value=""
Rabia con nombre GetTrueBlank
finalmente será un verdadero en blanco, no una cadena vacía como en comillas dobles =""
. (2) En mis pruebas, la primera línea de código ThisWorkbook.Application.Volatile
utilizada originalmente por The FrankensTeam demostró ser innecesaria.
Paso 2. En Sheet1
en la celda A1
, agregue el rango con nombre GetTrueBlank
con la siguiente fórmula:
=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")
Paso 3. Usa fórmula autoanulante. Ponga en la celda, digamos B2
, la siguiente fórmula:
=IF(A2=0,GetTrueBlank,A2)
La fórmula anterior en B2
evaluará a trueblank, si escribe 0 en A2
.
Puede descargar un archivo de demostración aquí .
En el ejemplo anterior y en todos los demás ejemplos de The FrankensTeam, la evaluación de la fórmula en trueblank da como resultado una celda vacía. Verificar el resultado con la fórmula ISBLANK resulta positivamente en VERDADERO. Estas son fórmulas como hara-kiri. La fórmula desaparece de la celda cuando se cumple la condición. Se alcanza el objetivo, aunque el autor de la pregunta podría querer que la fórmula no desaparezca.
Tenga en cuenta que estos ejemplos pueden modificarse para dar resultados en una celda adyacente, no matándose a sí misma. Pero ese es otro tema sobre cómo obtener los resultados de la fórmula en una celda diferente a la fórmula misma.
Me he encontrado con los ejemplos de obtener un verdadero truco como resultado de la fórmula reabierto por The FrankensTeam aquí: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell
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 vacía o en blanco (ya que no hay una función empty()
),
donde quiere una celda en blanco, devuelva un
0
lugar de""
y ENTONCESestablezca el formato de número para las celdas como tal, donde tendrá que encontrar lo que desea para los números positivos y negativos (los primeros dos elementos separados por punto y coma). En mi caso, los números que tenía eran 0, 1, 2 ... y quería que 0 apareciera vacío. (Nunca imaginé para qué se usaba el parámetro de texto, pero parecía ser necesario).
0;0;"";"text"@
Si está utilizando funciones de búsqueda como HLOOKUP y VLOOKUP para llevar los datos a su hoja de trabajo, coloque la función entre corchetes 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:
=HLOOKUP("Lookup Value",Array,ROW,FALSE)
Esto devolverá una celda vacía si la celda de búsqueda está vacía:
=(HLOOKUP("Lookup Value",Array,ROW,FALSE))
No sé si esto funciona con otras funciones ... No lo he intentado. Estoy usando Excel 2007 para lograr esto.
Editar
Para obtener realmente un IF (A1 = "",,) para volver como verdadero, debe haber dos búsquedas en la misma celda separadas por un &. La forma más fácil de resolver esto es hacer que la segunda búsqueda sea una celda que esté al final de la fila y siempre estará vacía.
Tal vez esto es hacer trampa, ¡pero funciona!
También necesitaba una tabla que sea la fuente para un gráfico, y no quería ninguna celda en blanco o cero para producir 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 declaración IF con un 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 a todas las celdas con ese valor invá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 celdas que contengan" y bajo la descripción de la regla, seleccione "errores" en el cuadro desplegable. Luego, en formato seleccione la fuente - color - blanco (o cualquiera que sea el color de fondo). Haga clic en los diversos botones para salir y debería ver que las celdas con datos no válidos parecen en blanco (en realidad contienen #N/A
pero el texto blanco sobre fondo blanco se ve vacío). Luego, el gráfico vinculado tampoco muestra los puntos de valor no válidos.
Tantas respuestas que devuelven un valor que parece vacío pero que en realidad no es una celda vacía como se solicitó ...
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. Luego, 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 "Visual Basic Viewer" (Alt + F11) Busque el libro de trabajo que le interese en el explorador del proyecto y haga doble clic en él (o haga clic con el botón derecho y seleccione el código de visualización). 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
For Each cell In Sh.UsedRange.Cells
If IsError(cell.Value) Then
If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
End If
Next
Guarde su archivo como un libro de trabajo macro habilitado
NB: Este proceso es como un bisturí. Eliminará todo el contenido de las celdas que evalúen el error # N / A, así que tenga en cuenta. Irán y no podrás recuperarlos sin volver a ingresar la fórmula que solían contener.
NB2: Obviamente necesita habilitar macros cuando abre el archivo, de lo contrario no funcionará y los errores # N / A permanecerán sin recuperar
Use COUNTBLANK(B1)>0
lugar de ISBLANK(B1)
dentro de su instrucción IF
.
A diferencia de ISBLANK()
, COUNTBLANK()
considera ""
como vacío y devuelve 1.
Utilicé el siguiente trabajo para hacer que mi Excel se vea más limpio:
Cuando haga cálculos, "" le dará un error así que quiere tratarlo como un número, así que utilicé una instrucción if anidada para devolver 0 en lugar de "", y luego, si el resultado es 0, esta ecuación devolverá ""
=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))
De esta manera, la hoja de Excel se verá limpia ...
Vas a tener que usar VBA
, entonces. Usted iterará sobre las celdas de su rango, probará la condición y eliminará los contenidos si coinciden.
Algo como:
For Each cell in SomeRange
If (cell.value = SomeTest) Then cell.ClearContents
Next