Notifiche
Cancella tutti

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.

[Risolto] Combinare 2 righe.

24 Post
5 Utenti
1 Reactions
367 Visualizzazioni
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

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

Versione di Excel
Sistema operativo
 
Postato : 26/05/2025 16:06
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 

ciao

mi puoi allegare un file con più righe per favore

 
Postato : 26/05/2025 18:09
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

@gianfranco55

 
Postato : 26/05/2025 23:18
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

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

 

 
Postato : 26/05/2025 23:19
Marius44
(@marius44)
Post: 339
Moderatore
 

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

 
Postato : 27/05/2025 08:44
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 

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

 
Postato : 27/05/2025 13:45
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

@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

 
Postato : 27/05/2025 15:23
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 

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

 

 
Postato : 27/05/2025 15:33
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

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 

 
Postato : 27/05/2025 17:53
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 

 

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

 
Postato : 27/05/2025 18:09
Alexps81
(@alexps81)
Post: 33
Eminent Member
 

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:

  1. Posizionati in A2 e portati nella scheda "Struttura Tabella", da qui premi su "Converti in intervallo"
  2. Posizionati in A3 e ripeti come sopra
  3. 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
 
Postato : 28/05/2025 16:08
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

@gianfranco55 Scusa puoi aggiornare le formule sapendo che l'intervallo delle celle è A2:BD1727? Grazie

 

 
Postato : 28/05/2025 17:44
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 

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

 
Postato : 28/05/2025 18:00
Forum 1
(@fabio-leonardi)
Post: 10
Active Member
Avviatore di Topic
 

mi sono perso. Da dove possiamo ripartire?

 
Postato : 28/05/2025 18:12
gianfranco55
(@gianfranco55)
Post: 1447
Moderatore
 
  • 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?
 
Postato : 28/05/2025 18:19
Pagina 1 / 2
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download