2013-08-09 4 views
7

Recentemente ho appreso che Excel's Find function restituisce un errore #VALORE quando non trova l'ago nel pagliaio (cioè non viene trovata alcuna corrispondenza). Ho diverse domande su questo comportamento:Funzione di ricerca di Excel; Eccezioni rispetto ai valori

  1. Esiste un'altra funzione di Excel che funziona come Trova ma restituisce un valore effettivo (ad esempio -1) quando non viene trovata alcuna corrispondenza?
  2. C'è qualche motivo ben noto per la funzione che ha quel comportamento? Voglio dire, parlando di programmazione generale e progettazione di software, esiste un modello noto (o metodologia, o filosofia di progettazione) che preferisce lanciare eccezioni su valori di ritorno (come -1, 0, "" o simili) quando una funzione non ritorna un valore "valido"?
+0

Mi piacerebbe molto sentire la risposta alla seconda parte di questa domanda. Questo tipo di comportamento porta a tutti i tipi di frustrazione e soluzioni alternative –

risposta

14

La funzione Trova cerca una corrispondenza tra maiuscole e minuscole, e può essere testato con ISNUMBER, come:

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),"No exact match") 

C'è una simile funzione chiamata ricerca che fa la stessa cosa, ma non è che tiene conto del maiuscolo o minuscolo. Restituisce anche un errore se non viene trovata alcuna corrispondenza.

Quindi, se siete alla ricerca di qualcosa e si desidera tornare -1 se non c'è partita e non si è preoccupato di essere case sensitive, quindi qualcosa di simile dovrebbe funzionare per voi:

=IF(COUNTIF(A1,"*abc*")=0,-1,SEARCH("abc",A1)) 

Per il caso ricerche sensibili, sarebbe:

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),-1) 

Se siete in Excel 2007 o versioni successive, è possibile saltare la verifica degli errori utilizzando IFERROR:

=IFERROR(SEARCH("abc",A1),-1) 
=IFERROR(FIND("abc",A1),-1) 
+0

Questa dovrebbe essere contrassegnata come risposta corretta in quanto risolve il problema dell'OP. –