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

buscar cadena en celdas

Estas en el tema de buscar cadena en celdas en el foro de Ofimática en Foros del Web. Hola a tod@s, tengo un excel con unas 3000 filas, necesito filtrarlas para que solo aparezcan las que tienen ciertas palabras, es una lista de ...
  #1 (permalink)  
Antiguo 23/02/2006, 06:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
buscar cadena en celdas

Hola a tod@s, tengo un excel con unas 3000 filas, necesito filtrarlas para que solo aparezcan las que tienen ciertas palabras, es una lista de materias y tengo que filtrar las que sean sólidas, es decir, debo filtrar las filas cuya celda "materia", contengan la palabra "sólido". El problema no es tan sencillo. Ocurre que ademas de "sólido" hay mas palabras que identifican a una materia como solido:"sólida","sólidos","sólidas","polvo",etc.He intentado varias cosas:

1. Hacer un bucle que recorra las filas, en este bucle se compara cada celda-materia con la palabra "solido" usando instr("cad1","cad2"), el problema es q si para una denominacion tarda mucho imaginaros para varias.

2. Usar repetidamente autofiltros mediante VBA, el problema es q necesito q todas las materias solidas, una vez filtradas, aparezcan a la vez.

3. Usar filtros avanzados, pero creo q aqui solo te selecciona las celdas que empiezan por "sólido","sólida",..... y no las que contienen esas palabras.

¿Alguien me podria dar alguna idea de como hacerlo?. Muchas gracias y perdonar si me enrolle demasiado. Chao
  #2 (permalink)  
Antiguo 23/02/2006, 08:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
No es muy complicado lo que pides. Por lo que veo sabes utilizar filtros avanzados, pero te falta un pequeño detalle que pueden hacer que es fitrar teniendo en cuenta varias posibilidades.
Escribe en los criterios del filtro esto:
- Celda A1: Material (título para la columna que quieres filtrar)
- Celda A2: Sólido
- Celda A3: Sólida
- Celda A4: Sólidos
- Celda A5: Sólidas
- Celda A6: Polvo

Haz que los criterios del fitro vayan desde A1 hasta A6. Con esto filtras todas las filas que tengan en material cualquiera de estas palabras.
Además, si te creas una macro que te lea lo que escribes en la primera celda de tus criterios (A2) y en función de ello que te escriba todas las demás palabras te resultará más sencillo.
Y para mejorarlo incluso, puedes en A2 hacer una validación (datos-validación) de una lista constante con todas las distintas posibilidades de material que pueda haber (sólido, líquido, gaseoso, gelatinoso, etc, o algo así) de forma que sólo puedas elegir uno de ellos y facilitarte así la macro anterior.

Espero que te sirva y si tienes alguna duda sobre lo que he intentado explicarte de forma rápida comentamelo.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #3 (permalink)  
Antiguo 24/02/2006, 03:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Gracias PotyPoty por tu respuesta, el filtro avanzado q dices ya lo hice, pero el problema es el q comentaba en el otro post, solo aparecen las celdas q empiezan por y no q contienen las palabras del criterio del rango. Programe este filtro para ejecutarlo con un boton:
Public Sub filtro_solidos()
Range("C45").Select
Range("C1:C2782").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D2959:D2964"), Unique:=True
End Sub

C1:C2782 son las filas a filtrar y D2959:D2964 es el criterio donde puse lo q tu me dijiste. ¿Puedes darme alguna idea?. Chao y gracias
  #4 (permalink)  
Antiguo 24/02/2006, 03:58
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Lo que pides es un poco más complejo y debería hacer alguna prueba antes.
Quieres haces un filtro que localice palabras (solido,solida,polvo,etc) en una columna donde no están solas. Ej: estado solido, mucho polvo, etc.
Si lo he entendido mal comentamelo y explicamelo bien, para no perder el tiempo y si está correcto me gustaría que me mandaras bien el programa o bien algunas filas y columnas de tu base de datos para observar cómo lo tienes y ver si se me ocurre algo diferente al filtro, que pueda realizar lo que deseas.
En espera de tu respuesta, un saludo.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #5 (permalink)  
Antiguo 26/02/2006, 15:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Q tal Potypoty, gracias por tu interes. Estas en lo cierto, debo seleccionar celdas q contengan la palabra sólido, líquido..... Dado q el tiempo me apremia he ideado una forma de hacerlo (poco elegante, pero bueno).
He hecho una funcion q busca en cada celda la palabra a buscar y en una celda contigua escribe sd si es una materia solida o lq si es liquida. El bucle q ejecuta es muy rápido no como el otro q hice q ocultaba celdas. Ahora con estas nuevas celdas, solo tengo q programar el autofiltro para q elija sd o lq.
Este es el codigo:
Public Sub solidos2()
'Call todas
Dim cad As String
cad = "ÁCIDO"
'cad2 = "polvo"
Dim fila As Long
fila = 1
Dim i, j, x As Integer
j = 0
For x = 1 To Range("c2").End(xlDown).Row
i = InStr(Cells(fila, 3).Value, cad) ' Devuelve el numero de caracteres hasta q aparece cad, si no la encuentra devuelve cero
'j = InStr(Cells(fila, 3).Value, cad2)
If i <> 0 Then
Cells(fila, 7).Value = "lq"
j = j + 1
'Cells(fila, 3).EntireRow.Hidden = True
End If
fila = fila + 1
Next
Range("A1").Select
MsgBox ("Listo. Se cambiaron " & j & " registros")
End Sub
Me gustaria, dado tu interes, enviarte el Excel para q lo vieras pero no encontre como adjuntar archivos o tu email
  #6 (permalink)  
Antiguo 27/02/2006, 02:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Para adjuntar mensajes en este foro yo tampoco sé dónde ponerlos, pero puedes ir a www.mytempdir.com y colgarlo de allí temporalmente. Después colocas la dirección que te de la página aquí en el foro y así podré acceder a él.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
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 23:22.