Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
ciao Elena
che versione hai di excel
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Buongiorno,
Ho due righe di dati, esempio:
Nome cognome compleanno e-mail cellulare
Nome cognome compleanno e-mail cellulare
Solo che magari nella prima riga manca il compleanno e nella seconda manca il cellulare. Io vorrei unirle in una sola riga e che Excel prendesse il dato mancante da entrambe le righe, senza sdoppiare dati che ci sono sempre come nome e cognome. Spero di essere stata chiara, grazie mille!
Elena
Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.
ciao Elena
che versione hai di excel
Excel 2019
ciao
ok usiamo formule "vintage"
in E2 da trascinare in basso
=SE.ERRORE(INDICE($A$2:$A$1000;CONFRONTA(0;INDICE(CONTA.SE(E$1:$E1;$A$2:$A$1000&""););0));"")
se cambi colonna varia la parte in verde
( questa formula necessita di una cella sopra meglio se vuota)
in F2 e la trascini a destra e in basso
=SE.ERRORE(INDICE(B$1:B$1000;AGGREGA(15;6;RIF.RIGA($1:$1000)/($A$1:$A$10=$E2)/(B$1:B$1000>0);1));"")
Per passare da una cosa del genere:
possono bastare anche poche righe di codice:
Sub Raggruppa()
Dim lngRow As Long, lngC As Long
With ActiveSheet
For lngRow = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If .Cells(lngRow - 1, 1).Value = .Cells(lngRow, 1).Value And .Cells(lngRow - 1, 2).Value = .Cells(lngRow, 2).Value Then
For lngC = 3 To 5
If .Cells(lngRow, lngC).Value <> "" Then .Cells(lngRow - 1, lngC).Value = .Cells(lngRow, lngC).Value
Next lngC
.Cells(lngRow, 1).EntireRow.Delete
End If
Next lngRow
End With
End Sub
Ciao.
Ciao,
volendo provare una soluzione tramite l'utilizzo di Power Query.
Partendo dai dati inseriti in una tabella:
e trattando i dati da "tabella/intervallo" ho effettuato il raggruppamento delle colonne Nome e Cognome facendo restituire il valore massimo delle colonne Compleanno, Email e Cellulare, ottenendo una tabella di dati come questa:
Questo il codice M per arrivare a questo risultato:
let
Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
#"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Nome", type text}, {"Cognome", type text}, {"Compleanno", type date}, {"Email", type text}, {"Cellulare", type text}}),
#"Raggruppate righe" = Table.Group(#"Modificato tipo", {"Nome", "Cognome"}, {{"Compleanno", each List.Max([Compleanno]), type date}, {"Email", each List.Max([Email]), type text}, {"Cellulare", each List.Max([Cellulare]), type text}})
in
#"Raggruppate righe"
Naturalmente ci sarebbe la problematica di eventuali omonimie (per le quali occorrerebbe un qualche elemento di distinzione) e l'ipotesi che per un qualche nominativo vi fossero più email
Ciao