La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Ciao a tutti, come posso combinare in automatico 2 righe con stesso codice fiscale per avere 1 sola riga con tutti i valori nelle rispettive colonne?
Fabio
ciao
mi puoi allegare un file con più righe per favore
Ciao, ho un elenco excel dove clienti vari hanno talvolta 2 polizze diverse su 2 righe. Nello SS allegato Baiocco ha nella prima riga 2 polizze auto (2 targhe) e nella riga sotto ha 1 polizza 148 (casa). Baccolini ha nella prima riga 1 targa e nella riga 2 2 polizze ramo 148. Bega ha nella prima riga 2 targhe e nella seconda riga 1 polizza 148. Vorrei (in modo automatico, sono circa 10.000 clienti totali) che per ogni riga (dello stesso codice fiscale) avere tutte le diverse polizze che il cliente ha con targa, scadenza, importo e casa (148) numero polizza, scadenza e importo. In questo modo avrei tutti i dati sotto controllo e meno righe da gestire. Grazie
Ciao a tutti
Premesso che l'Amico @gianfranco55 (un caro saluto) ti ha chiesto un file e non un'immagine (se quello si può lavorare su qyesta no) se la disposizione dei nominativi è come da immagine e se conosci il linguaggio VBA è abbastanza semplice: crea una macro che spazzoli l'intero elenco e ogni volta che incontra due CF uguali riporta in altra parte del foglio un'unica riga con tutti i dati.
Fai una prova e, se non riesci a farla funzionare, scrivici e vedremo di darti una mano.
Ciao,
Mario
Ciao
senza file difficile capire
hai colonne nascoste e dati che non mi tornano
BAIOCCO nella colonna SUB
ha dati diversi a differenza degli altri
ti faccio un esempio ma penso che con la mole di dati, che immagino tu abbia vito il numero di colonne,
il vba sia consigliato
esempio
partiamo con la colonna del codice fiscale..unico dato certo per estrarre gli univoci
in C11 e tiriamo in basso
=SE.ERRORE(INDICE($C$2:$C$7;CONFRONTA(0;INDICE(CONTA.SE(C$10:$C10;$C$2:$C$7&""););0));"")
in A11 da tirare a destra per una cella e in basso
=SE.ERRORE(INDICE(A$2:A$7;AGGREGA(15;6;RIF.RIGA($1:$7)/($C$2:$C$7=$C11)/(A$2:A$7<>"");1));"")
in D11 da tirare a destra e in basso
=SE.ERRORE(INDICE(D$2:D$7;AGGREGA(15;6;RIF.RIGA($1:$7)/($C$2:$C$7=$C11)/(D$2:D$7<>"");1));"")
nb
non serve che i CF sino uno sotto l'altro
possono essere anche sfalsati li trova lo stesso
@gianfranco55 Ciao, allego il file per aiutarti.
Il tuo risultato è quello che mi serve, ho fatto quello che mi hai scritto ma non viene lo stesso risultato. Dove sbaglio? Grazie
ciao
prova a confermare matriciale (con il 365 me ne dimentico di scriverlo)
seleziona la cella
F2
vai nella barra della formula e conferma cliccando
CTRL MAIUSCOLO INVIO
scusa ma non capisco. Ho visto che usando le formule che mi hai indicato su un'altra versione di excel funziona. Se mi puoi aiutare a capire cosa devo fare col "matriciale" oppure proseguo sull'altra versione. Grazie
ciao
posizionati con il mouse sulla barra della formula
e invece di dare invio
tieni cliccati assieme CTRL MAIUSOLO e dai INVIO
che altra versione hai
Ciao @fabio-leonardi, se vuoi potresti provare anche una marco che va a raggruppare i dati dei nominativi e li riscrive in un nuovo foglio.
In base all'allegato che hai caricato, ci sono però delle azioni preliminari da compiere. Attualmente nel foglio "BAIOCCO 1" i dati sono trascritti in 2 "Tabelle" ed un intervallo di celle. La prima tabella va da "A1" a "FE2" mentre la seconda va da "A3" a "FE3", l'intervallo va da "A4" a "FE7". Quindi per prima cosa dobbiamo trasformare il tutto in un'unica "Tabella".
Segui questi passaggi:
- Posizionati in A2 e portati nella scheda "Struttura Tabella", da qui premi su "Converti in intervallo"
- Posizionati in A3 e ripeti come sopra
- Da A3 portati nella scheda "Inserisci" e scegli "Tabella". Controlla se l'intervallo di celle che viene preso in automatico è corretto. Spunta "Tabella con intestazioni". Adesso hai un'unica tabella.
Fatto questo, inerisci la macro "raggruppaNominativi" in un Modulo Standard ed eseguila. Si creerà un nuovo Foglio chiamato "Raggruppa_Nominativi" con all'interno una "Tabella" chiamata "Raggruppa" con tutti i dati raggruppati per ogni nominativo:
Option Explicit Sub raggruppaNominativi() Dim tbl As ListObject Dim ur As Long, uc As Long, i As Long, r As Long Dim CF As String Dim cell As Range Dim dict As Object Dim arr() As Variant, tempArr As Variant, key As Variant Application.ScreenUpdating = False Set tbl = ThisWorkbook.Worksheets("BAIOCCO 1").ListObjects(1) 'cambiare eventualmente nome del Foglio Set dict = CreateObject("Scripting.Dictionary") ur = tbl.ListRows.Count uc = tbl.ListColumns.Count For Each cell In tbl.ListColumns("CODICE_FISCALE").DataBodyRange CF = Trim(cell.Value) r = cell.Row - tbl.HeaderRowRange.Row ReDim arr(1 To uc) For i = 1 To uc arr(i) = tbl.DataBodyRange.Cells(r, i).Value Next i If Not dict.Exists(CF) Then dict.Add CF, arr Else tempArr = dict(CF) For i = 19 To uc If Trim(tempArr(i)) = "" And Trim(arr(i)) <> "" Then tempArr(i) = arr(i) End If Next i dict(CF) = tempArr End If Next cell Application.DisplayAlerts = False On Error Resume Next Worksheets("Raggruppa_Nominativi").Delete On Error GoTo 0 Application.DisplayAlerts = True Worksheets.Add ActiveSheet.Name = "Raggruppa_Nominativi" Range("A1").Resize(1, uc) = tbl.HeaderRowRange.Value r = 2 For Each key In dict.Keys Cells(r, 1).Resize(1, uc).Value = dict(key) r = r + 1 Next key Set tbl = ActiveSheet.ListObjects.Add(SourceType:=xlSrcRange, Source:=Range("A1").CurrentRegion, XlListObjectHasHeaders:=xlYes) With tbl .TableStyle = "TableStyleMedium6" .DataBodyRange.Font.Color = RGB(0, 0, 255) .DataBodyRange.Font.Bold = True On Error Resume Next .Name = "Raggruppa" On Error GoTo 0 End With ActiveSheet.Columns.AutoFit Application.ScreenUpdating = True Set tbl = Nothing Set cell = Nothing Set dict = Nothing End Sub
@gianfranco55 Scusa puoi aggiornare le formule sapendo che l'intervallo delle celle è A2:BD1727? Grazie
ciao
unici
=SE.ERRORE(INDICE($C$2:$C$1800;CONFRONTA(0;INDICE(CONTA.SE($C$10:C10;$C$2:$C$1800&""););0));"")
la parte in rosso cambia se cambi riga/colonna
la cella sopra deve essere sempre vuota o con un testo che non ci sia nell'indice
da trascinare a destra
=SE.ERRORE(INDICE(A$2:A$1800;AGGREGA(15;6;RIF.RIGA($1:$1800)/($C$2:$C$1800=$C11)/(A$2:A$1800<>"");1));"")
però non puoi mettere le formule sotto la tabella
dove inserisci i resoconto?
sei riuscito a confermare matriciale
mi sono perso. Da dove possiamo ripartire?
- non puoi mettere le formule sotto la tabella andrebbero in rif.circolare a meno che non parti dalla riga1802
- ti consiglio usare un'altro foglio
- sei riuscito a confermare matriciale?