Tengo esta Macro para que en un rango de celdas ordenadas por valor en una columna, seleccionar por el valor 10

La Macro es:

Sub BuscarDatos_Española()
Call comenzar_las_macros_así
Dim ValorBuscado As String
Dim CeldaSuperior As Long, CeldaInferior As Long
Dim Buscar As Range
Let ValorBuscado = "10"
With Range("E10:E175")
Set Buscar = .Find(ValorBuscado, , , , , xlNext)
If Not Buscar Is Nothing Then
Let CeldaSuperior = Buscar.Row
End If
Set Buscar = Nothing
Set Buscar = .Find(ValorBuscado, , , , , xlPrevious)
If Not Buscar Is Nothing Then
Let CeldaInferior = Buscar.Row
End If
End With
Range("B" & CeldaSuperior & ":" & "E" & CeldaInferior).Copy Destination:=Sheets("Mejores").Range("V27")
End Sub

Y necesito rectificarla para que me seleccione los valores, van todos seguidos, desde el 8, 8,5, 9, 9,5, 10.

Osea todos los valores entre 8 y el 10

1 Respuesta

Respuesta
1

Prueba esta macro

Sub buscar_datos()
Set datos = Range("a10").CurrentRegion
With datos
    .Sort key1:=Range(.Columns(5).Address), order1:=xlAscending
    cuenta = WorksheetFunction.CountIfs(.Columns(5), ">=8", .Columns(5), "<=10")
    fila = WorksheetFunction.Match(8, .Columns(5), 0)
    .Rows(fila).Resize(cuenta).Copy
    Worksheets("mejores").Range("v27").PasteSpecial
End With
Set datos = Nothing
End Sub

Fatal

No tengo por donde cogerlo

Gracias

No entendí tu respuesta,¿sirvió o no?, ¿Y si no funciono?, ¿Qué fue lo que paso?

No tengo el rango, E10:E175.

Me lo pega en la misma hoja, desde B6 y no necesito ordenarlo porque ya esta hecho 

Me lo pega en la hoja, Mejores, en la casilla, W27

¿Puedes subir una pantalla de tu información solo para adecuar la macro a lo que necesitas?, lo que hice fue basarme en el funcionamiento de tu macro con datos que yo supongo que tenias no los reales. Ya con estos últimos puedo adecuarla.

E10:E175

No se le entiende nada, esta demasiado pequeña la imagen ni tampoco trae las referencias, en que referencia esta la primera columna, es decir los datos que área cubren a1:¿D175? ¿O b1 a e175?.

El rango es, B10:E175

Y las líneas donde están las numeraciones el rango de la columna es, E10:E175

Osea que el 8 ultimo esta en la celda, E45

Tendría que copiar el rango, B10:E45

Y pegar en la hoja, Mejores, en la celda, V27

Esta imagen es el resultado de la macro, como puedes ver en la hoja 1 hay 15 registros que son menores a 10 y mayores a 8, y esos 15 los manda a la hoja mejores poniéndolos en la celda v27

Sub copiar()
Set datos = Worksheets("hoja1").Range("e1:e175")
With datos
    Worksheets("mejores").Range("v27").CurrentRegion.ClearContents
    cuenta = WorksheetFunction.CountIfs(datos, "<=10", datos, ">=8")
    .Columns(-2).Resize(cuenta, 4).Copy
    Worksheets("mejores").Range("v27").PasteSpecial
End With
Set datos = Nothing
End Sub

Perfecto, pero un pero grande,

Me borra toda la hoja, Mejores,  y no necesito que borre nada

Elimina esta línea que es la que hace la función de borrado

 Worksheets("mejores"). Range("v27"). CurrentRegion. ClearContents

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas