Excel - Cómo comparar dos listas??

 
Vista:

Cómo comparar dos listas??

Publicado por Anna (1 intervención) el 27/02/2007 17:12:39
Hola!!

A ver, tengo un archivo de Excel con dos hojas de datos. La primera contiene un listado de clientes (sólo el nombre de la empresa) del año 2006. Y la segunda contiene otro listado de clientes del año 2007.

Lo que puede pasar es que en el 2007 haya clientes que no estan en la lista del 2006, y viceversa.

Sé que con el Access se puede hacer perfectamente mediante una consulta, pero me gustaría saber si hay alguna manera de crear una tercera lista con los clientes que aparecen en una lista, pero no en la otra.

Os copio aquí la consulta en SQL, para que veáis lo que quiero decir:

SELECT *
FROM Clientes2007
WHERE
(((Exists (SELECT *
FROM Clientes2006
WHERE Clientes2006.Nombre=Clientes2007.Nombre))=False));

O sea, que si en la lista del 2006 tengo los clientes: "A", "B" y "C", y en la lista del 2007 tengo los clientes: "A", "B", "C" y "D", el resultado de la consulta sería: "D". Por tanto, en la tercera lista del Excel, me tendría que aparecer "D".

Hummmm... no sé si me he explicado muy bien... Pero si sabéis alguna manera de hacerlo os lo agradecería mucho!!!

Gracias por adelantado! ;-)

Anna
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cómo comparar dos listas??

Publicado por JuanC (792 intervenciones) el 27/02/2007 19:34:12
Con esto te tenés que arreglar...

Agregar en Referencias: Microsoft ActiveX Data Objects 2.0 Library

Sub Test()
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sSQL$

On Error GoTo ErrHandler
With con
.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ActiveWorkbook.FullName & ";" & _
"Extended Properties=Excel 8.0;"
End With

'qq y pp son los nombres de los campos
'van en la primer fila del rango de datos (títulos)
'los rangos son arbitrarios

sSQL = "SELECT * " & _
"FROM [Hoja2$A1:A11] " & _
"WHERE " & _
"(((EXISTS (SELECT * " & _
"FROM [Hoja1$A1:A11] " & _
"WHERE [Hoja1$A1:A11].qq = [Hoja2$A1:A11].pp))=False))"

rs.Open sSQL, con, adOpenStatic

With rs
'If Not .EOF And Not .BOF Then .MoveFirst
'Do Until .EOF
' MsgBox .Fields(0)
' .MoveNext
'Loop
[B2].CopyFromRecordset rs 'Guarda el resultado

.Close
End With

con.Close

fin:
Set rs = Nothing
Set con = Nothing
Exit Sub

ErrHandler:
MsgBox Err.Description, vbCritical + vbOKOnly, "Error"
Err.Clear
Resume fin
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar