Utilizzo dell'istruzione IF e ISBLANK per determinare un intervallo di celle se una di esse contiene informazioni


10

Ho una formula in cui sto controllando un intervallo di celle indipendentemente dal fatto che siano vuote.

Se tutti sono vuoti, voglio restituire un altro vuoto.

Se una delle celle dell'intervallo non è vuota, desidero restituire un valore Major Milestone Due.

Ecco la formula che ho attualmente:

=IF(ISBLANK(BM2:BQ2),"","Major Milestone Due")

Restituisce tutto come Major Milestone Due, anche se ci sono determinati intervalli di righe con tutte le celle vuote.

Risposte:


16

COUNTAfornirà il numero di celle in un intervallo che non sono vuote .

Allora prova ...

 =IF(NOT(COUNTA(BM2:BQ2)),"","Major Milestone Due")

La formula di base: NOT (COUNTA (BM2: BQ2)) è applicabile con un operatore più logico, come: AND (COUNTA (BN2), NOT (COUNTA (BM2: BQ2)))
Rhak Kahr

9

La formula è corretta se viene immessa come formula di matrice .

Il isblanknon funziona per un allineamento a meno che non si immette come una formula di matrice utilizzando ctrl+ shift+ enter. Sembrerà così avendo delle parentesi graffe attorno:

{=IF(ISBLANK(BM2:BQ2),"","Major Milestone Due")}

Inoltre, un if - counta farà questo senza problemi -

=IF(COUNTA(BM2:BQ2)=0,"","Major Milestone Due")


La formula dell'array non è del tutto corretta. Questa versione andrà da TRUEa solo FALSEse la prima cella dell'intervallo contiene un valore. Per controllare correttamente tutte le celle dell'intervallo, è ANDnecessario aggiungere -{=IF(AND(ISBLANK(BM2:BQ2)),"","Major Milestone Due")}
Marcus Hughes,

@MarcusHughes perché dovrebbe essere? È una formula di array e funziona sull'intero array
Raystafarian,

Non so esattamente perché , ma l'ho testato (Excel 2010) e non funziona solo con ISBLANK. Prova a inserire quella formula, mantieni vuota la prima cella nell'intervallo, quindi inserisci i dati in una cella successiva nell'intervallo .... La ISBLANKcondizione tornerà comunque TRUE. Solo se inserisci i dati nella prima cella, verranno restituiti FALSEcorrettamente. Ora prova ad aggiungere AND. Se una cella nell'intervallo riceve dati, verrà restituita FALSEcome dovrebbe. (Suppongo che questo non sia solo uno strano colpo di fortuna con il 2010.)
Marcus Hughes,

2

Una cosa importante da considerare è la tua definizione di "vuoto". Sulla base del fatto che hai usato la dicitura "Voglio restituire un altro vuoto", sembrerebbe che tu stia definendo "vuoto" come celle che appaiono vuote, ma che potrebbero effettivamente contenere una formula che genera ""e quindi non sono vuote .

I metodi COUNTAe ISBLANKnon funzioneranno se si desidera gestire questo tipo di celle come spazi vuoti, poiché queste due formule cercano celle veramente vuote . Per gestire le formule che producono "", hai due opzioni:


  • Se conosci sempre le dimensioni del tuo intervallo, puoi utilizzare una delle seguenti opzioni:

    =IF( COUNTBLANK(BM2:BQ2)=5, "", "Major Milestone Due")
    =IF( COUNTIF(BM2:BQ2,"")=5, "", "Major Milestone Due")

    dove 5 è il valore del tuo intervallo. Questo metodo non funziona anche con intervalli dinamici.


  • Una formula leggermente più complessa (almeno, più complessa da spiegare!) Utilizza SUMPRODUCT:

    =IF( SUMPRODUCT(--(BM2:BQ2<>""))=0, "", "Major Milestone Due")


(Nota che COUNTIF(BM2:BQ2,"<>")ha lo stesso problema di COUNTA.)


-1

Sono arrivato a questa pagina in cerca della risposta a una domanda quasi identica.

Quando ho visto che è COUNTAstato menzionato, ho capito quasi immediatamente cosa fare. In un contesto leggermente diverso, ho un intervallo di colonne a sinistra di una colonna che voglio dire not startedse tutte le celle nella stessa riga sono vuote (vuote).

La seguente formula funziona per me.

=IF(COUNTA(P3:U3)=0,"Not Started"...)

I puntini di sospensione indicano che ci sono diverse IFfunzioni aggiuntive nella mia formula, che esegue ulteriori test sull'intervallo se ne vengono popolate una o più.


Benvenuto in Super User. Ho notato che la tua risposta ha attirato un voto negativo. Il probabile motivo è che cerchiamo di evitare la duplicazione. Ogni risposta ha lo scopo di fornire una soluzione sostanzialmente diversa da quella già fornita. Questo essenzialmente duplica la seconda parte della risposta di Raystafarian.
fixer1234,

La mia risposta avrebbe dovuto essere espressa come commento.
David A. Gray,
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.