Utilizzare SINISTRA nel parametro sum_range della funzione SUMIF (Excel)


0

Ho un sacco di colonne una sopra l'altra, in questo modo:

Cells on top of each other

Mi piacerebbe trovare tutte le celle in questo intervallo che iniziano con 1ae quindi riassumere ciò che segue. Quindi, in questo esempio, troviamo 1a10 e 1a20, quindi il nostro risultato sarebbe 10 + 20, o 30.

La cosa difficile è che dopo il a, potrebbe essercene uno o due cifre, e vorrei anche estenderlo per lavorare con numeri a due cifre prima del a anche. Quindi potremmo avere:

1a10 1a1 11a1 11a10

Ho provato a sperimentare ciò che ho imparato SUMIF, SUMIFS e SEARCH, ma mentre sono stato in grado (in una certa misura) di individuare quali celle selezionare, interrompendone l'avvio, specialmente quando la lunghezza della fine e la partenza possono variare, mi ha lasciato un guazzabuglio di accatastati IF dichiarazioni e una formula non funzionale.

Purtroppo, non posso usare macro e la mia scuola è solo fino a Excel 2013, ma spero che sia ancora possibile.

Grazie.


1
La tua domanda è molto chiara. "Mi piacerebbe anche espanderlo per lavorare con numeri a due cifre prima del" a "quindi hai bisogno di cercare iniziando con 1a o contenente 1a?
— Máté Juhász

Risposte:


3

Puoi farlo con una formula di array

=SUM((LEFT($A$2:$A$8,2)="1a")*(IF(ISNUMBER(--RIGHT($A$2:$A$8,LEN($A$2:$A$8)-2)),RIGHT($A$2:$A$8,LEN($A$2:$A$8)-2),0)))

Perché questa è una formula di array che devi usare Controllo + Cambio + accedere invece di solo accedere .

Inoltre, poiché è una formula di matrice, si desidera evitare riferimenti a colonne complete come A:A

Saprai di averlo inserito correttamente quando vedi {} attorno alla tua formula. Nota che il {} non può essere aggiunto manualmente.

POC

AGGIORNARE

Se si desidera rendere la formula un po 'più robusta per gestire stringhe di ricerca più lunghe come 22a e consentire di utilizzare una cella per la stringa ID che si desidera sommare, è possibile utilizzare la seguente formula.

=SUM((LEFT($A$1:$A$8,LEN(TRIM(C2)))=C2)*(IF(ISNUMBER(--RIGHT($A$1:$A$8,LEN($A$1:$A$8)-LEN(C2))),RIGHT($A$1:$A$8,LEN($A$1:$A$8)-LEN(C2)),0)))

Si noti che questa è ancora una formula di matrice. Anche l'intervallo è stato aumentato per includere il valore dei dati di una singola cifra dopo la chiave che stai cercando.

POC2

aggiornamento minore, cambiato il -RIGHT a --RIGHT... ma a quanto pare il - potrebbe non essere nemmeno necessario.


Funziona perfettamente; esattamente quello di cui avevo bisogno, e funziona perfettamente con qualsiasi lunghezza di ID o numero! Sono sorpreso di come sei riuscito a rendere la formula così compatta, soprattutto quando si tratta di qualcosa di così complicato.
— Geza Kerecsenyi

0

Non voglio fare il tuo lavoro per te, ma posso darti alcuni suggerimenti ...

Ci sono modi in cui puoi farlo con una o due formule lunghe e lunghe, ma puoi suddividerle in più formule in colonne separate per renderne più semplice la comprensione. Ad esempio, in B1 è possibile utilizzare

=IF(LEFT(A2,2)="1a",1,0)) Ciò restituirà un 1 per le tue celle che iniziano con "1a" e uno 0 per quelle che non lo fanno.

In C1, puoi usare

=LEN(A2) Ciò restituirà il numero di caratteri in A2.

Da lì, iniziare a scrivere istruzioni IF con le formule (pseudo codice sotto, non le formule effettive).

"If A2=1 AND C1=4, return RIGHT(A2,2)"

"If A2=1 AND C1=3, return RIGHT(A2,1)"

Tutto quello che sto facendo è impostare il foglio per ottenere il "10" da 1a10 nella sua colonna. Puoi quindi fare qualsiasi algebra che desideri sui numeri risultanti.


E come li riassumerei? Avrei bisogno di una struttura tridimensionale dato che ho 20 numeri diversi prima del a, che sarebbe una struttura di colonne helper molto complicata ...
— Geza Kerecsenyi

"Non voglio fare il tuo lavoro per te, ma posso darti dei suggerimenti" questo tipo di suggerimento non si adatta bene a questo sito. Se davvero non vuoi fornire una soluzione, scrivi solo un commento. Se scrivi una risposta, scrivila bene, ora hai dedicato più tempo a suggerire che a scrivere la soluzione. Scrivere una formula non è "fare il lavoro degli altri"
— Máté Juhász

@ Máté Juhász - Grazie per i suggerimenti, sono ancora nuovo sul sito. Non avevo abbastanza reputazione per pubblicare commenti quando inserisco il mio post originale. Il mio approccio all'OP era essenzialmente quello di fare ciascuno dei calcoli / formule richiesti come una colonna separata per rendere la logica più facile da seguire rispetto alle formule della matrice su riga singola sopra.
— user2800

@ Geza Kerecsenyi Dato il tuo commento sopra, allora sì, le altre risposte funzioneranno molto meglio della mia.
— user2800

0

Ecco un altro approccio con SUBSTITUTE:

=SUM(IFERROR(SUBSTITUTE(A1:A7,C1,"")*1,0))

Come funziona:

  • =SUM(IFERROR(SUBSTITUTE(A1:A7,C1,"")*1,0))
  • SUBSTITUTE(A1:A7,C1,"") - rimuove 1a da tutte le righe
  • SUBSTITUTE(...)*1 - converte le voci in numero ove possibile (solo le righe dove 1a è stato rimosso in precedenza), altri generano errori
  • IFERROR(...,0) - converte gli errori in 0

Anche questa è una formula di matrice, quindi è necessario premere CTRL + MAIUSC + INVIO dopo averlo digitato.

enter image description here

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.