Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Conta valori univoci in base a valore ripetuto in altra colonna

Ultimo Aggiornamento: 26/09/2017 08:23
Post: 12
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
22/09/2017 21:55

Ciao a tutti,

Avrei da contare i valori univoci (numeri e testo) nella colonna E con anche celle vuote. Questo SE nelle celle della colonna A è presente o meno un dato testo.

Per i valori univoci ero arrivato a questa formula, ma non saprei come inserire la condizione.

=MATR.SOMMA.PRODOTTO((E2:E7000<>"")/CONTA.SE(E2:E7000;E2E7000&""))


Grazie
[Modificato da BioEnergy 22/09/2017 22:00]
Post: 136
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Junior
2016
OFFLINE
22/09/2017 22:30

Buonasera
allega un file con u po di dati e il risultato da ottenere scritto a mano
Post: 12
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
22/09/2017 23:32

Grazie dell'interessamento. Allego un estratto che dovrebbe essere esplicativo della formula che necessito.

Post: 785
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
23/09/2017 15:24

Ciao.
in C2 foglio categorie:
formula matriciale:

=SOMMA(SE(A2=Dati!$A$2:$A$5000;1/CONTA.PIÙ.SE(Dati!$A$2:$A$5000;A2;Dati!$B$2:$B$5000;Dati!$B$2:$B$5000)))

xam
[Modificato da xam99 23/09/2017 15:25]
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 13
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
23/09/2017 16:10

Grazie Xam99,
ho provato a inserire la formula in C2, ma restituisce il valore 1 invece di 3
Post: 786
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
23/09/2017 16:51

Ciao,
è una formula matriciale da inserire con la combinazione di tasti:
CTRL+SHIFT+ENTER (INVIO)
xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 94
Registrato il: 11/07/2015
Età: 33
Utente Junior
office 2013-2016
OFFLINE
23/09/2017 17:33


Buona sera

una alternativa

c2=SOMMA(SE(FREQUENZA(SE(Dati!$A$2:$A$7000<>"";CONFRONTA(Dati!$A$2:$A$7000;Dati!$A$2:$A$7000;0));RIF.RIGA(Dati!$A$2:$A$7000)-RIF.RIGA(Dati!$A$2)+1);1))

control+shift+enter


[Modificato da Ulisse1990 23/09/2017 17:36]
Post: 14
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
23/09/2017 18:34

Ok, adesso funziona... Grazie [SM=x423024]
Ho provato ad adattarla al documento originale, 2 note:
- in 2 colonne (su 5) talvolta mi restituisce errore #DIV/0; però ho visto che mi dà l'errore anche se per data categoria le celle non sono tutte vuote
- tra poco mi si fonde il PC ed excel è impallato a calcolare; in effetti le categorie sono più di 80 ed i record per colonna oltre 40.000
Mi sa che conviene usare una macro avviandola ogni tot per aggiornare i valori, ma inizia a diventare complicato; in base all'excel che ho sarebbe:

se nella colonna A in 'Categorie!' da A2 in giù (fino a cella con valore, ovvero la categoria), nelle celle D2, E2, G2, H2, I2 aggiornare il calcolo di cui sopra in riferimento alla colonna A in 'Dati!' da A2 in giù (fino a cella con valore, ovvero dove ci sono le categorie ripetute) e colonne D,E,G,H,I sempre in 'Dati!' (dove ci sono le celle non vuote da contare univoche).
Nel caso allego l'excel con i riferimenti completi e casi con celle tutte vuote, numeri o testo.

Mi sparo... [SM=x423030]




[Modificato da BioEnergy 23/09/2017 20:08]
Post: 787
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 08:29

Ciao
per un macro che faccia come la formula matriciale deve intervenire
un mago delle macro.
Un saluto.
xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 3.955
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
24/09/2017 11:57

ci potrei provare, ma non ho capito bene qual'è il risultato desiderato, lo puoi allegare ?

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 15
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 13:48

Ciao Patel45,
nel mio post sopra ho allegato l'excel originale con i riferimenti delle celle in base a quanto ho scritto per la macro; per ogni colonna di interesse (D2,E2,G2,H2,I29) nel foglio Dati! ho messo varie combinazioni di valori e nelle rispettive nel foglio Categorie! ci sono i risultati in rosso attesi.

Grazie xam99,
non avevo calcolato tutto questo calcolo necessario. In fondo Excel la scrematura dei duplicati la fa in un attimo anche con tanti record; qui in fondo si tratta di contare i risultati univoci che si presentano se nella cella in A c'è un dato valore. Non so se sbaglio io per il #DIV/0, ma compare anche in alcune prove con il nuovo excel.
Per la macro adesso provo a ricercare, di certo non sarò in grado di modificarla per adattarla a tutte le celle e colonne.

Grazie Ulisse1990,
il risultato veniva giusto in C2, però non riesco a capire come spostarla (con xam99 vedo chiaramente il riferimenti alla cella A2 e colonna B)
Post: 3.956
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
24/09/2017 14:09

nel foglio dati non capisco i risultati della colonna D

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 16
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 15:05

Re:
patel45, 9/24/2017 2:09 PM:

nel foglio dati non capisco i risultati della colonna D



Se ho capito, nel foglio Dati!:
- per la catetoria1 i valori univoci nella colonna D sono A (che si ripete) e B, quindi 2
- per la catetoria2 nella colonna D c'è solo A che si ripete, quindi 1
- per la catetoria3 nella colonna D ci sono A, B e C, quindi 3

In pratica è un elenco di contatti, in queste 4 colonne da cui vorrei contare gli univoci c'è di tutto: numeri, testo, solo celle vuote, ecc; talvolta i valori si ripetono nella colonna.
La formula dovrebbe considerare le celle non vuote e restituire la conta degli univochi sulla base della categoria; quella di xam99 è il punto di partenza, non so se è omnicomprensiva di tutte le situazioni o c'è una soluzione con meno dispendio di calcolo.

La macro finchè trova un valore nella colonna A nel foglio Categorie! (da A2), dovrebbe restituire i risultati dalle celle D2,E2,G2,H2, in giù andando a ricercare nelle rispettive colonne del foglio Dati! sempre fino all'ultima riga con valore.
In tal modo se per caso aggiungessi una categoria non dovrei preoccuparmi di inserire formule; stessa cosa per gli intervalli nel caso di nuovi recordi.




Post: 17
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 17:23

Macro permettendo, ho trovato ed adattato al foglio la seguente matriciale che mi riporta i valori corretti e sembra non intasarmi la CPU; in D2 e si trascina sotto e a destra:

=SOMMA(SE(FREQUENZA(SE((Dati!$A$2:$A$50000=$A2);CONFRONTA(Dati!D$2:D$50000;Dati!D$2:D$50000;0);"");SE((Dati!$A$2:$A$50000=$A2);CONFRONTA(Dati!D$2:D$50000;Dati!D$2:D$50000;0);""))>0;1))

L'unico (spero) problema è che non contempla le celle vuote, dove presenti mi restituisce errore di valore non disponibile #N/D.
Post: 788
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 17:28

Ciao
per visualizzare errore #N/D si può provare questa formula:

=se(val.errore( TUA FORMULA );0; TUA FORMULA )

sostituisci la parte TUA FORMULA con la tua formula.
xam
[Modificato da xam99 24/09/2017 17:29]
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 18
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 18:01

Ciao,
fatto. Non cambia nulla nei risultati che già venivano calcolati; dove invece compariva l'errore ora compare sempre 0. C'è da gestire l'errore a monte con le celle vuote credo. Tipo &"" o <>"" da qualche parte per l'intervallo nella colonna D.
[Modificato da BioEnergy 24/09/2017 18:06]
Post: 789
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 18:56

Ops
è questa:

=se(val.errore( TUA FORMULA );""; TUA FORMULA )

xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 19
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 19:14

Provato. Adesso le celle incriminate sono 'vuote'.
Post: 790
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 19:22

Naturalmente dentro alle virgolette:

=se(val.errore( TUA FORMULA );" ciao ciao "; TUA FORMULA )

puoi mettere quello che vuoi.
xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 20
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 19:36

Sì, ma io devo calcolare gli univoci. L'errore mi viene perchè ci sono celle vuote nell'intervallo (ma ci sono anche valori) e la formula non le contempla.

Stavo appunto leggendo online in casi simili come hanno gestito le celle vuote, tipo un'ulteriore condizione con <>"":

=SOMMA(--(FREQUENZA(SE(B3:B10<>"";SE(C3:C10=G3;CONFRONTA(B3:B10;B3:B10;0)));RIF.RIGA(B3:B10)-RIF.RIGA(B3)+1)>0))
Post: 791
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 20:24

In caso di errori per celle vuote nel file allegato ci sono queste 2 formule:

=SE(( TUA FORMULA )<>0; TUA FORMULA ;"")

=SE(VAL.ERRORE( TUA FORMULA );""; TUA FORMULA )

e con celle vuote funziona tutto.
xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 22
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
24/09/2017 20:44

Grazie xam99,
dovrei avere trovato in contemporanea quella finale sull'esempio appena sopra senza passaggi; in D2 (ctrl+shift+invio) e si trascina sotto e a destra:

=SOMMA(--(FREQUENZA(SE(Dati!D$2:D$50000<>"";SE(Dati!$A$2:$A$50000=$A2;CONFRONTA(Dati!D$2:D$50000;Dati!D$2:D$50000;0)));RIF.RIGA(Dati!D$2:D$50000)-RIF.RIGA(D$2)+1)>0))

La macro è oltre le mie possibilità, ma è già un passo avanti. [SM=g27828]
Post: 792
Registrato il: 18/02/2010
Città: MILANO
Età: 28
Utente Senior
excel 2003 / 2007
OFFLINE
24/09/2017 21:50

Ciao per la macro qui ci soo dei maghi.
xam
-------------------------------
excel 2003 ufficio / 2007 casa
Post: 3.957
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
25/09/2017 18:07

prova questa
Sub B()
With Sheets("Dati")
  LR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
  For col = 2 To 11
    conta = 0
    dr = 2
    buffer = ""
    cat = .Cells(1, 1)
    valore = .Cells(1, col)
      For RIGA = 2 To LR
        If .Cells(RIGA, 1) = cat Then
          If .Cells(RIGA, col) <> valore And .Cells(RIGA, col) <> "" Then
            If InStr(buffer, .Cells(RIGA, col)) = 0 Then
              buffer = buffer & .Cells(RIGA, col)
              conta = conta + 1
              valore = .Cells(RIGA, col)
            End If
          End If
        Else
          Sheets("Categorie").Cells(dr, 1) = .Cells(RIGA, 1)
          If dr > 2 Then Sheets("Categorie").Cells(dr - 1, col) = conta
          dr = dr + 1
          cat = .Cells(RIGA, 1)
          valore = .Cells(RIGA, col)
                If valore <> "" Then conta = 1 Else conta = 0
        End If
      Next
'      Stop
  Next
End With
End Sub

[Modificato da patel45 25/09/2017 20:14]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 23
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
25/09/2017 20:37

Grazie patel45,
se ho ben capito posso dirti fin da subito che non è possibile avere valori uguali e consecutivi per tutte le colonne: un contatto potrebbe comparire in più province ad esempio, ma anche ordinare per stesse categorie in A porta ad avere alcune info di indirizzo che si ripetono ogni categoria.
Intanto la copio per i riferimenti delle celle
Post: 24
Registrato il: 12/08/2015
Utente Junior
2013
OFFLINE
25/09/2017 21:56

Inserita nel foglio dopo aver visto che hai tolto il riferimento ai valori uguali consecutivi e... Funziona!!! [SM=g27811] Sopratutto ci mette un attimo anche se opera su tutte le colonne (meglio così).
Ma c'è una così alta differenza in prestazioni tra macro e formule o è l'approccio usato per il calcolo?
Comunque grazie! [SM=x423017]
Post: 3.958
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
26/09/2017 08:23

con le macro si può fare tutto, basta trovare la giusta strategia ed in questo caso ho dovuto faticare, lo si vede dalla struttura piuttosto contorta. Con le formule si possono fare cose semplici e questo caso non lo è.

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 23:13. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com