Macro para filtrar datos

Hola tengo las siguiente macro:
Sub Turnos()
Dim TardeBingo As Range
Dim NocheBingo As Range
Dim FrancoBingo As Range
For Each TardeBingo In Worksheets("Cam Bin").Range("D2:D50")
If TardeBingo = "T" Then
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M20").End(xlUp).Offset(1, 0)
End If
Next TardeBingo
For Each NocheBingo In Worksheets("Cam Bin").Range("D2:D50")
If NocheBingo = "N" Then
NocheBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("N20").End(xlUp).Offset(1, 0)
End If
Next NocheBingo
For Each FrancoBingo In Worksheets("Cam Bin").Range("D2:D50")
If FrancoBingo = "F" Then
FrancoBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("O20").End(xlUp).Offset(1, 0)
End If
Next FrancoBingo
End Sub
El problema es que siempre me copia a partir de la fila 2 yo lo que necesito es elegir un lugar POR de la hoja por ejemplo "M20", "N20", "O20" por cada dato filtrado, pero por alguna razón me copia en la columna correcta pero en la fila 2.
Por otra parate necesitaría saber si puedo elegir de la columna que quiero filtrar mediante un imputbox y que me tire un error si se intruducen valores distintos a los números que van del 1 al 31 o si se introduce texto.

1 Respuesta

Respuesta
1
Tu instrucción:
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M20").End(xlUp).Offset(1, 0)
Está diciendo esto: que encuentre la última celda ocupada desde M20 hacia arriba (End(xlup) y de ahí que se posicione 1 celda más abajo (Offset(1,0).
Si querés copiar en M20, solo decile M20 y nada más
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M20")
Sdos
Elsa
http://aplicaexcel.galeon.com/index.htm
PD) Habiendo tantas consultas para responder, solo lo hacemos de a 1 x usuario. Cuando finalices este tema podrás dejar la nueva consulta y con mucho gusto te la atenderé o cualquier otro experto disponible.
Aclara x favor qué col necesitas filtrar para ajustar bien la macro.
Antes que nada gracias por tu atención, ya he intentado colocar la opción que me distes, pero el problema que tengo al colocar esta variante es que solo me copia un valor solo, es decir de por ejemplo de 10 que encuentra al colocarle
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M20")
copia el ultimo valor encontrado, tambien he intentado poner
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M20:M40")
Pero al poner esta variante me copia el ultimo valor encontrado y lo vuelve a repetir hasta "M40".
Yo lo que necesitaría es copiar todos los valores de la columna "C" siempre que en la columna "D" haya una "T" lo mismo con "N" y sucesivamente con otros valores de búsqueda, obviamente que para cada grupo de valores encontrados los debería copiar en distintos sectores de la hoja1 como por ejemplo al encontrar "T" los copiaría de "M20" para abajo. Gracias!
Si, me había olvidado que estabas dentro de un bucle.
Armalo así:
fila = 20

For Each TardeBingo In Worksheets("Cam Bin").Range("D2:D50")
If TardeBingo = "T" Then
TardeBingo.Offset(0, -1).Copy Destination:=Worksheets("hoja1").Range("M" & fila)

fila = fila+1
End If
Next TardeBingo

Lo mismo para cada bucle, colocando nuevamente el valor 20 a la variable

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas