Risolto Cerca condizione con dato duplicato nelle righe

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
Vale92tina @Vale92tina

Magari per qualcuno può essere superfluo o inutile ma io gradirei di vedere un file di esempio con 20/30 record ma con la struttura uguale al file originale con inserito a mano il risultato che si vuole ottenere.

Grazie
 

Vale92tina

Nuovo utente
Original poster
30 Giugno 2026
11
0
1
Office 365
Purtroppo non ricordavo che c'erano alcuni CF con altri anni. Carico nuovo file. Grazie ancora
 

Allegati

  • esempio2.xlsx
    12,4 KB · Visite: 6

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.795
6.317
2.345
55
Arce
2016, 2019, 365
Carico nuovo file
Se vuoi un elenco di tutti i CF che hanno la colonna G vuota per tutti gli anni della colonna D:
=LET(cf;A3:.A9999;c;LAMBDA(x;SCEGLI.COL(RAGGRUPPAPER(cf;SCARTO(cf;;6);CONCAT;0;0);x));FILTRO(c(1);c(2)="";"Non ci sono codici fiscali che soddisfano il criterio"))
image.png

Se invece devi controllare 3 anni specifici, ti rinnovo l'invito a chiarire quali considerare.

Ciao.
 
  • Like
Reactions: Vale92tina

gianfranco55

Utente assiduo
17 Febbraio 2025
1.300
561
145
Valdagno
365
ciao
=LET(U;UNICI(A3:.A1000);FILTRO(U;CONTA.PIÙ.SE(G3:G1000;"?*";A3:A1000;U)=0;""))
questa non guarda quanti anni ci sono, verifica che nella colonna G le celle corrispondenti al codice
siano tutte vuote
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
Vale92tina @Vale92tina

La coppa non va messa a casaccio ma al post contenente la soluzione adottata.

Ma la macro non l'hai più provata?
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.795
6.317
2.345
55
Arce
2016, 2019, 365
la macro non l'hai più provata?
alfrimpa @alfrimpa (ciao), non può funzionare per quel che ti avevo detto prima: non hai più un passo 3 che ti permette di sfruttare il triplice controllo, ma devi usare un diverso criterio se vuoi adattarla alla reale situazione mostrata nell'ultimo file.
Grazie a te dei riscontri, ma ricorda che puoi chiedere spiegazioni se la formula non ti fosse chiara.

Ciao.
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
non può funzionare per quel che ti avevo detto prima
E credi che non lo sappia da prima che lo dicessi tu?

Avevo solo chiesto se il codice era stato provato sul primo file allegato dove per ogni CF c'erano 3 anni.

Di certo con l'ultimo file non può funzionare.

Se eventualmente interessa (cosa che non credo) si può provare a scrivere una macro per il nuovo file.
 

ipolito

Excel Expert
Expert
14 Maggio 2023
4.117
1.595
145
52
Lago di Garda sponda bresciana
365
Quindi, solo per capire. Di 20 formule e un macro ne va bene solo una perché è stata cambiata la richiesta in corso d'opera? Solo per capire eh, nessuna polemica. Ma mi pare di ricordare che in altri casi si sia fatta chiudere la discussione e aprirne una nuova (cosa discutibile ovviamente). Ripeto solo per capire, che vantaggio potremmo trarre dalle altre 19 formule e una macro quando in futuro ci imbatteremo in questa discussione? Continuo a dirlo è solo per capire visto che non lo capito. 👋
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.795
6.317
2.345
55
Arce
2016, 2019, 365
Di 20 formule e un macro ne va bene solo una perché è stata cambiata la richiesta in corso d'opera?
Non è stata cambiata, è stata chiarita e successivamente invitato l'OP a farlo con un file che rispecchiasse tutti i parametri necessari, anche perché poteva considerarsi risolta con quanto ricevuto:
alla fine ha funzionato solo la tabella pivot, alla fine comunque siamo arrivati alla soluzione
che mi sarei aspettato contrassegnata come risolutiva.
il fatto che le formule non mi siano funzionate può essere dovuto al fatto che per alcuni CF ci sono più anni oltre i 3 indicati?
A fronte del fatto che l'OP dichiarava tutte le formule non funzionanti abbiamo chiesto:
sarebbe opportuno ripubblicare il file con le varie soluzioni, c'è sicuramente un difetto di implementazione, visto che funzionano tutte
io gradirei di vedere un file di esempio con 20/30 record ma con la struttura uguale al file originale
e considerato che la modifica su alcune delle soluzioni proposte era di poco conto, ne sono state fornite altre 2 solo corrette nei riferimenti.
che vantaggio potremmo trarre dalle altre 19 formule e una macro quando in futuro ci imbatteremo in questa discussione?
Che sfruttano meccanismi utili a trarne spunto per argomenti simili.
Solo per capire eh, nessuna polemica
Spero di aver risposto alle tue curiosità.

L'unico neo che posso scorgere è che il dubbio manifestato:
io un approfondimento sulle formule lo farei, dubito tu le abbia completamente interiorizzate
è sempre più fondato, ma lascio sempre la libertà all'OP nel caso senta la necessità di approfondire quanto ricevuto.

Un saluto.
 

Vale92tina

Nuovo utente
Original poster
30 Giugno 2026
11
0
1
Office 365
Il file originale ha migliaia di righe e io non ricordavo che alcuni CF avessero più (o meno) di tre annualità inizialmente indicate, ecco perché poi il giorno dopo, provando le formule sul file originale, non funzionavano (sul primo file di esempio ovviamente sì, macro inclusa). Colpa della mia memoria, pardon, ma la richiesta è sempre stata la medesima.
Terio @Terio ammetto che tra le due funzionanti quella di gianfranco55 @gianfranco55 mi è più chiara. Ma non voglio allungare ulteriormente la conversazione, ho già fatto abbastanza danni!
 

gianfranco55

Utente assiduo
17 Febbraio 2025
1.300
561
145
Valdagno
365
ciao
la domanda era
me serve trovare i Cf che abbiano per tutti e 3 gli anni la cella vuota nella colonna "Manutenzione"...
Esiste un filtro o una formula che mi restituisca i cf con questa condizione?
poi diventata
Ma il fatto che le formule non mi siano funzionate può essere dovuto al fatto che per alcuni CF ci sono più anni oltre i 3 indicati

ergo le formule che prevedevano scarto/3 non è che non funzionino ma sfalsano il risultato
Allora ho provato tutte le formule e alla fine ha funzionato solo la tabella pivot
la mia verifica che nella colonna G le celle corrispondenti ai vari codici
siano tutte vuote (non gliene frega se sono 3/4/50)
al post 5 l'ho anche tarata sul tuo file.

ma estrae solo i CF come nativamente richiesto.

poi se ti serve la tabella pivot benissimo, ma ripeto,
la mia funziona bene...........estrae i codici fiscali.........formula peraltro piuttosto semplice da capire/usare

NB
mai dire che le formule non funzionano......siamo permalosissimiMuoio_muoio
 

Vale92tina

Nuovo utente
Original poster
30 Giugno 2026
11
0
1
Office 365
gianfranco55 @gianfranco55 abbiamo scritto contemporaneamente, neanche a farlo apposta! Giuro che le ho provate tutte, non sul file di prova, ma sull'originale, per quello non funzionavano e mi è venuto il dubbio degli anni ulteriori :D
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
Ma non voglio allungare ulteriormente la conversazione, ho già fatto abbastanza danni!
Tranquilla non hai fatto nessun danno.

Quello che si chiede agli utenti è di essere il più precisi possibile circa la situazione di partenza ed il risultato che si intende raggiungere altrimenti si rischia di perdere tempo ed è un peccato.

ma sull'originale,
E sull'originale non avrebbe funzionato neanche la mia macro visto che il numero degli anni è variabile e non fisso (3).
 

gianfranco55

Utente assiduo
17 Febbraio 2025
1.300
561
145
Valdagno
365
ciao
nessun problema
ma se l'originale è quello allegato funziona basta adeguare i dati

=LET(U;UNICI(A3:.A1000);FILTRO(U;CONTA.PIÙ.SE(G3:G1000;"?*";A3:A1000;U)=0;"")

e sai cos'à di bello?
i dati non serve siano in ordine

 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.795
6.317
2.345
55
Arce
2016, 2019, 365
mi è più chiara
Allora non marcare la mia se usi quella, più chiara, di gianfranco55 @gianfranco55 (ciao) che avevo anche segnalato:
su cui anch'io mi sono basato per la prima

Il riscontro è stato prezioso perché hai correttamente spiegato le vicissitudini della richiesta e pertanto provvedo a spostare la coppa.
Solo per chiarezza, la formula che avevi marcato come soluzione non è altro che quella pubblicata al post #6 semplicemente rivista negli intervalli:
=LET(cf;A6:.A9999;c;LAMBDA(x;SCEGLI.COL(RAGGRUPPAPER(cf;SCARTO(cf;;2);CONCAT;0;0);x));FILTRO(c(1);c(2)="";"Non ci sono codici fiscali che soddisfano il criterio"))
per quello ho scritto:
considerato che la modifica su alcune delle soluzioni proposte era di poco conto
riferendomi alla mia ed a quella di gianfranco55 @gianfranco55 che ha appena chiarito lo stesso concettoe che mi ha portato a pensare che non ne hai assimilato il funzionamento.

Magari abbiamo solo visto più lungo, ma ribadisco che non sono state create ex novo ulteriori soluzioni,
un saluto a tutti i partecipanti.
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
Avendo a disposizione il file "reale" e per non lasciare le cose a metà la macro sottostante elenca da L2 in poi tutti i CF che negli anni in cui compaiono (quale che sia il numero) non hanno ricevuto manutenzioni.

Preventivamente in colonna AA mettiamo i valori univoci della colonna A con la formula =UNICI(A3:A1000); anche questo si poteva fare con il codice ma per non complicare le cose ho preferito usare la funzione UNICI()

Visual Basic:
Sub VerificaManutenzione()
Dim cel As Range
Dim rng As Range
Dim riga As Long
riga = 2
For Each cel In Range("AA1:AA" & Cells(Rows.Count, 27).End(xlUp).Row)
    With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        Set rng = .Find(What:=cel.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not rng Is Nothing Then
            If WorksheetFunction.CountA(Range(Cells(rng.Row, 7), Cells(rng.Row + WorksheetFunction.CountIf(Range("A3:A130"), cel.Value) - 1, 7))) = 0 Then
                Cells(riga, "L").Value = cel.Value
                riga = riga + 1
            End If
        End If
    End With
Next cel
End Sub

Se qualcuno vorrà provarla gliene sarò grato.

Naturalmente sono a disposizioni per qualsivoglia spiegazione dovesse necessitare (magari anche solo per curiosità).
 
Ultima modifica:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.795
6.317
2.345
55
Arce
2016, 2019, 365
in colonna AA mettiamo i valori univoci della colonna A con la formula =UNICI(A3:A1000)
Un consiglio, meglio usare la notazione trimrange:
=UNICI(A3:.A1000)
così da evitare il raggruppamento delle celle vuote e, visto che replica il concetto di gianfranco55 @gianfranco55 , usare "?*" o "><" per contare le celle occupate.
Ovviamente funziona, ma alla riga 7 la partenza è opportuno che sia la 3ª riga e non la prima, inoltre non capisco il senso del Find: se ti appoggi all'elenco generato da UNICI non può verificarsi la condizione per cui il CF non esista.
Per puro spirito didattico e senza stravolgere il principio con cui l'hai determinato, io apporterei qualche modifica:
Modulo:
Sub VerificaManutenzione_Mod()
Dim cel As Range
Dim rng As Range
Dim riga As Long
    Range("L2:L65535").ClearContents
    riga = 2
    For Each cel In Range("AA1:AA" & Cells(Rows.Count, 27).End(xlUp).Row)
        Set rng = Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        If Application.CountIfs(rng, cel.Value, rng.Offset(, 6), "><") = 0 Then
            Cells(riga, "L").Value = cel.Value
            riga = riga + 1
        End If
    Next cel
End Sub

Ciao 🙂
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.861
8.653
2.445
72
Napoli
Office 365
Grazie Terio @Terio me le devo studiare le modifiche
 
  • Like
Reactions: Terio