Come ottenere un elenco de-duplicato di etichette di riga e i relativi valori sommati in Excel 2010


2

Ho un foglio Excel con più righe in questo formato:

Column A|Column B
label   | value
--------|--------

header (merged cells)
labelA  |12
labelB  |5
labelC  |9

header (merged cells)
labelA  |13
labelD  |8

È fondamentalmente un elenco di etichette e valori suddivisi in più sezioni diverse. In realtà ci sono 70-80 etichette e tutte le etichette vengono utilizzate 5-10 volte. Devo creare un output su un foglio separato nel seguente formato:

Column A|Column B
label   | Total sum
--------|----------
labelA  |25
labelB  |5
labelC  |9
labelD  |8

Idealmente, il primo foglio può essere aggiornato in modo dinamico, con nuove etichette che si riflettono immediatamente nel secondo foglio.

Sono sicuro di poter creare una macro per raggiungere questo obiettivo, tuttavia non voglio aggiungere macro se non è necessario. I dati non sono attualmente in una tabella pivot. C'è un modo per ottenere questo risultato senza quelle soluzioni?

Risposte:


4

È possibile ottenere facilmente la somma per le diverse etichette utilizzando una SUMIFformula. Supponendo che le etichette siano nella colonna A del foglio di output, con la prima etichetta nella riga 2, la formula per B2dovrebbe essere:

=SUMIF(SourceSheet!$A:$A,$A1,SourceSheet!$B:$B)

- estendersi secondo necessità. Ottenere tutte le etichette automaticamente è leggermente più complicato in quanto è necessario de-duplicarle. La seguente formula di matrice lo farà per le etichette nelle righe da 1 a 100 del foglio di origine (regolare l'ambito come necessario, sostituendolo SourceSheetcon il nome del foglio corretto):

=IFERROR(
   INDEX(SourceSheet!$A1:$A100,
     SMALL(
       IFERROR(
         IF(
           MATCH(SourceSheet!$A1:$A100,SourceSheet!$A1:$A100,0)<ROW(),
           "",
           MATCH(SourceSheet!$A1:$A100,SourceSheet!$A1:$A100,0)
         ),
       ""),
     ROW())
   ),
 "")

Nota che questo appartiene a una singola riga in Excel (ho indentato la formula qui per renderla un po 'più leggibile) e che per farlo funzionare, devi salvarla come formula di matrice (seleziona l'intero intervallo che desideri i tuoi risultati in, inserisci la formula nella barra della formula - non nella cella! - e salvala con Ctrl+Shift+Enter).

Se la formula è stata inserita correttamente, iniziando con valori come questi:

Schermata del foglio di origine

restituirà questi risultati:

Schermata del foglio di destinazione

Come puoi vedere, questo restituirà anche le righe di intestazione del foglio di origine. Probabilmente possono essere filtrati, ma senza dettagli sul loro esatto contenuto, non posso dirti come.


Bene, è semplicemente fantastico. È un peccato che abbia appena finito una grande macro ole, ma la sto salvando per dopo. Speriamo che i futuri Googler si imbattano in questo!
Pietra per affilare,

@Whetstone: ecco cosa chiede Ask Different :).
kopischke,

2

La cosa migliore che puoi fare è ruotarla e una volta aggiunti nuovi dati, aggiorna la tabella. Se davvero non ti piacciono i perni, puoi usare sumif o sumproduct . Prima di creare la formula, imposta intervalli di nomi per le tue colonne. Sarà più facile quando crei la formula in un altro foglio.

=sumif(ColumnA, "labelA", ColumnB)

ColumnA e ColumnB saranno i nomi dei tuoi intervalli. È solo un esempio

=sumproduct((ColumnA="labelA")*(ColumnB))

Per quanto riguarda le nuove etichette, è possibile aggiungerle manualmente nel secondo foglio. Non so come aggiungerli automaticamente se non si crea una macro. Spero che aiuti. :)


1

Puoi iniziare con la sumiffunzione. Per sommare tutto per labelA, usa questa funzione:

=sumif(Sheet1!A1:A9999, "labelA", Sheet1!B2:B9999)

Dovresti aggiungere una funzione manualmente per ogni nuova etichetta. Non sono sicuro di come aggiungere automaticamente un totale per una nuova etichetta.


Dopo aver indagato per circa un'ora, non sono riuscito a trovare nulla e ora sono in vita a creare una macro. Non è la soluzione ideale nei miei libri, ma le scadenze sono scadenze. Grazie per l'aiuto!
Pietra per affilare,

@Whetstone: per una soluzione formulaica vedi la mia risposta (ci è voluto un po 'di tempo per testare e scrivere).
kopischke,

Questa è solo una mezza risposta. Vedi la mia soluzione per l'altra metà :).
kopischke,
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.