Mostrar en blanco al hacer referencia a una celda en blanco en Excel 2010

27

Tengo un libro de Excel 2010 que contiene varias hojas de trabajo individuales. Las celdas en una de las hojas están vinculadas a celdas individuales en otras dos hojas de trabajo en el mismo libro. Estoy usando una referencia de celda directa que esencialmente dice que cualquier valor que se ingrese en una celda particular en una hoja también llena las celdas en otras dos hojas. Usé la función (=) con la referencia de celda para lograr esto.

El problema con el que me encuentro es que, incluso cuando la celda primaria se deja en blanco, las celdas que se pueblan desde esa celda primaria mostrarán 0, en lugar de permanecer en blanco.

Quiero que las celdas subordinadas permanezcan en blanco si la celda principal a la que están vinculadas está en blanco.

Dave
fuente
Mi fórmula es muy larga, para mí también la construcción IF es apenas aceptable, buena pregunta, pero tampoco encontré una respuesta lo suficientemente buena. {= IFERROR (INDICE (NEPŘÍMÝ.ODKAZ ("EsZkouska"); SMALL (KDYŽ ((INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska") ;; 1; 1) = "ČSN721180") * (INDEX (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska "))) + 1;" "); 1) ; 17; 1); "")}
Vojtěch Dohnal
Es posible utilizar la construcción IF combinada con este enfoque: stackoverflow.com/questions/22359452/… . De esta manera, puede crear fórmulas con nombre y usarlas en su simple declaración IF ...
Vojtěch Dohnal

Respuestas:

49

Debe forzar a Excel a tratar el contenido de la celda como un valor de texto en lugar de un número, lo que hace automáticamente con valores en blanco.

=A2 & ""

Esto obligará a Excel a hacer que la celda haga referencia a un valor de texto, evitando así la conversión de espacios en blanco a ceros.

wbeard52
fuente
44
¡Guauu! ¡No puedo creer que haya resultado ser tan simple!
Scott
1
¿Cómo trata la solución con el formato de entrada numérica? Me parece que esta respuesta destruye datos numéricos. Claro, no obtienes el 0 cuando la celda está vacía, pero también obtienes datos textuales en lugar de numéricos ... ¿Es esto un problema en la práctica o tienes palabras tranquilizadoras?
LudvigH
1
Lo almacena como texto. Sin embargo, cuando lo usa en una ecuación matemática, Excel debe convertirlo nuevamente a un número. Sin embargo, en la práctica, solo implementaría esta solución en un informe en el que ya haya realizado el trabajo detrás de escena en otras hojas de trabajo o columnas ocultas.
wbeard52
18

Aquí hay tres respuestas:

1) Dejar que other.cell.reference represente la fórmula de referencia que tiene actualmente después de =(por ejemplo,  Sheet17!$H$42), reemplace esa referencia de enlace con

=IF(other.cell.reference <>"",other.cell.reference, "")

2) Ajuste el formato de “Número” de sus células vinculadas a “Custom”: General;–General;.

3) En la sección "Opciones de Excel", "Avanzado", sección "Mostrar opciones para esta hoja de trabajo", desactive la casilla de verificación "Mostrar un cero en las celdas que tienen un valor cero". Advertencia: esto hará que todos los ceros en la hoja de trabajo desaparezcan.

Scott
fuente
1
La primera opción es subóptima, ya que requiere ingresar (o copiar) su fórmula dos veces dentro de la celda. Puede ser especialmente desagradable cuando tienes una fórmula realmente larga, y luego necesitas editar (o peor, depurar) esa fórmula más tarde. La segunda opción no parece estar funcionando para mí, pero tal vez lo estoy haciendo mal. El tercero definitivamente no es ideal ya que el alcance de su efecto es mucho más amplio de lo que uno realmente podría desear. ¿Realmente no hay mejores opciones?
Iszi
@Iszi: Respecto a la primera opción: no estoy hablando de ingresar una fórmula dos veces. Según la pregunta original, estoy hablando de una situación en la que Q1contiene una fórmula (realmente larga) y A1contiene =Q1; queremos cambiar A1a =IF(Q1<>"", Q1, ""), que nunca debería necesitar cambiar de nuevo. "¿Realmente no hay mejores opciones?" Bueno, esta pregunta ha estado inactiva durante nueve meses, y esto es todo lo que se ha publicado. Si estas respuestas no son lo suficientemente buenas para usted, publique una nueva pregunta o recompense esta.
Scott
Eso es más o menos lo mismo. Aunque resuelve algunas de las molestias de tener que solucionar dos instancias de una fórmula dentro de una celda, también complica un poco las cosas al agregar otra celda (o de otra manera innecesaria) a la mezcla. Desafortunadamente, supongo que realmente no hay otra respuesta "agradable y limpia" para esto.
Iszi
Publiqué una pregunta relacionada hace un tiempo y la única respuesta que vale la pena que es diferente de lo que está aquí involucraba un script VBA.
Iszi
4

SI sus datos de referencia son solo de tipo numérico (sin texto) o vacíos, y puede tener 0, entonces este es mi enfoque preferido, con solo ingresar la fórmula una vez. Es cierto que es una forma ligeramente indirecta, pero creo que es mejor porque:

  • no necesita celdas adicionales para poner la fórmula y luego hacer referencia a las segundas celdas
  • no necesitas escribir la fórmula dos veces
  • Este método diferencia entre un valor cero y una celda vacía
  • no requiere VBA
  • no requiere rangos con nombre

Caída : si necesita datos de texto devueltos, esto no funcionará. Para los datos de texto, mi método preferido es usar el formato de número como se menciona en otras respuestas anteriores.

=IFERROR((A1 & "") * 1,"")

A1 en este caso puede ser reemplazado por cualquier celda, incluida otra hoja, libro de trabajo o INDIRECTO ().

Notas sobre cómo funciona:
IFERROR (): el segundo argumento se establece en una cadena vacía, por lo que si se produce un error, obtenemos una cadena vacía. Por lo tanto, debemos asegurarnos de que si la celda de origen está vacía, se active un error.

Método numérico : Stringify el valor de origen, luego multiplique por 1. Literal emtpy string * 1 = #VALUE, la cadena con numérico se convierte automáticamente a numérico y no se produce ningún error.

rayzinnz
fuente
Interesante. ¿Por qué crees que necesitas "" & A1 & ""? ¿Cuándo produce eso resultados diferentes de A1 & ""o "" & A1?
G-Man dice 'reinstalar a Mónica' el
@ G-man: correcto y preferible. Gracias, he actualizado la respuesta.
rayzinnz
4

Hay otro truco: establecer la celda vacía soucre en fórmula ="". Vea la descripción detallada aquí.

Aleksey F.
fuente
Esta es la solución perfecta para mí, ya que las celdas a las que hago referencia son menos que las que las hacen referencia. ¡Gracias!
Kit
2

Yo tampoco encontré una solución mejor que la de Scott.

Pero combinado con el enfoque desde aquí, podría ser casi soportable, creo:

http://www.ozgrid.com/Excel/named-formulas.htm

Digamos que tengo una fórmula como esta

= IFERROR( INDEX(INDIRECT("EsZkouska");
  SMALL(IF((INDEX(INDIRECT("EsZkouska");;1‌​;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
  ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")

Esta fórmula lee el valor de celda de una hoja de datos usando selección condicional y los presenta en otra hoja. No tengo control sobre el formateo de las celdas en la hoja de datos.

Voy a Insertar> Nombre> Definir y en "Nombres en el libro de trabajo" creo un nuevo Nombre "RC_P_B". Luego, en el campo "Se refiere a", copie mi fórmula (sin {} caracteres, es una fórmula de matriz).

Luego puede usar la fórmula de Scott sin tener que repetir todo el texto de la fórmula:

 {=IF(RC_P_B<>""; RC_P_B;"---")}

Creo que esto es mejor que copiar toda la fórmula.

Vojtěch Dohnal
fuente
2

Simplemente no utilizo una fórmula para superar este problema. Todo lo que hago es formatear celdas condicionalmente para que el color de la fuente sea blanco si el valor de la celda es igual a 0.

Firas
fuente
55
Esto tiene el problema obvio con las celdas que tienen un valor 0 legítimo.
Dmitry Grigoryev
Y también tiene el inconveniente de ralentizar los cálculos, especialmente para hojas de cálculo grandes, ya que las fórmulas de formato condicional son "super" volátiles. (También se evalúan cada vez que se
vuelve a
1

Si la celda vinculada no es numérica, puede usar una instrucción IF con ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")
Brad Patton
fuente
1
Pero si la celda referenciada ( Sheet1!A2en su ejemplo) contiene un número, esto mostrará una cadena nula.
Scott
Sí, no estaba claro en la pregunta qué datos hay en la celda referenciada. Pensé que si era numérico, él querría los ceros.
Brad Patton
1

Durante mucho tiempo he buscado una solución elegante para este problema.

He usado fórmula = if (a2 = "", "", a2) durante años, pero me parece un poco engorroso.

Intenté la sugerencia anterior = a2 & "" y aunque parece funcionar, muestra un número que en realidad es texto, por lo que no se puede aplicar el formato de número y no funcionan las operaciones estadísticas, como la suma, el promedio, la mediana, etc., así que si es viable los números que estás buscando no se ajustan a la factura.

Experimenté con algunas de las otras funciones y encontré lo que creo que es la solución más elegante hasta la fecha. Continuando con el ejemplo anterior:

= CELDA ("contenido", A2)

devuelve un valor numérico que puede formatearse como un número y devuelve un espacio en blanco cuando la celda referenciada está en blanco. Por alguna razón, esta solución no parece aparecer en ninguna de las sugerencias en línea que he encontrado, pero

Schaetzer
fuente
1
Acabo de probar esto en Excel 2013. Cuando A2está en blanco, se muestra 0. ¿Estás seguro de que no estás haciendo nada con el formato?
Scott
1

Solución para Excel 2010:

  1. Abrir documento"
  2. Presione "Opciones"
  3. Haga clic en "Avanzado"
  4. En "Opciones de visualización" para esta hoja de trabajo "BBBB"
  5. Desmarque la casilla "Mostrar un valor cero para las celdas que tienen un valor cero".
CBMISRA
fuente
Dije esto en (la tercera opción de)  mi respuesta .
Scott
0
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String

Dim Result As Variant

If IsEmpty(MyCell) Then

   FuncDisplayStringNoValue = "No Value"

Else
   Result = CDec(MyCell)

   Result = Round(Result, 2)

   FuncDisplayStringNoValue = "" & Result

   End If

End Function
Ramon Salazar
fuente
0

Utilicé el formato condicional para formatear la fuente para que sea del mismo color que el fondo de la celda donde el valor de la celda era igual a cero.

Butónico
fuente
¿Cómo y cómo se veía?
Pimp Juice IT
¡Esta solución ya ha sido publicada por Firas hace 3 años !
robinCTS
-1

Lo que funcionó para mí en Office 2013 fue:

=IF(A2=""," ",A2)

Donde en el primer conjunto de citas no hay espacio, y en el segundo conjunto hay un espacio.

Espero que esto ayude

Andy
fuente
¿Por qué necesitas el espacio en el segundo conjunto de paréntesis? ¿No =IF(A2="", "", A2)funciona igual de bien? ¿Cómo sería eso diferente =IF(A2<>"", A2, "")? Entonces, ¿cómo es eso diferente de la respuesta más votada, que se dio hace más de dos años?
G-Man dice 'Restablece a Monica' el
-1

Tuve un problema similar y creo que encontré un método para ti. Solucionó mis problemas.

Si desea que la columna C haga referencia a la columna A, y solo escriba una fórmula para la celda de referencia, debe usar esto y arrastrar hacia abajo la columna.

=A1

Sin embargo, puede haber celdas de origen en la columna A que estén en blanco y necesiten permanecer en blanco en las celdas de referencia en la columna C, puede usar esto y arrastrar la columna hacia abajo.

=T(A1)

En cuanto al formato de celda, la referencia (columna C) deberá ser general.

Will Prater
fuente
Por desgracia, esta fue una pregunta sin respuesta: el OP llegó a Super User (hace casi tres años), hizo esta pregunta y nunca regresó. Por lo tanto, es posible que nunca sepamos los detalles de su situación. Pero, una función principal (si no la principal ) de Excel es procesar números. Si los datos de origen (columna A, en su ejemplo) contienen números, su respuesta no puede llenar las celdas objetivo con los datos numéricos.
Scott
Asegúrese de que su formateo de celda en las celdas que contienen la fórmula = T () sea General en lugar de Texto. Porque donde lo he usado, muestra totalmente los números.
Will Prater
Lo comprobé. Es general, y está en blanco. (Excel 2013)
Scott
El problema podría ser que estás usando 2013, mi respuesta sería para 2010.
Will Prater
Hubo una respuesta (ahora eliminada; puede verla solo si su representante es ≥10000) que informó que esto tampoco funcionó en Excel 2010.
Scott
-1

Solución:
=IF('Wk1 Data-replace w dt bgn & end'!C2>0, 'Wk1 Data-replace w dt bgn & end'!C2, "")

Explicación:
Para resolver este problema, utilicé dos conjuntos de Ifcomandos.

Primera parte del comando:
le dije a la celda que mostrara el contenido de la celda de referencia si la celda de referencia contenía datos (Excel interpreta esto como la celda que tiene un valor mayor que 0)

Segunda parte del comando:
le dije cómo comportarse si no había datos; "" significa dejar en blanco

Nota: Wk1 Data-replace w dt bgn & end '! C2 es mi celda de referencia.

Crystal Harris
fuente
(1) Esto se mostrará en blanco incluso si la celda referenciada contiene 0 o un número negativo. La pregunta quiere que la celda de enlace esté en blanco solo si la celda referenciada está en blanco . (2) Si realiza el cambio obvio y cambia esto =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), se convierte en equivalente a una respuesta que ya se ha dado aproximadamente cuatro veces.
G-Man dice 'reinstalar a Monica' el
-1

Todas estas soluciones son demasiado complicadas para mí y me doy cuenta de que esto puede no ser factible para todas las aplicaciones, pero solo lleno el campo de origen con un espacio en blanco y obtengo un espacio en blanco en el campo de destino.

John Alonso
fuente
1
¿Cómo llenas una celda con un espacio en blanco y qué quieres decir con un espacio en blanco?
Fixer1234
Disculpe, debería haber dicho un personaje espacial. De esa manera, la celda no está realmente vacía. La celda de origen tiene un espacio y el espacio llega a la celda copiada en destino.
John Alonso el
-1

Tengo una solución trabajando para mí:

IF(cell reference="","",cell reference)

Explicación:

""es igual a una celda en blanco o vacía. Ahora solo giro el si alrededor. Si la celda está en blanco, déjela en blanco; de lo contrario, use la referencia de celda.

Sebastian Tidare
fuente
Esto es básicamente lo mismo que la primera solución en superuser.com/a/515941
Arjan
-2

Vaya a Formato de celdas.

Luego seleccione el formato personalizado e ingrese lo siguiente: 0;-0;;@

Avik
fuente
2
¿Puedes explicar qué hace esto? Gracias.
Fixer1234
1
Esto hace más o menos lo mismo que la segunda opción de mi respuesta a esta pregunta («Establezca el formato“ Número ”de sus celdas vinculadas en“ Personalizado ”: General;–General;.»), Es decir (a) si el valor es un número positivo, muestra su valor absoluto entero; (b) si el valor es un número negativo, muestre su valor absoluto entero, precedido por -; (c) si el valor es cero, no mostrar nada ; y (d) si el valor no es un número, muestre su valor de texto. ... (Continúa)
Scott
1
(Cont.) ... Sin embargo, esta versión tiene el inconveniente (es decir, error) de que redondea números no enteros al entero más cercano. ( Generalle da el formato predeterminado para los números, incluidos los dígitos decimales según sea necesario (pero sin incluir el -signo)). Además, el final ;@parece ser innecesario (es decir, parece ser el predeterminado), ya que mi respuesta muestra correctamente los valores de texto sin modificaciones
Scott