
Bezeroen eta animalien datuak taula bereizietan badituzu, bi taulen arteko eremu komun batekin, Excel fitxategi batera goiburu bikoitzeko formatuan inportatzeko modu azkar eta automatizagarria erabil dezakezu, aldiro eskuz kopiatu eta itsatsi behar izan gabe: Excel-eko Power Queryrekin edo macro (VBA) bidez.
Nola egin ez badakizu, jarraian azaltzen dizugu:
1. AUKERA: Excel-en Power Query erabili (Gomendatua)
Power Query Excel-en integratuta dago, eta datuak inportatu, eraldatu eta konbinatzeko tresna oso indartsua da, macro edo programazio konplexurik gabe
Ireki datuak kargatu nahi dituzun Excel fitxategia.
Joan Datuak fitxara > Datuak lortu eta eraldatu > Datuak lortu > Taulatik edo barrutitik.
Kargatu bezeroen taula eta animalien taula (beste fitxategi batetik edo fitxategi beretik).
Power Query-n:
Egiaztatu bi taulak behar bezala kargatuta daudela.
Batu bi taulak:
Hautatu bezeroen taula.
Egin klik Hasiera > Konbinatu kontsultak > Konbinatu.
Aukeratu animalien taula.
Lotu biak bezero-kodearen bidez.
Horrela, bezeroaren datuak dituen multzo berria lortuko duzu, eta bere animalien azpitaula.
Zabaldu azpitaula hori erakutsi nahi dituzun zutabeak ikusteko.
Eraldatu datuak behar duzun formatura:
Sartu + marka edo sinboloa animalia-kodearen eremuan, goiburu bikoitzeko formaturako.
Kargatu emaitza Excel orri batera.
Google-n "How to use Power Query in Excel" bilatuz informazio gehiago aurki dezakezu behar baduzu. Material erabilgarri asko dago.
2. AUKERA: Macro bat erabili (VBA)
Nahiago baduzu, VBA script bat sor dezakezu.
Adibidez, honako egoera dugu:
Fitxategiak: Clientes.xls eta Animales.xls
Orriak: Clientes eta Animales
Biak lotzen dituen eremua, animalietan: CodigoCliente
Zer egingo du macroak?
Clientes.xls eta Animales.xls fitxategiak irekiko ditu
Bezeroen eta animalien orrietako datuak bilatuko ditu.
Bezero bakoitzerako:
Bezeroaren datuekin errenkada bat sortuko du.
Bere animalia guztiak bilatuko ditu (codigoCliente eremuaren arabera) eta lehen gelaxkan + duen errenkada gehituko du
Dena uneko fitxategiaren orri aktiboan txertatuko du (macroa itsatsi eta exekutatzen duzun tokian)
vba
Sub UnirClientesYMascotas()
Dim wbClientes As Workbook
Dim wbAnimales As Workbook
Dim wsClientes As Worksheet
Dim wsAnimales As Worksheet
Dim wsDestino As Worksheet
Dim filaDestino As Long
Dim rutaClientes As String
Dim rutaAnimales As String
Dim ultimaFilaClientes As Long
Dim ultimaFilaAnimales As Long
Dim i As Long, j As Long
Dim codigoCliente As String
' Rutas completas (ajústalas si es necesario)
rutaClientes = Application.GetOpenFilename("Archivos Excel (*.xls), *.xls", , "Selecciona el archivo CLIENTES")
If rutaClientes = "Falso" Then Exit Sub
rutaAnimales = Application.GetOpenFilename("Archivos Excel (*.xls), *.xls", , "Selecciona el archivo ANIMALES")
If rutaAnimales = "Falso" Then Exit Sub
' Abrir archivos
Set wbClientes = Workbooks.Open(rutaClientes)
Set wsClientes = wbClientes.Sheets("clientes")
Set wbAnimales = Workbooks.Open(rutaAnimales)
Set wsAnimales = wbAnimales.Sheets("animales")
' Hoja donde pegamos el resultado (la activa en este archivo)
Set wsDestino = ThisWorkbook.ActiveSheet
filaDestino = 1
' Detectar la última fila en cada hoja
ultimaFilaClientes = wsClientes.Cells(wsClientes.Rows.Count, 1).End(xlUp).Row
ultimaFilaAnimales = wsAnimales.Cells(wsAnimales.Rows.Count, 1).End(xlUp).Row
' Copiar encabezados del cliente
For i = 1 To wsClientes.Cells(1, Columns.Count).End(xlToLeft).Column
wsDestino.Cells(filaDestino, i + 1).Value = wsClientes.Cells(1, i).Value
Next i
' Copiar encabezados de animales
For i = 1 To wsAnimales.Cells(1, Columns.Count).End(xlToLeft).Column
wsDestino.Cells(filaDestino + 1, i + 1).Value = wsAnimales.Cells(1, i).Value
Next i
filaDestino = filaDestino + 2 ' Empezamos a poner datos
' Recorrer cada cliente
For i = 2 To ultimaFilaClientes
' Copiar datos del cliente
wsDestino.Cells(filaDestino, 1).Value = "" ' Celda vacía (sin +)
For j = 1 To wsClientes.Cells(1, Columns.Count).End(xlToLeft).Column
wsDestino.Cells(filaDestino, j + 1).Value = wsClientes.Cells(i, j).Value
Next j
codigoCliente = wsClientes.Cells(i, 1).Value ' Suponemos que el código del cliente está en la columna 1
filaDestino = filaDestino + 1
' Buscar las mascotas asociadas
For j = 2 To ultimaFilaAnimales
If wsAnimales.Cells(j, 1).Value = codigoCliente Then
wsDestino.Cells(filaDestino, 1).Value = "+" ' Marca de mascota
For k = 1 To wsAnimales.Cells(1, Columns.Count).End(xlToLeft).Column
wsDestino.Cells(filaDestino, k + 1).Value = wsAnimales.Cells(j, k).Value
Next k
filaDestino = filaDestino + 1
End If
Next j
Next i
' Cerrar los archivos de origen
wbClientes.Close SaveChanges:=False
wbAnimales.Close SaveChanges:=False
MsgBox "Proceso completado. Los datos se han unido correctamente.", vbInformation
End Sub
Ireki azken taula sortu nahi duzun Excel fitxategia.
Sakatu Alt + F11 Visual Basic editorea irekitzeko.
Ezkerreko menuan, eskuin-klik "VBAProject (ZureFitxategia.xlsx)" → Txertatu → Modulua.
Itsatsi bertan aurreko kode osoa.
Itxi editorea (X-rekin edo Ctrl + Q).
Sakatu Alt + F8, hautatu UnirClientesYMascotas eta egin klik "Exekutatu".
Clientes.xls fitxategia hautatzeko eskatuko dizu, eta gero Animales.xls fitxategia.
Taula bateratua irekitako fitxategiaren uneko orrian itsatsiko da.