comparación de datos dentro de una misma fila

09/12/2007 - 20:12 por fali | Informe spam
Estoy como loco intentando comparar los campos dentro de una misma fila. La
cuestión es que tengo una tabla con más de cien filas y 35 columnas. Los
datos son del siguiente tipo, por ejemplo MA1234.En cada fila, un mismo
dato se puede repetir en varias columnas y además hay registros vacios.Lo
que intento es quitar los datos repetidos de cada fila, y que aparezcan una
sola vez cada dato.
Toda la comparación es dentro de una fila.
Como puedo hacerlo, estoy como loco y no llego a ello.

Preguntas similare

Leer las respuestas

#1 Ivan
09/12/2007 - 21:47 | Informe spam
tengo una tabla con más de cien filas y 35 columnas. Los
datos son del siguiente tipo, por ejemplo MA1234.En cada fila, un mismo
dato se puede repetir en varias columnas y además hay registros vacios.Lo
que intento es quitar los datos repetidos de cada fila, y que aparezcan una
sola vez cada dato.



hola

creo que hay muchos detalles que quedan en el aire, pej si solo lo vas
a ejecuter una vez (para poner un rango variable), si tienes filas de
titulos, si quieres eliminar las celdas vacias, si quieres que las
celdas no repetidas se queden en su sitio o que se junten todas en las
1as columnas, ... y seguramente alguno mas que se me pasa)

de todas formas si quieres prueba con estas posibilidades (con
copias) : la 1ª te deja los datos unicos por fila sin celdas vacias
entre medias. La 2ª te deja los unicos en su 1ª posicion de la fila y
borra los repetidos)


''**copiar/pegar en modulo norma,. Para abrir el editor de VBA Alt+F11
'' una vez en el editor => menu insertar => modulo
'--
'''--para no dejar celdas vacias en las filas, agrupando
' las unicas en las primeras columnas
'
Sub FilasSinRepes(nroFilas As Integer, nroCols As Byte)
Application.ScreenUpdating = False
Dim nF As Integer, nC As Integer
For nF = nroFilas To 1 Step -1
For nC = nroCols To 1 Step -1
With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Or .Value = "" Then
.Delete shift:=xlShiftToLeft
End With
Next
Next
End Sub
'cambia 921 por el nº de la ultima fila y 35 por el de
' la ultima columna y llama a esta macro desde el cuadro macros
'
Sub test()
FilasSinRepes 921, 35
End Sub


'''--para borrar las repes pero dejar las unicas en su sitio
'
Sub FilasSinRepes_2(nroFilas As Integer, nroCols As Byte)
Application.ScreenUpdating = False
Dim nF As Integer, nC As Integer
For nF = nroFilas To 1 Step -1
For nC = nroCols To 1 Step -1
With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Then _
.ClearContents
End With
Next
Next
End Sub
'cambia 921 por el nº de la ultima fila y 35 por el de
' la ultima columna y llama a esta macro desde el cuadro macros
'
Sub test_2()
FilasSinRepes_2 921, 35
End Sub
'***********************************************

a ver que tal

un saludo
Ivan
Respuesta Responder a este mensaje
#2 fali
09/12/2007 - 23:32 | Informe spam
Gracias Ivan, he intentado con la primera macro pero a la hora de ejecutarla
me aparece un error que dice error de compilación: End with sin with

con lo cual no puedo probar que falla?

> tengo una tabla con más de cien filas y 35 columnas. Los
> datos son del siguiente tipo, por ejemplo MA1234.En cada fila, un mismo
> dato se puede repetir en varias columnas y además hay registros vacios.Lo
> que intento es quitar los datos repetidos de cada fila, y que aparezcan una
> sola vez cada dato.

hola

creo que hay muchos detalles que quedan en el aire, pej si solo lo vas
a ejecuter una vez (para poner un rango variable), si tienes filas de
titulos, si quieres eliminar las celdas vacias, si quieres que las
celdas no repetidas se queden en su sitio o que se junten todas en las
1as columnas, ... y seguramente alguno mas que se me pasa)

