Seleccionar celdas que empiecen con texto esp.

Tenía una duda en la que ojalá me pudieran ayudar, en sí se trata de crear una macro que seleccione un rango de celdas de una columna, que empiecen con texto específico, o en este caso con una letra, A B C, etc.
La cuestión es que pueda seleccionar dentro de un rango, es decir, A-D (A, B, C y D), E-I, J-M, N-R, S-V y W-Z, ya que se trata de una lista de nombres, que constantemente aumenta, por lo que no es útil hacerlo con una macro normal, pues hoy pueden ser 10 celdas que empiecen con A-D, y mañana pueden ser 25, y luego 30, obviamente una macro que trabaje con algo fijo me marcará error, el único valor fijo será el rango donde buscará el texto en las celdas que puede ser A1:A2000, por ejemplo.
Esto es porque se vuelve tedioso seleccionarlas manualmente, por lo que me gustaría que estas se seleccionaran automáticamente, para que después cada selección, se cortara y pegara en su correspondiente hoja y así darle formato.
Ojalá me puedan echar una mano, nos vemos...
Respuesta
1
Una manera rápida puede ser con un filtro, manualmente. Luego seleccioná las filas que te devuelva el filtro para copiarla en tu otra hoja.
El filtro tomará toda la col hasta donde llegue.
Los criterios serían:
1er criterio: es mayor o igual que A (o letra que corresponda)
2do criterio: es menor que E (con este criterio te tomará desde A-D)
Si de todos modos necesitás hacerlo con macros, confírmame para que te la envíe, indicándome cómo le pedirás a la macro qué letras incluir (valores en celdas o InputBox)
Que tal, gracias por responder tan rápido, la macro sería algo como esto:
En Hoja1, pegaría los datos en la col A, de ahí me gustaría que filtrara las celdas que comienzan con la letra A hasta la DE, que se posicione en la celda A1, luego que las seleccione utilizando Ctrl + Shift + FlechaAbajo (esto es para que no marque error), una vez seleccionadas, que las corte y las pegue en la hoja A-D, empezando en la celda A1, hecho esto, regresamos a la Hoja1, quitamos el filtro y repetir procedimiento con E-I, J-M, N-R, S-V y W-Z, y básicamente es eso lo que necesito.
Te aclaro que traté de hacerlo con Autofiltro, pero obviamente no sirvió, así que ojalá me puedas echar la mano...
Nos vemos...
No tan obvio, porque sí podes hacerlo manualmente con autofiltros.
No importa, te haré la macro. Solo aclarame este pto: '... las pegue en la hoja A-D...', significa que hay 1 hoja por cada rango, ¿o la rutina tiene que crear las hojas y asignarle el nbre de los rgos?
Esperaré tus comentarios.
Sdos
Elsa
Que tal, perdón olvidé aclarar eso, las hojas ya están creadas, en total serían 7, Hoja1, A-D, E-I, J-M, N-R, S-V y W-Z, nos vemos...
Aquí está la rutina. Te faltaría seguir con los Case = 4 hasta 7 siguiendo el ejemplo de los 3 primeros.
Al final, como opcional, te dejé la línea para que borre la tabla original. Tratándose de eliminar registros, siempre es conveniente trabajar sobre 1 copia.
Entrá al Editor, insertá un módulo y allí copiá lo siguiente.
Sub Macro2()
' Macro desarrollada el 17/05/2009 por Elsamatilde
'
nro = 1
While nro < 8
Select Case nro
Case Is = 1
hoja = "A-D"
let1 = "A"
let2 = "E"
Case Is = 2
hoja = "E-I"
let1 = "E"
let2 = "J"
Case Is = 3
hoja = "J-M"
let1 = "J"
let2 = "N"
Case Is = 4
'completar el resto de los casos
Case Is = 5
Case Is = 6
Case Is = 7
End Select
Range("a1").Select
Selection.AutoFilter Field:=1, Criteria1:=">=" & let1, Operator:=xlAnd, _
Criteria2:="<" & let2
filafin = Range("A65536").End(xlUp).Row
Rows("2:" & filafin).Select
Selection.Copy
Sheets(hoja).Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
Selection.AutoFilter Field:=1
Application.CutCopyMode = False
nro = nro + 1
Wend
'OPCIONAL- BORRAR LA TABLA ORIGINAL
filafin = Range("A65536").End(xlUp).Row
Range("A2:A" & filafin).Delete
Que tal, la macro está excelente, excepto por un problema, la letra Z no la jala, pues es la última, intente ponerlo así:
Case is = 7
hoja = "W-Z"
let1 = "Z"
let2 = "0"
Y también let2= "" ó Criteria2:="<=", pero salió peor, pues ahora no jala la W, así que te agradecería alguna idea para poder jalar la Z, nos vemos...
Para el case 7, let2 = ZZ (difícilmente tengas un nbre que supere ese inicio)
Sdos
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas