Concatenare dati da 2 sheet
Hai un problema con Excel? 
Concatenare dati da 2 sheet
di DiegoR (utente non iscritto) data: 25/04/2016 01:34:57
Buongiorno Boys.
Ho la necessità di unire 2 sheet in un terzo concatenando le informazioni esistenti, riporto la struttura:
sheet 1
ColonnaA
WINDOWS2010
LINUX SUSE
LINUX REDHAT
WINDOWSNT
ORACLE
HANA
sheet2
Colonne A - B
AIX - musica.mp3
WINDOWS2010 - PIPPO
WINDOWS2012 - Foto.jpg
LINUX SUSE - PLUTO
LINUX REDHAT - PAPERINO
Il desiderato è:
WINDOWS2010 - PIPPO
LINUX SUSE - PLUTO
LINUX REDHAT - PAPERINO
nel primo sheet ho una serie di server, nel secondo una parte di questi server con determinati files, vorrei fare un terzo foglio che confronti se il server in sheet2 è presente in sheet1 e se c'è riportare sulla stessa riga la colonna B di sheet2
Help, grazie
di patel data: 25/04/2016 10:46:47
allega il file con anche il risultato desiderato
di cromagno data: 25/04/2016 13:23:28
Ciao a tutti,
sempre se ho capito bene....
nella cella A2 del foglio3 ("Riscontri" nel file che allego) inserire la formula matriciale (quindi da confermare con la combinazione di tasti CTRL+MAIUSC+INVIO):
=SE.ERRORE(INDICE(Foglio2!$A$1:$B$6;PICCOLO(SE(SE.ERRORE(CONFRONTA(Foglio2!$A$2:$A$6;Foglio1!$A$2:$A$7;0);0)>0;RIF.RIGA($A$2:$A$6);"");RIF.RIGA(A1));RIF.COLONNA(A1));"")
e poi copiare la cella A2 in basso e a destra.
Se ho capito male, allega il tuo file come suggerito da patel (che saluto).
Allego file d'esempio...
inserito file
di DiegoR (utente non iscritto) data: 26/04/2016 16:11:11
nell'esempio reale esiste il foglio Baseline (master dei dati) e foglio 1/2/3/4 con cui fare il merge. Questi 4 potrebbero anche essere uniti in un unico foglio, per comodità di formule :). Il risultato dovrebbe essere quello nel foglio5 ovvero tutte le righe di Baseline e se presenti in uno dei 4 fogli la corrispondente colonna B
Spero la chiarezza sia stata sufficiente. Grazie
di DiegoR (utente non iscritto) data: 26/04/2016 16:13:55
Inserito il file: la base dati è Baseline, i 4 fogli successivi (1,2,3,4) contengono i dati da cui fare il merge, ma volendo si possono anche unire in un unico foglio, se più comodo per la formula. Il risultato è il foglio 5 che contiene tutte le righe di Baseline e la colonna B dei fogli 1,2,3,4 se presente.
Grazie
di cromagno data: 26/04/2016 18:50:45
Ciao,
ho visto il file....
credo che la strada migliore sia il VBA (inoltre, visto il numero di righe, con le formule il file diventerebbe veramente troppo pesante...per non dire inutilizzabile).
Più tardi provo a scrivere qualcosa.
di cromagno data: 27/04/2016 01:59:55
Ciao,
il codice utilizzato è scritto sotto....
se vuoi verificare anche le righe nascoste, togli il simbolo di apice (') da questa riga:
uRiga = Wks1.UsedRange.Rows.Count
e da questa:
uRigaWks = .UsedRange.Rows.Count
e metti l'apice nelle rispettive righe precedenti.
Se ci dovessero essere più righe nella realtà, converrebbe integrare una matrice nel codice.
Ti riallego il file ("foglio unione")...
Sub Unione()
Dim Wks1 As Worksheet, Wks2 As Worksheet, uRigaWks As Long, i As Long
Dim Sh As Worksheet, uRiga As Long, j As Long
Set Wks1 = Worksheets("Baseline")
Set Wks2 = ActiveSheet
uRiga = Wks1.Range("A" & Rows.Count).End(xlUp).Row 'ultima riga - solo righe visibili
'uRiga = Wks1.UsedRange.Rows.Count 'ultima riga - anche righe nascoste
Wks2.UsedRange.ClearContents
Wks1.Range("A1:A" & uRiga).Copy
Wks2.Range("A2:A" & uRiga + 1).PasteSpecial xlPasteValues
Wks2.Range("A2").Select
Application.CutCopyMode = False
uRiga = uRiga + 1
For Each Sh In Worksheets
If Sh.Name <> Wks1.Name And Sh.Name <> Wks2.Name Then
With Wks2
uRigaWks = Sh.Range("A" & Rows.Count).End(xlUp).Row
'uRigaWks = .UsedRange.Rows.Count
For i = 2 To uRiga
For j = 1 To uRigaWks
If .Range("A" & i).Value = Sh.Range("A" & j).Value Then
.Range("B" & i).Value = Sh.Range("B" & j).Value
GoTo prossimo
End If
Next j
prossimo:
Next i
End With
End If
Next Sh
MsgBox "Done!"
Set Wks1 = Nothing
Set Wks2 = Nothing
End Sub |
di DiegoR (utente non iscritto) data: 28/04/2016 02:23:38
wuaaaaaaaa
Grazie
Vuoi Approfondire?