de todas formas si quieres prueba con estas posibilidades (con
copias) : la 1ª te deja los datos unicos por fila sin celdas vacias
entre medias. La 2ª te deja los unicos en su 1ª posicion de la fila y
borra los repetidos)


''**copiar/pegar en modulo norma,. Para abrir el editor de VBA Alt+F11
'' una vez en el editor => menu insertar => modulo
'--
'''--para no dejar celdas vacias en las filas, agrupando
' las unicas en las primeras columnas
'
Sub FilasSinRepes(nroFilas As Integer, nroCols As Byte)
Application.ScreenUpdating = False
Dim nF As Integer, nC As Integer
For nF = nroFilas To 1 Step -1
For nC = nroCols To 1 Step -1
With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Or .Value = "" Then
.Delete shift:=xlShiftToLeft
End With
Next
Next
End Sub
'cambia 921 por el nº de la ultima fila y 35 por el de
' la ultima columna y llama a esta macro desde el cuadro macros
'
Sub test()
FilasSinRepes 921, 35
End Sub


'''--para borrar las repes pero dejar las unicas en su sitio
'
Sub FilasSinRepes_2(nroFilas As Integer, nroCols As Byte)
Application.ScreenUpdating = False
Dim nF As Integer, nC As Integer
For nF = nroFilas To 1 Step -1
For nC = nroCols To 1 Step -1
With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Then _
.ClearContents
End With
Next
Next
End Sub
'cambia 921 por el nº de la ultima fila y 35 por el de
' la ultima columna y llama a esta macro desde el cuadro macros
'
Sub test_2()
FilasSinRepes_2 921, 35
End Sub
'***********************************************

a ver que tal

un saludo
Ivan


Respuesta Responder a este mensaje
#3 Ivan
10/12/2007 - 00:33 | Informe spam
On 9 dic, 23:32, fali wrote:
Gracias Ivan, he intentado con la primera macro pero a la hora de ejecutarla
me aparece un error que dice error de compilación: End with sin with

con lo cual no puedo probar que falla?



hola,
tienes razon, falta un guion bajo de continuacion de linea (no se si
se lo ha comido el foro o yo mismo.

dentro del bloque with despues de 'Then' falta un espacio y un guion
bajo. El bloque With debe quedar asi:

With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Or .Value = "" Then _
.Delete shift:=xlShiftToLeft
End With

a ver que tal, a mi en mis pruebas, previas al anterior mensaje
parecia irme bien. Con 921 registros, 35 columnas y muchas
repeticiones el 1er codigo tardaba - de 2 segundos y el 2º apenas 1,
pero:

OJO: si los registros/filas pudieran ser muchos, muchos mas
[pej:varios miles o decenas de miles] podria ralentizarse bastante, y
quizas habria que mirar otras soluciones

un saludo
Ivan
Respuesta Responder a este mensaje
#4 fali
10/12/2007 - 21:37 | Informe spam
Hola Ivan.
Gracias por tu información me ha sido muy útil,que sepas que ha funcionado
perfectamente con más de cuatro mil filas y la ejecución ha sido rápida .
Por cierto recomiendame como o donde podría aprender a formular las macros,
ya que voy a necesitar utilizarlas con frecuencia. Un saludo

"Ivan" wrote:

On 9 dic, 23:32, fali wrote:
> Gracias Ivan, he intentado con la primera macro pero a la hora de ejecutarla
> me aparece un error que dice error de compilación: End with sin with
>
> con lo cual no puedo probar que falla?

hola,
tienes razon, falta un guion bajo de continuacion de linea (no se si
se lo ha comido el foro o yo mismo.

dentro del bloque with despues de 'Then' falta un espacio y un guion
bajo. El bloque With debe quedar asi:

With Cells(nF, nC)
If Application.CountIf(Range(Cells(nF, 1), _
Cells(nF, nC)), .Value) > 1 Or .Value = "" Then _
.Delete shift:=xlShiftToLeft
End With

a ver que tal, a mi en mis pruebas, previas al anterior mensaje
parecia irme bien. Con 921 registros, 35 columnas y muchas
repeticiones el 1er codigo tardaba - de 2 segundos y el 2º apenas 1,
pero:

OJO: si los registros/filas pudieran ser muchos, muchos mas
[pej:varios miles o decenas de miles] podria ralentizarse bastante, y
quizas habria que mirar otras soluciones

un saludo
Ivan

Respuesta Responder a este mensaje
#5 Ivan
11/12/2007 - 00:29 | Informe spam
hola,

me alegro te haya servido

or cierto recomiendame como o donde podría aprender a formular las macros,


ya que voy a necesitar utilizarlas con frecuencia.





al final te pego una respuesta de Hector Miguel sobre el tema, a la
vez dada por otro forero a un cuarto .

y por mi parte te pego una respuesta que di hace poco (no porque sea
mia, lo cual es poco de fiar, sino porque ya esta escrita y me resulta
mas facil pegartela tal cual que exrtractarla=>

-
.. a base de recorrer los foros y la web consultando y/o
leyendo las consultas ajenas, descargar 'algun manual' (e incluso
imprimirlo y encuadernarlo/encanutarlo), comprar 'algun libro' y por
ultimo, aunque quizas de lo mas importante, empeñandome en conseguir
entender la ayuda (F1) que al principio me parecia chino y que sin
darte cuenta vas consiguiendo 'comprenderr'.

y por supuesto todo ello unido a los chichones producidos por darte
una y mil veces contra un muro hasta que encuentras [ o te das cuenta
que tiene] una puerta.

aunque suele suceder que para abrirla existen muy variadas formas
[incluso puede estar abierta y haberte tirado horas, dias, etc
intentando abrirla] y raro es que no vuelvas a hacerte algun chichon
que otro

y,..., a ver que hay en el otro lado .

bueno, en definitiva, para mi gusto, aparte de la practica en si
misma, la mejor escuela son los diversos foros en los que sueles
encontrar gente dispuesta a despejar casi cualquier duda sin pedir
nada a cambio. A lo sumo agradeciendo un cierto feed-back

de todas formas al final te pongo un libro que para mi gusto es una
maravilla (es un poco carillo pero creo que mecrece la pena si te lo
puedes permitir <y no llevo comision, je, je,..>)

y uno de esos manuales que a mi me vino muy bien. Trata sobre VBA en
access, pero en todo lo referido al manejo de estructuras, funciones,
procedimientos, variables, objetos, en fin todos los elementos que
componen el entramado VBA es comun a excel. Si quieres centrarte en
excel no hace falta que entres en las caracteristicas de acces (yo de
hecho lo tengo imprimido a falta de alguna entrega de los ultimos
tiempos, y no tengo ni la mas rtemota idea de access) sino en todo lo
que te he comentado

al fin y al cabo, una vez que sepas +/- estructurar en el lenguaje y
que comprendas +/- su logica de funcionamiento, el resto suele ser
utilizar un tipo de objetos en vez de otros, con sus propiedades,
metodos, etc.

Y para esto lo mejor suele ser F1 y aunque un poco menos claro, pero
tambien muy util cuando vas aprendiendo, el explorador de objetos (F2)
donde puedes ir viendo los diversos componentes de las colecciones,
objetos, etc (Este lenguaje <objetos, colecciones, variables, metodos,
propiedades, tipos de datos, etc,..> aunque ahora te extrañe, si te
animas pronto te resultara evidente)

bueno, disculpa el rollo/sermon, y aqui van el Libro:

"Excel 2003. Programacion con VBA" de John Walkenbach, yo lo tengo en
editorial Anaya multimedia

y el manual (que por cierto no se si estara incluido entre los del
foro):

"Comencemos a programar con VBA - Access" de Eduardo Olaz y que puedes
descargar/ver desde esta pagina:

http://www.olaz.net

aparte de multitud de sitios en la web (tira de [ex]san google), que
tu mismo tendras que encargarte de juzgar si te interesan o no

bueno, lo dicho, disculpa el toston y que tengas suerte

un saludo
Ivan

''''''''--respuesta de Insumnos a una consulta sobre el tema,
facilitando una respuesta de HM


Insumnos dixit=>"Fijate si esta respuesta de Hector Miguel te sirve: "


hola, ???



Hay alguna forma de descargar algun excelente manual.
Gracias Ante todo y me regalan alguan dire wwww




en cuanto a alguna 'recomendacion' por material de aprendizaje
[generalmente
'mi' respuesta es la que te 'apunto' al final]...
[ademas] acostumbro 'afirmar' que: "cada quien avanza, al 'ritmo' que
quiere/puede/necesita/..." :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


-> me gustaria decirte que leyendo 'tales o cuales' libros ... [pero,
estaria siendo 'excluyente'] ;)
todo material de estudio [manuales, {F1}, libros, revistas,
cursos,
web's, estos foros, etc.] ->es excel...ente<-
ademas considera que [en muchas de las ocasiones]
-> 'buscando una cosa'... 'encuentras otra' [que se te habia
'perdido']
-> o ['te topas' con] 'la hermana que se escapo de su prision'
[sor-presa... NO esta !!!] :))


-> cuando 'se atora la carreta' [que nos sucede a todos] :-(
NO es 'imprescindible' saberlo todo ;) es suficiente con
saber...
el telefono del que sabe... o el e-mail... o la web... o... por
que no
consultas en el foro? :D


aunque [supongo que de algun modo] no 'escaparas' de consultar al
asistente
{F1} de excel/vba...
encontraras [algunos] manuales/instructivos/cursos/etc. en las
siguientes
direcciones:
[aunque... 'calificarlo/s' de sencillos/complicados/completos/
buenos/...
dependera de factores 'personales'] :D


una lista de manuales y tutoriales [ingles]
http://www.virtualhelpdeskcentral.c...asp?SiteID&NoGU...
goryID


algunas paginas en ingles...
Charles Williams (DecisionModels): http://www.decisionmodels.com/
Tushar Mehta: http://www.tushar-mehta.com/excel/
Laurent Longre: http://xcell05.free.fr/
Rob Bovey: http://www.appspro.com/Tips/Tips_And_Tricks.htm
Stephen Bullen' Excel MVP's page: http://www.bmsltd.ie/MVP/Default.htm
Jurgen Volkerink (KeepItCool):
http://members.chello.nl/keepitcool/addins.html
Matt Evans: http://www.exinfm.com/free_spreadsheets.html
Karl Peterson: http://vb.mvps.org/samples/
Bob Umlas: http://www.emailoffice.com/excel/ar...umlas.html
Carlo Quintero: http://www.mztools.com/
Van Gelder: http://homepages.paradise.net.nz/~robree/excel/
MiStupid (Training Online): http://mistupid.com/tutorials/excel/
ExtremeVBTalk(newsgroup): http://www.visualbasicforum.com/


algunas paginas en castellano...
http://www.franciscopascual.com/Arc...202002.zip
http://www.javeriana.edu.co/decisio...ejercicios
http://www.javeriana.edu.co/cursad/...iento.html
http://members.fortunecity.es/tonelorc/eexcel.html
http://www.aulaclic.es/excel2000/f_excel2000.htm
http://64.226.188.26/sivnetwork-www/cursos_gratis/excel/Excel.htm
http://www.territoriopc.com/excel/
http://interinfo.iespana.es/interin...nuales_...
http://www.fullwebs.com.uy/endondee.../excel.pdf
http://office.arnulfoperez.com/excel/
http://lacher.com/toc.htm
http://www.sistemaslym.net/vba/excel/excel.html
http://es.geocities.com/lacibelesde...macros.htm
http://es.geocities.com/lacibelesde...acros1.htm
http://www.macroheavy.com/excel/excel.asp
http://www.geocities.com/gorita_2000/VBA.htm
http://www.excelavanzado.com/
http://www.xtec.es/~rlloren4/KBEsp2.htm
http://www.exceluciones.com/portal/...hp?article
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida