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.