Excel Range Count all'interno di una cella


2

Sto cercando di confrontare la quantità e il numero di voci in un foglio di calcolo Excel.

Per esempio,

QTY RefDes      # of Entries    QTY Match RefDes?
3   R1,R5,R22   3               MATCH
3   C1,C2,C3    3               MATCH
3   U1-U3       1               MISMATCH
4   U1-U3, U5   2               MISMATCH

Usando =LEN(TRIM(B2))-LEN(SUBSTITUTE(TRIM(B2),",",""))+1per la colonna elencata # di voci, posso facilmente confrontare la QTY elencata con ReDes quando i valori sono separati da virgole come in R1, R5, R22.

(QTY Match RefDes? Sta semplicemente confrontando se la colonna QTY corrisponde alla colonna N. di voci.)

Tuttavia, ho anche casi in cui U1-U3 indicherebbe un intervallo da U1 a U3 o U1, U2, U3. La quantità effettiva è 3, ma la formula sopra restituisce un valore di 1 perché non esiste una separazione virgola. Come posso spiegare questo caso?


1
Molto probabilmente questo richiederà vba.
Scott Craner,

Immagino che sarebbe meglio convertire U1-U3 in U1, U2, U3?
Dave,

C'è un modo semplice per convertire U1-U3 in U1, U2, U3?
nachan84,

1
Una volta, usa VBA. Andando avanti, utilizzare la convalida dei dati per forzare le voci in formato virgola
Selkie

Risposte:


1

Questo può essere fatto con una formula, ma c'è un avvertimento.

Excel ha una pratica funzione chiamata EVALUATE (), che valuta le stringhe di testo come equazioni e produce un risultato numerico. L'avvertimento ha a che fare con le restrizioni su come può essere usato.

Immaginavo che i tuoi intervalli nella colonna U potessero avere qualsiasi dimensione, quindi un buon modo per ottenere il conteggio sarebbe fare la sottrazione. cioè per U1-U3, estrai "1-3" e fai i conti. Questa formula consente di:

 =IFERROR(ABS(EVALUATE((REPLACE(MID(B2,FIND("-",B2)-1,4),3,1,"")))),0)

Usando B5 come esempio, la porzione MID () ottiene caratteri su entrambi i lati di "-" e fornisce 1-U3. REPLACE () rimuove la U e EVALUATE () esegue la sottrazione, dando -2. ABS () dà 2 e IFERROR () gestisce le righe senza intervallo U. Ecco i dati con l'equazione sopra nella colonna E e la somma di questa colonna più l'equazione sopra nella colonna F:

inserisci qui la descrizione dell'immagine

Ora riguardo l'avvertimento. Per qualsiasi motivo, EVALUATE () è disponibile SOLO se viene utilizzato nella definizione di un intervallo denominato. Quindi, per usare l'equazione sopra, fai clic su qualsiasi cella, dai un nome alla cella (ho usato "Funk" qui) e incolla l'equazione nella casella "Si riferisce a:".

inserisci qui la descrizione dell'immagine

Ora il nome può essere usato come una funzione. Digita "= Funk" (senza virgolette) in E2 e compila.

Se non puoi avere la colonna helper, puoi combinare le due equazioni nella definizione del nome. Ma ti avvertirò che le formule per la risoluzione dei problemi nella scatoletta sono una PITA. È un peccato che questa funzione non sia disponibile senza saltare attraverso questi cerchi.

Spero che questo possa essere d'aiuto.


Per qualsiasi motivo, EVALUATE () è disponibile SOLO se viene utilizzato nella definizione di un intervallo denominato. A rigor di termini, non è una funzione di Excel. In realtà è una funzione Macro di Excel 4.0 (nota anche come XLM4). Pertanto, ad esempio, non può essere archiviato in un file .xlsx. Altre macro XLM4 possono essere utilizzate anche con questo stesso metodo di "Nome definito"
Ron Rosenfeld,

Sì, grazie per averlo sottolineato. Avrei potuto fare un lavoro migliore nel spiegarlo, immagino. Vedo questi XLM4 come dinosauri che non sono ancora morti. Ma penso ancora che questa sarebbe una funzione "reale" utile da avere in Excel. Ho visto due domande qui nell'ultima settimana che potrebbero essere gestite con EVALUATE ().
Bandersnatch,

1
Chissà come gli Stati membri prendono le loro decisioni su questo tipo di problemi. Non trattengo il respiro :-), soprattutto perché è anche una funzione VBA.
Ron Rosenfeld,
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.