Foros del Web » Soporte técnico » Ofimática »

[SOLUCIONADO] Comprobar si en un rango de celdas hay coincidencia

Estas en el tema de Comprobar si en un rango de celdas hay coincidencia en el foro de Ofimática en Foros del Web. Hola, El título no es todo lo completo que debería, intentaré ser lo más claro posible. Me gustaría poder detectar en un rango de celdas ...
  #1 (permalink)  
Antiguo 24/08/2013, 15:36
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 9 meses
Puntos: 0
Comprobar si en un rango de celdas hay coincidencia

Hola,

El título no es todo lo completo que debería, intentaré ser lo más claro posible.

Me gustaría poder detectar en un rango de celdas (sería una columna con aproximadamente 9000 celdas), coincidencias exactas. Me explico, supongamos que en la celda A3554 el contenido sea "pajarita para boda" y en la A8773 exactamente igual. El objetivo final sería que comprobara que hay coincidencia y una vez detectada añadir un 2 al final, si de nuevo hubiera coincidencia un 3 y así sucesivamente.

Para que quede más claro, si ése producto tuviera 3 coincidencias el objetivo sería que me devolviera:

pajarita para boda
pajarita para boda2
pajarita para boda3

Supongo que ésto no se puede hacer mediante fórmula, sino más bien con macros. En cualquier caso si alguien puede arrojarme un poco de luz y guiarme para conseguirlo estaré muy agradecido.

Saludos.
  #2 (permalink)  
Antiguo 24/08/2013, 16:00
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Comprobar si en un rango de celdas hay coincidencia

porq no usas buscar en ese tu rango y tu modificas a pajaritas 2 y 3 ???? me parece si es que no tenes demaciadas coincidencias !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #3 (permalink)  
Antiguo 24/08/2013, 16:08
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Uf, eso sería una carga de trabajo importante. Son cerca de 9000 celdas, de ellas unas 500 puede que tengan coincidencia, pero buscar una por una si coincide con otra es demasiado tedioso y me quitaría mucho tiempo que necesito.

Además ésto tendría que hacerlo cada no demasiado tiempo para distintos archivos. Gracias por la ayuda pero necesito algo que me lo automatice lo máximo posible.

¿Alguna otra idea?
  #4 (permalink)  
Antiguo 24/08/2013, 20:14
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Comprobar si en un rango de celdas hay coincidencia

Hola! El_LoBooo (y KATHYU).

a) Haz click derecho en la solapa de la hoja que contiene la información y selecciona: Ver código

b) En la ventana que se te abrirá copia y pega lo siguiente:

Código PHP:
Sub Diferenciar()
Rem ------------------
Rem By Cacho Rodríguez
Rem 
------------------

Dim Vec1myDic
Dim Q
&, i&, j&, iniTime!

iniTime Timer
Vec1 
Range([a1], Cells(Rows.Count"a").End(xlUp))
UBound(Vec1)
Set myDic CreateObject("Scripting.Dictionary")

1
While <= Q
  
If myDic.Exists(Vec1(i1)) Then
    j 
myDic(Vec1(i1))
    
myDic.Remove (Vec1(i1))
    
myDic.Add Vec1(i1), j
    Vec1
(i1) = Vec1(i1) & j
  
Else
      
myDic.Add Vec1(i1), 1
  End 
If
  
i
Wend

[f1].Resize(Q) = Vec1
MsgBox 
"Proceso terminado en: " Format(Timer iniTime"0.000 seg.")
Vec1 = Empty
myDic = Empty
End Sub 
c) Cierra todas las ventanas del ambiente Visual Basic for Application (VBA) en el que te encuentras y retorna al Excel.

d) Ejecuta la macro que recién acabas de incorporar: Diferenciar

e) En la suposición que tus datos se encuentrasen ubicados desde la celda A1 y hacia abajo, deberías obtener la solución en cuestión de décimas de segundos.

¿Te puede servir la idea?...
Saludos, Cacho R.
  #5 (permalink)  
Antiguo 25/08/2013, 05:49
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Hola mrocf!

¿Que si me puede servir la idea? ¡Es exactamente lo que buscaba!

Un millón de gracias, me has hecho ahorrar mucho tiempo.

Saludos
  #6 (permalink)  
Antiguo 25/08/2013, 09:23
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Buen macro !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #7 (permalink)  
Antiguo 25/08/2013, 10:01
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Cita:
Iniciado por El_LoBooo Ver Mensaje
Hola mrocf!
¿Que si me puede servir la idea? ¡Es exactamente lo que buscaba!
Un millón de gracias, me has hecho ahorrar mucho tiempo. Saludos
Me alegra que así sea, y gracias por avisar.
__________________________________________
Cita:
Iniciado por KATHYU Ver Mensaje
Buen macro !!!
¡Pero... Que comentario generoso! ¡Gracias!
  #8 (permalink)  
Antiguo 25/08/2013, 10:17
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Honor a quien honor merece mrocf !!!!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #9 (permalink)  
Antiguo 16/11/2013, 10:30
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Comprobar si en un rango de celdas hay coincidencia

Cita:
Iniciado por mrocf Ver Mensaje
Hola! El_LoBooo (y KATHYU).

a) Haz click derecho en la solapa de la hoja que contiene la información y selecciona: Ver código

b) En la ventana que se te abrirá copia y pega lo siguiente:

Código PHP:
Sub Diferenciar()
Rem ------------------
Rem By Cacho Rodríguez
Rem 
------------------

Dim Vec1myDic
Dim Q
&, i&, j&, iniTime!

iniTime Timer
Vec1 
Range([a1], Cells(Rows.Count"a").End(xlUp))
UBound(Vec1)
Set myDic CreateObject("Scripting.Dictionary")

1
While <= Q
  
If myDic.Exists(Vec1(i1)) Then
    j 
myDic(Vec1(i1))
    
myDic.Remove (Vec1(i1))
    
myDic.Add Vec1(i1), j
    Vec1
(i1) = Vec1(i1) & j
  
Else
      
myDic.Add Vec1(i1), 1
  End 
If
  
i
Wend

[f1].Resize(Q) = Vec1
MsgBox 
"Proceso terminado en: " Format(Timer iniTime"0.000 seg.")
Vec1 = Empty
myDic = Empty
End Sub 
c) Cierra todas las ventanas del ambiente Visual Basic for Application (VBA) en el que te encuentras y retorna al Excel.

d) Ejecuta la macro que recién acabas de incorporar: Diferenciar

e) En la suposición que tus datos se encuentrasen ubicados desde la celda A1 y hacia abajo, deberías obtener la solución en cuestión de décimas de segundos.

¿Te puede servir la idea?...
Saludos, Cacho R.
hola mrocf!! tengo un poblema con una macro y no se como poder hacer la pregunta... y que me pudieras ayudar... sigo tus respuestas en otras preguntas que te hace y son geniales... espero tu respuesta. Gracias

Etiquetas: celdas, macros, rango
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.