Como comparar contenido de 2 hojas EXCEL!!

22/08/2003 - 12:44 por Petit | Informe spam
Hola a todos!
Estoy haciendo una pequeña aplicación que, al
introducir dos hojas EXCEL, las tiene que comparar y
comprobar que son iguales, y en caso de que no lo sean
tiene que notificarlo y guardar las filas diferentes en
otra hoja. La cuestión es que por ahora lo único que se
me ocurre es hacer un bucle que recorra las 2 hojas e ir
comparando celda por celda hasta llegar al final de las
hojas , no sé si hay alguna función que pueda hacerlo más
automatizado.
Aparte me gustaría no tener que indicarle el final del
bucle, porque no sé que dimensión tienen las hojas.
Podría hacerlo esa función (u otra) hasta que detectase
el final de las hojas?

GRACIAS de antemano y, por favor... QUE ALGUIEN ME DIGA
ALGO!!
.

Preguntas similare

Leer las respuestas

#1 Heraclio Rivera
22/08/2003 - 18:15 | Informe spam
La verdad es que no conozco ninguna función que haga
específicamente lo que tú necesitas, pero una forma mas
controlada sería grabar ambas hojas con un formato de txt
(separando por comas las columnas), y de ahí sería mas
fácil comparar línea a línea (con un contador que te
simule el número de fila en que vas), con esto te ahorras
saber la dimensión de la planilla.

Ojalás te sirva.

Hola a todos!
Estoy haciendo una pequeña aplicación que, al
introducir dos hojas EXCEL, las tiene que comparar y
comprobar que son iguales, y en caso de que no lo sean
tiene que notificarlo y guardar las filas diferentes en
otra hoja. La cuestión es que por ahora lo único que se
me ocurre es hacer un bucle que recorra las 2 hojas e ir
comparando celda por celda hasta llegar al final de las
hojas , no sé si hay alguna función que pueda hacerlo más
automatizado.
Aparte me gustaría no tener que indicarle el final del
bucle, porque no sé que dimensión tienen las hojas.
Podría hacerlo esa función (u otra) hasta que detectase
el final de las hojas?

GRACIAS de antemano y, por favor... QUE ALGUIEN ME DIGA
ALGO!!
..


.

Respuesta Responder a este mensaje
#2 Rene Moreno
22/08/2003 - 19:15 | Informe spam
En VBA obtienes las cantidades de columnas, filas y celdas de la siguiente
manera:
total_de_columnas = Worksheets("Hoja1").Columns.Count
total_de_filas = Worksheets("Hoja1").Rows.Count
total_de_celdas = Worksheets("Hoja1").Cells.Count

Observacion: en Excel el numero de filas y columnas es fijo, filase536 y
columnas%6. Nunca varia el tamaño, los que varia es el tamaño d los rangos
definidos. EN tu caso no indicas si es la hoja completa o un rango de celdas
lo que comparas.

En VBA puedes usar este codigo

Sub COMPARA_CELDAS()
Hoja1 y Hoja2 es el nombre de cada objeto
For Each cel In Hoja1.Cells
If cel.Value <> Hoja2.Cells(cel.Row, cel.Column).Value Then
'suponiendo que es el valor de cada celda
'los que estas comparando
MsgBox "Las hojas no son iguales"
Exit For
End If
Next
End Sub

Espero te sirva.
Atte
Rene Moreno
"La imaginación es mas importante que el conocimiento"
Respuesta Responder a este mensaje
#3 Petit
26/08/2003 - 13:54 | Informe spam
Lo he conseguido!

Tuve que añadir unas cuantas cosas y cambiar otras, pero
la cosa ha ido bastante bien. Intenté pasarlo a fichero
de texto, pero vi que me iba a costar más el remedio que
la enfermedad (igual bien pensado está de lujo, pero yo
me compliqué aún más). Pero lo que mejor me vino fue el
bucle que pasó René, de lujo tío. Lo que pasa es que los
contadores de columna y fila son absolutos, de toda la
hoja, como bien me dijiste, y no resolvia el problema de
optimizar el número de comparaciones... hasta que
descubrí esta maravigliosa línea de código:

ActiveSheet.Cells.SpecialCells(xlLastCell).Activate

que se posiciona en la celda del límite inferior dcho. de
los datos de la hoja, con lo cual obtienes las
dimensiones exactas del rango. Seleccionas ese rango y
haces el "For each..." sobre este, con lo que ahorras una
cantidad de repeticiones del copón. Gracias a los dos.
Sólo una pregunta más, aunque no sé si vereis esto o no:
Llega un det. momento en el que si la hoja es grande (más
de 2000-3000 Kb), se bloquea y cuelga el equipo. Como
puedo hacer para que no se cuelgue, y poder comparar las
hojas más grandes?Me pasó con otra aplic, a partir de las
10000-20000 líneas colgaba la máquina.
GRACIAS DE TODAS FORMAS

Por cierto René, muy buena la frase tuya esta...
"La imaginación es mas importante que el conocimiento"
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida