Visualizza vuoto quando si fa riferimento alla cella vuota in Excel 2010


27

Ho una cartella di lavoro di Excel 2010 che contiene numerosi fogli di lavoro individuali. Le celle su uno dei fogli sono collegate alle singole celle su altri due fogli di lavoro nella stessa cartella di lavoro. Sto usando un riferimento di cella diretto che dice essenzialmente che qualunque valore sia inserito in una particolare cella su un foglio popola anche celle su altri due fogli. Ho usato la funzione (=) con il riferimento di cella per ottenere questo risultato.

Il problema in cui mi imbatto è che, anche quando la cella primaria viene lasciata vuota, le celle che popolano da quella cella primaria visualizzeranno 0, anziché rimanere vuote stesse.

Voglio che le celle subordinate rimangano vuote se la cella primaria a cui sono collegate è vuota.


La mia formula è molto lunga, anche per me la costruzione di IF è difficilmente accettabile, buona domanda ma anche io non ho trovato una risposta abbastanza buona. {= IFERROR (INDICE (NEPŘÍMÝ.ODKAZ ("EsZkouska"); PICCOLO (KDYŽ ((INDICE (NEPŘÍMÝ.ODKAZ ("EsZkouska") ;; 1; 1) = "ČSN721180") * (INDICE (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); Řádek (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (Radek (NEPŘÍMÝ.ODKAZ (" EsZkouska "))) + 1;" "); 1) ; 17; 1); "")}
Vojtěch Dohnal,

È possibile utilizzare la costruzione IF combinata con questo approccio: stackoverflow.com/questions/22359452/… . In questo modo puoi creare formule nominate e usarle nella tua semplice dichiarazione IF ...
Vojtěch Dohnal,

Risposte:


49

Devi forzare Excel a trattare il contenuto della cella come un valore di testo anziché un numero, cosa che fa automaticamente con valori vuoti.

=A2 & ""

Ciò costringerà Excel a rendere tale riferimento di cella un valore di testo, impedendo così la conversione degli spazi vuoti in zero.


4
Wow! Non riesco a credere che si sia rivelato così semplice!
Scott,

1
In che modo la soluzione gestisce la formattazione dell'input numerico? Mi sembra che questa risposta distrugga i dati numerici. Certo, non ottieni lo 0 quando la cella è vuota, ma ottieni anche dati testuali anziché numerici ... È un problema in pratica o hai parole rassicuranti?
LudvigH

1
Lo memorizza come testo. Tuttavia, quando lo si utilizza in un'equazione matematica, Excel dovrebbe riconvertirlo in un numero. In pratica, tuttavia, distribuiresti questa soluzione solo su un rapporto in cui hai già svolto il lavoro dietro le quinte su altri fogli di lavoro o colonne nascoste.
wbeard52,

18

Ecco tre risposte:

1) Lasciando other.cell.reference rappresenta la formula di riferimento che hai attualmente dopo =(es.  Sheet17!$H$42), Sostituisci quel riferimento di collegamento con

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

2) Impostare il formato “Numero” delle vostre cellule legate alla “Custom”: General;–General;.

3) Nella sezione "Opzioni di Excel", "Avanzate", sezione "Opzioni di visualizzazione per questo foglio di lavoro", deseleziona la casella di controllo "Mostra uno zero nelle celle con valore zero". Attenzione: questo farà scomparire tutti gli zero nel foglio di lavoro.


1
La prima opzione non è ottimale, poiché richiede di inserire (o copiare) la formula due volte all'interno della cella. Può essere particolarmente brutto quando hai una formula davvero lunga e quindi devi modificare (o peggio, eseguire il debug) quella formula in un secondo momento. La seconda opzione non sembra funzionare per me, ma forse sto sbagliando. Il terzo non è sicuramente l'ideale poiché la portata del suo effetto è molto più ampia di quanto si possa desiderare veramente. Non ci sono davvero opzioni migliori?
Iszi,

@Iszi: per quanto riguarda la prima opzione: non sto parlando di inserire una formula due volte. Come per la domanda originale, sto parlando di una situazione in cui Q1contiene una formula (molto lunga) e A1contiene =Q1; vogliamo cambiare A1in =IF(Q1<>"", Q1, ""), che non dovresti mai cambiare di nuovo. "Non ci sono davvero opzioni migliori?" Bene, questa domanda è stata inattiva per nove mesi, e questo è tutto ciò che è stato pubblicato. Se queste risposte non sono abbastanza buone per te, pubblica una nuova domanda o fai una taglia su questa.
Scott,

È più o meno la stessa cosa. Sebbene risolva alcune delle ingombri di dover risolvere due istanze di una formula all'interno di una cella, complica un po 'le cose aggiungendo un'altra cella (altrimenti non necessaria) o gruppo di cellule alla miscela. Purtroppo, suppongo che ci realmente non è un altro "bello e pulito" risposta per questo, però.
Iszi,

Ho postato una domanda correlata qualche tempo fa e l'unica risposta utile che è diversa da ciò che è coinvolto qui è uno script VBA.
Iszi,

4

SE i tuoi dati di riferimento sono solo di tipo numerico (non testuale) o vuoti, e potresti avere 0, allora questo è il mio approccio preferito, inserendo la formula una sola volta. Certo, un modo leggermente indiretto, ma è meglio penso perché:

  • non hai bisogno di celle extra per inserire la formula e quindi fare riferimento alle seconde celle
  • non è necessario digitare la formula due volte
  • questo metodo distingue tra un valore zero e una cella vuota
  • non richiede VBA
  • non richiede Named Ranges

Caduta : se hai bisogno di restituire dati di testo, questo non funzionerà. Per i dati di testo il mio metodo preferito sta usando il formato numerico come indicato nelle altre risposte sopra.

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

A1 in questo caso può essere sostituito da qualsiasi cella, incluso un altro foglio, cartella di lavoro o INDIRETTO ().

Note su come funziona:
IFERROR () - il secondo argomento è impostato su stringa vuota, quindi se si verifica un errore otteniamo una stringa vuota. Quindi dobbiamo assicurarci che se la cella di origine è vuota, viene generato un errore.

Metodo numerico : stringa il valore di origine, quindi moltiplicalo per 1. Emtpy stringa letterale * 1 = #VALUE, la stringa con valore numerico viene convertita automaticamente in valore numerico e non si verificano errori.


Interessante. Perché pensi di aver bisogno "" & A1 & ""? Quando produce risultati diversi da A1 & ""o "" & A1?
G-Man dice "Ripristina Monica" il

@ G-man: corretto e preferibile. Grazie ho una risposta aggiornata.
rayzinnz,

4

C'è un altro trucco: imposta la cella vuota di soucre su formula ="". Vedi la descrizione dettagliata qui.


Questa è la soluzione perfetta per me dal momento che le celle a cui mi riferisco sono meno di quelle a cui fanno riferimento. Grazie!
Kit

2

Anch'io non ho trovato una soluzione migliore di quella di Scott.

Ma combinato con l'approccio da qui potrebbe essere quasi sopportabile, penso:

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

Diciamo che ho una formula come questa

= 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);"")

Questa formula legge il valore della cella da un foglio dati utilizzando la selezione condizionale e li presenta su un altro foglio. Non ho alcun controllo sulla formulazione delle celle nella scheda tecnica.

Vado su Inserisci> Nome> Definisci e nella sezione "Nomi nella cartella di lavoro" creo il nuovo nome "RC_P_B". Quindi nel campo "Si riferisce a" copio la mia formula (senza {} caratteri - è la formula di matrice).

Quindi puoi utilizzare la formula di Scott senza dover ripetere l'intero testo della formula:

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

Credo che sia meglio che copiare l'intera formula.


2

Semplicemente non uso una formula per superare questo problema. Tutto quello che faccio è formattare condizionalmente le celle in modo che il colore del carattere sia bianco se il valore della cella è uguale a 0.


5
Questo ha l'ovvio problema con le celle che hanno un valore 0 legittimo.
Dmitry Grigoryev,

E ha anche il rovescio della medaglia di rallentare i calcoli, specialmente per i fogli di calcolo di grandi dimensioni, poiché le formule di formattazione condizionale sono "super" volatili. (Vengono inoltre valutati ogni volta che lo schermo viene ridipinto.)
robinCTS

1

Se la cella collegata non è numerica, è possibile utilizzare un'istruzione IF con ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")

1
Ma se la cella referenziata ( Sheet1!A2, nel tuo esempio) contiene un numero, questo mostrerà una stringa nulla.
Scott,

Sì, non era chiaro dalla domanda quali siano i dati nella cella referenziata. Ho pensato che se fosse numerico avrebbe voluto gli zeri.
Brad Patton,

1

Ho cercato a lungo una soluzione elegante a questo problema.

Ho usato formula = if (a2 = "", "", a2) per anni, ma trovo che sia un po 'ingombrante.

Ho provato sopra il suggerimento = a2 & "" e anche se sembra funzionare, mostra un numero che è in realtà un testo, quindi la formattazione dei numeri non può essere applicata e nessuna operazione statistica funziona, come somma, media, mediana, ecc., Quindi se è praticabile i numeri che stai cercando non corrispondono al conto.

Ho sperimentato alcune delle altre funzioni e ho trovato quella che penso sia la soluzione più elegante fino ad oggi. Continuando l'esempio sopra:

= CELL ( "contenuti", A2)

restituisce un valore numerico che può essere formattato come numero e restituisce uno spazio vuoto quando la cella di riferimento è vuota. Per qualche ragione, questa soluzione non sembra apparire in nessuno dei suggerimenti online che ho trovato, ma lo è


1
Ho appena provato questo in Excel 2013. Quando A2è vuoto, viene visualizzato 0. Sei sicuro di non fare nulla con la formattazione?
Scott,

1

Soluzione per Excel 2010:

  1. Apri il file"
  2. Premi "Opzioni"
  3. Fai clic su "Avanzate"
  4. In "Opzioni di visualizzazione" per questo foglio di lavoro "BBBB"
  5. Deseleziona la casella "Mostra un valore zero per le celle che hanno un valore zero".

Ho detto questo nella (terza opzione di) la  mia risposta .
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


-1

Ciò che ha funzionato per me in Office 2013 è stato:

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

Dove sulla prima serie di citazioni non c'è spazio, e nel secondo insieme c'è uno spazio.

Spero che sia di aiuto


Perché hai bisogno dello spazio nella seconda serie di parentesi? Non =IF(A2="", "", A2)funziona altrettanto bene? In che modo sarebbe diverso =IF(A2<>"", A2, "")? Quindi in che modo differisce dalla risposta più votata, che è stata data più di due anni fa?
G-Man dice "Ripristina Monica" il

-1

Ho avuto un problema simile e penso di aver trovato un metodo per te. Ha risolto i miei problemi.

Se si desidera che la colonna C faccia riferimento alla colonna A e si scriva solo una formula per la cella di riferimento, è necessario utilizzarla e trascinare verso il basso la colonna.

=A1

Tuttavia, ci possono essere celle di origine nella colonna A che sono vuote e devono rimanere vuote nelle celle di riferimento nella colonna C, è possibile utilizzare questo e trascinare la colonna verso il basso.

=T(A1)

Per quanto riguarda la formattazione delle celle, il riferimento (colonna C) dovrà essere generale.


Purtroppo, questa era una domanda drive-by: l'OP è arrivato a Super User (quasi tre anni fa), ha fatto questa domanda e non è più tornato. Quindi, potremmo non conoscere mai i dettagli della sua situazione. Ma una delle funzioni principali (se non la maggiore ) di Excel è quella di scricchiolare i numeri. Se i dati di origine (colonna A, nel tuo esempio) contengono numeri, la tua risposta non riesce a popolare le celle target con i dati numerici.
Scott

Assicurati che il tuo formattazione cellulare nelle cellule contenenti la formula = T () è generale, piuttosto che di testo. Perché dove l'ho usato, mostra totalmente i numeri.
Prater

Ho controllato. È generale e sta diventando vuoto. (Excel 2013)
Scott

Il problema potrebbe essere che stai usando il 2013, la mia risposta che avrei fatto per il 2010.
Prater il

C'era una risposta (ora cancellato, si può vedere solo se il rappresentante è ≥10000), che ha riferito che questo non funziona in Excel 2010 o.
Scott,

-1

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

Spiegazione:
Per risolvere questo problema ho usato due serie di Ifcomandi.

Prima parte di comando:
ho detto la cella per visualizzare il contenuto della cella di riferimento, se la cella di riferimento conteneva dati (Excel interpreta questa come la cellula che ha un valore maggiore di 0)

Seconda parte di comando:
ho detto che come comportarsi se non ci fosse alcun dato; "" Significa lasciare in bianco

Nota: WK1 Data-sostituire w dt BGN & end 'C2 è la mia cella di riferimento.


(1) Questo verrà visualizzato vuoto anche se la cella referenziata contiene 0 o un numero negativo. La domanda vuole che la cella di collegamento sia vuota solo se la cella di riferimento è vuota . (2) Se apporti l'evidente modifica e la cambi in =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), diventa equivalente a una risposta che è già stata data circa quattro volte.
G-Man dice "Ripristina Monica" il

-1

Tutte queste soluzioni sono troppo complicate per me e mi rendo conto che questo potrebbe non essere fattibile per tutte le applicazioni, ma riempio semplicemente il campo di origine con uno spazio vuoto e ottengo uno spazio nel campo di destinazione.


1
Come si riempie una cella con uno spazio vuoto e cosa si intende per uno spazio vuoto?
fixer1234

Mi scusi, avrei dovuto dire un personaggio spaziale. In questo modo la cella non è effettivamente vuota. La cella di origine contiene uno spazio e lo spazio arriva alla copia nella cella di destinazione.
John Alonso

-1

Ho una soluzione che funziona per me:

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

Spiegazione:

""è uguale a cella vuota o vuota. Ora giro solo se. Se la cella è vuota, lo rendono vuoto, altrimenti utilizzare il riferimento di cella.


Questa è sostanzialmente la stessa della prima soluzione in superuser.com/a/515941
Arjan,

-2

Vai a Formatta celle.

Quindi selezionare formato personalizzato, e inserire le seguenti: 0;-0;;@


2
Ci può spiegare di cosa si fa? Grazie.
fixer1234,

1
Questo fa praticamente la stessa cosa come la seconda opzione di mia risposta a questa domanda ( «Impostare il formato‘Numero’delle vostre cellule legate alla‘Custom’: General;–General;.») - vale a dire (a) se il valore è un numero positivo, visualizzarne il valore assoluto intero; (b) se il valore è un numero negativo, visualizzarne il valore assoluto intero, preceduto da -; (c) se il valore è zero, non visualizzare nulla ; e (d) se il valore non è un numero, visualizzarne il valore di testo. ... (Continua)
Scott

1
(Continua) ... Tuttavia, questa versione presenta l'inconveniente (ovvero l'errore) di arrotondare i numeri non interi all'intero più vicino. ( Generalti dà il formato predefinito per i numeri, incluse le cifre decimali necessarie (ma non includendo il -segno).) Inoltre, il finale ;@sembra non essere necessario (cioè sembra essere il valore predefinito), in quanto la mia risposta visualizza correttamente i valori di testo senza modifiche.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.