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

Contare valori numerici univoci

Ultimo Aggiornamento: 25/02/2018 18:11
Post: 1.813
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
22/02/2018 10:37

Buon per te.

Ricorda però, che in caso le date abbraccino più di un anno, quella formula sommerà (per esempio) i valori di tutti i gennaio...febbraio etc che incontra.

saluti



[Modificato da dodo47 22/02/2018 10:37]
Domenico
Win 10 - Excel 2016
Post: 13
Registrato il: 08/02/2018
Città: NAPOLI
Età: 62
Utente Junior
2016
OFFLINE
22/02/2018 11:35

Grazie per il suggerimento Dodo, ma conto di utilizzare un anno per ogni file, per poi comparare i dati dei vari anni in un altro foglio.

Un'ultima domanda. Secondo te posso sostituire l'intervervallo delle celle (es. A4:A3465) con il nome assegnato (es. Data) a quell'intervallo di celle tramite la gestione dei nomi?

Post: 1.816
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
22/02/2018 12:06

Sicuramente, ma se sicuro che quell'intervallo sia fisso?






[Modificato da dodo47 22/02/2018 12:06]
Domenico
Win 10 - Excel 2016
Post: 14
Registrato il: 08/02/2018
Città: NAPOLI
Età: 62
Utente Junior
2016
OFFLINE
22/02/2018 18:25

No, ovviamente per i prossimi anni avrò un intervallo di righe sicuramente diverse. Per questo ho nominato tutta la colonna a partire dalla riga 4 col termine "Data".

Pensi che funzionerà in questo modo?
Post: 1.820
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
22/02/2018 20:49

Ciao
provaci e poi me lo dici. Brutto modo quello di assegnare un nome a tutta la colonna!!

Comunque c'è un modo per rendere "dinamico" un range riferito ad un nome assegnato. Tale metodo ti permette di dichiarare il nome in modo tale che, se aggiungi righe, excel automaticamente le considera.

Es: se il tuo range è: A1...A100, quando inserisci un dato in A101, il suddetto modo di dichiarare un nome, permette di considerare nei calcoli anche la riga 101 etc etc.

Rimandami il file con la tua variazione (uso del nome nella formula) dopo averne testato il funzionamento, poi ti dirò come trasformare la dichiarazione del nome in modo che faccia quanto suddetto.

saluti
[Modificato da dodo47 23/02/2018 09:38]
Domenico
Win 10 - Excel 2016
Post: 15
Registrato il: 08/02/2018
Città: NAPOLI
Età: 62
Utente Junior
2016
OFFLINE
23/02/2018 15:06

Grazie Dodo,
appena faccio questa variazione (se funziona) ti mando il file.
Post: 5.323
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
23/02/2018 15:35

Forum permissivo
Ciao Dodo(Domenico), premetto che il mio non è nessuno appunto, ma il Forum è nato con questo principio di non considerare il "Crossposting".

E vero che questo comporta un fastidio per chi cerca di aiutare trovandosi a dare risposte che probabilmente altri avranno già risolto su altri Forum.

Per il fatto di non vietarlo, ci sono 3 motivi,

il primo che chi cerca aiuto si aggrappa ad ogni appiglio per cercarlo,

il secondo che non frequento molti altri Forum se non raramente, anche se ci sono iscritto, quindi non so se lo stesso argomento lo ha già posto su un altro forum.

ed ultimo e non meno importante, negli ultimi tempi non sono molto presente.

Scusami, Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.822
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
23/02/2018 18:24

@Sal
ciao, accetto il tuo sottolineare le regole del forum e ne prendo atto.

Purtuttavia resto del mio pensiero, in modo particolare per quanto riguarda le ultime due righe del mio post, ma questo dipende naturalmente dalla volontà di chi risponde.

Un caro saluto




Domenico
Win 10 - Excel 2016
Post: 16
Registrato il: 08/02/2018
Città: NAPOLI
Età: 62
Utente Junior
2016
OFFLINE
24/02/2018 11:49

Ancora?
Per rispondere a Sal...
intanto lo invito a leggere quanto ho già scritto in un post precedente in questa stessa discussione (che probabilmente non ha letto), in cui ho ben spiegato i motivi per cui ho cercato aiuto in questo forum.

Per ripetere il concetto:

1) Non sono mai stato iscritto ad un altro Forum riguardante Excel, per cui non posso essere tacciato di "crossposting" (termine nuovo che ho imparato grazie a te);

2) Non uso un nickname ma il mio vero nome e l'email di iscrizione al Forum, contiene il mio nome e cognome;

3) Mi sono iscritto a questo Forum pensando che aveste come finalità quelli di aiutare quelli come me, che non sono certo delle eccellenze ad usare Excel, ma che lo usano per motivi di lavoro (come me) o di studio.

Se tutto questo è contrario alle regole di questo Forum, me ne scuso sinceramente e provvederò a non dare ulteriore disturbo.

Resta fermo però il sincero e profondo ringraziamento a Dodo ed agli altri ragazzi, che con la loro disponibilità e collaborazione hanno risolto dei problemi che mi hanno fatto perdere la testa e ore di lavoro. A loro tutto il mio rispetto e riconoscenza.
Post: 5.324
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
24/02/2018 20:32

Forum permissivo
Ciao Maurizio, forse non hai compreso bene il mio messaggio, qui NON facciamo caso se posti anche su altri forum.

Comunque ho dato un occhiata ad i vari post e le formule, poi la mia curiosità ha avuto il sopravvento.

E' risaputo che con le formule non ci vado d'accordo, me la sbrigo meglio con il VBA, a questo ho creato una UDF, ma ho risultati discordanti dalle formule, vorrei capire se sbaglio io.

Per i valori unici non ci sono problemi il risultato corrisponde, quello che non corrisponde è la "Meccatronica" le formule dall'ultimo file inserito ne riporta 19 per il mese di Gennaio, mentre la mia UDF ne riporta 42, come infatti se inserisco il filtro me ne riporta 42, come pure "Gas" mi riporta 8 e non 7 come la formula.

Sbaglio a considerare qualcosa?, ti allego un immagine



se vuoi ti passo il tuo file con la mia UDF che ho chiamato "Lavori()", puoi vedere la formula applicata nella barra della formula.

Fai sapere Ciao By Sal [SM=x423051]



se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 5.327
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
25/02/2018 11:27

Forum permissivo
Ciao Maurizio, dai Post precedenti penso che il risultato sia esatto, perche volevi il totale in base alla data ed alle lavorazioni.

ho aggiornato la UDF rendendola sensibile sia al Mese che Anno, per cui si può usare indifferentemente lo stesso archivio per anni differenti, questo un esempio:



Come puoi vedere ho inserito una tabella indicando le date con Mese ed anno e di fianco la Manodopera.

visto che la stavo creando, l'ho ampliata un poco rendendola più performante in quanto ho fatto in modo che possa vedere anche altre Colonne.

Questa la sintassi della Funzione che ho chiamato "Lavori"

=Lavori(Range Dati; Data; Manodopera; Colonna)


Range Dati; Sarebbe il range da "A4:Fxxx", ho usato un nome definito per il Range Chiamandolo "DatiGen" rendendolo dinamico con "Scarto()" in questo modo puoi allungare i dati inserendoni di nuovi senza aggiornare le formule

Data; sarebbe la definizione della data che ho indicato in "01/01/2017" per gennaio 2017 e "01/01/2018" per gennaio 2018, formattando la cella in modo che si veda solo mese ed anno "gen - 17" e "gen - 18".

Manodopera; cella che riporta la stringa da ricercare

Colonna; indica la colonna in cui cercare la manodopera, solo per la Colonna "B" nella quale si cercano i valori unici, viene fatta una ricerca dei valori unici, le altre colonne fino alla "F" viene riportato il numero di volte della stringa della Manodopera.

a questo punto per inserire la funzione dobbiamo scrivere in una cella della tabella

=Lavori(DatiGen;I$12;$H13;"B")


dove "DatiGen" è l'archivio dati, "I$12" la cella della data, "$H13" la cella della Manodopera, "B" tra virgolette la colonna interessata.

nel caso che la colonna sia "B" non importa la descrizione nella Manodopera.

nota inoltre i Riferimenti assoluti e relativi per poter trascinare la funzione(Formula)

Alcune formule ho fatto riferimento ad altre colonne oltre la "E" che sarebbe "Settore" come vedi ci sono "Targhe" e "Sezione", cambiando opportunamente colonna e stringa della Manodopera, puoi fare il conteggio di tutte le voci della "Tabella Dati", "DatiGen".

La funzione va inserita in un Modulo generale e poi dimenticata, non si deve fare nient'altro.

questo il Codice della Funzione, sicuramente migliorabile:

Public Function Lavori(rrr As Range, dd As Range, kk As Range, cc As String)
Dim d, k, c, x, n, m, a, rng, ccc As New Collection

m = Month(dd)
a = Year(dd)

k = kk
cc = cc & 1
c = Range(cc).Column
rng = rrr
If c = 2 Then
    For x = 1 To UBound(rng)
        If a = Year(rng(x, 1)) And m = Month(rng(x, 1)) Then
            d = rng(x, 2)
            On Error Resume Next
            ccc.Add d, CStr(d)
            On Error GoTo 0
        End If
    Next x
    Lavori = ccc.Count
    For x = 1 To ccc.Count
        ccc.Remove 1
    Next x
Else
    For x = 1 To UBound(rng)
        If a = Year(rng(x, 1)) And m = Month(rng(x, 1)) And rng(x, c) = k Then n = n + 1
    Next x
    Lavori = n
End If
End Function


allego anche il file, fai le prove e fai sapere se va tutto bene oppure ci sono problemi.

io ho modificato dei valori nella tabella dati per vedere il funzionamento.

Ciao By Sal [SM=x423051]

[Modificato da by sal 25/02/2018 11:44]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 17
Registrato il: 08/02/2018
Città: NAPOLI
Età: 62
Utente Junior
2016
OFFLINE
25/02/2018 11:40

Ciao Sal,
mi sa allora che effettivamente non ho ben capito il senso del tuo post, comunque mi fa piacere che tu mi abbia risposto.

Venendo al mio problema, in effetti la formula che mi ha suggerito Dodo funziona alla grande per le mie esigenze. Lo step successivo è stato verificare se potessi utilizzare nella formula i "nomi" al posto di indicare l'intervallo delle celle in cui fare i controlli, per non dover poi correggere le formule nei fogli dei prossimi anni, che ovviamente non avranno lo stesso numero di righe. Prova che ho fatto e che mi ha dato risultato positivo, tranne per l'intervallo successivo al CONFRONTA, dove il risultato finale diventa uno 0.

A questo punto per essere veramente chiaro, vi passo l'intero file perchè credo che le spiegazioni che vi do, non sono sempre chiarissime e forse vedendo l'intera struttura del file, per voi sarà più facile comprendere le mie esigenze.

Non massacratemi troppo per eventuali "asinate", mi raccomando [SM=g27823]
[Modificato da Maurizio05 25/02/2018 13:35]
Post: 1.823
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
25/02/2018 13:45

Ciao

1) quanto detto da @Sal non era diretto a te, quindi tranquillo.

Ti allego il tuo file nel quale sono stati inseriti due nomi: ColDate e ColDeal, entrambe riportate nelle formule della riga 7 di Riep_generale.

I nomi, in realta sono due formule che permettono di aggiungere dati senza variare le formule in Riep_generale.

Fai ovviamente le tue prove.

Premesso ciò, ti invito a seguire i suggerimenti di @Sal, poichè in quel modo il foglio risulta di gran lunga meno appesantito.

saluti




Domenico
Win 10 - Excel 2016
Post: 5.328
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
25/02/2018 18:11

Forum permissivo
Ciao Domenico, lo sai io non ce l'ho con te e solo come hai detto ognuno ha le sue idee.

Anche io ho fatto il Crossposting per delle Formule, mi servivano per un aiuto urgente ad un altra persona che era in difficoltà, non sai come mi è sembrato brutto vedermi chiudere il post, ma lasciamo stare, sono cose passate.

Ho contattato Maurizio per chat ed ho compreso che la mia funzione non dava i risultati giusti come voleva lui, non perche non funzionava a dovere, anzi i risultati erano giusti.

Ma Maurizio voleva anche che per ogni voce univoca ci fosse anche un solo risultato di voci multiple della colonna "Settore", ecco perche i miei risultati erano dissimili dalle tue Formule, e chiedevo verifica del risultato.

per cui ho aggiornato la Funzione in modo che funzionasse in tal senso, se possa servire a qualcuno.

L'ho nominata intelligentemente "Lavori2"

Public Function Lavori2(rrr As Range, dd As Range, kk As Range, cc As String)
Dim d, k, c, x, y, n, m, a, rng, ccc As New Collection

m = Month(dd)
a = Year(dd)

k = kk
cc = cc & 1
c = Range(cc).Column
rng = rrr
For x = 1 To UBound(rng)
    If a = Year(rng(x, 1)) And m = Month(rng(x, 1)) Then
        d = rng(x, 2)
        On Error Resume Next
        ccc.Add d, CStr(d)
        On Error GoTo 0
    End If
Next x
n = 0
For x = 1 To ccc.Count
    For y = 1 To UBound(rng)
        If a = Year(rng(y, 1)) And m = Month(rng(y, 1)) And rng(y, c) = k And rng(y, 2) = ccc(x) Then n = n + 1: Exit For
    Next y
Next x
If c = 2 Then Lavori2 = ccc.Count Else Lavori2 = n
For x = 1 To ccc.Count
    ccc.Remove 1
Next x
End Function 


non è cambiato il modo di applicarla ha lo stesso metodo.

Ciao By Sal [SM=x423051]



[Modificato da by sal 25/02/2018 18:17]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota: 15MediaObject5,00244 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 02:33. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com