Seleccionar un rango de filas a partir de seleccionar el nombre de la celda en vba excel.

Espero que me puedan ayudar, me gustaría seleccionar un rango de filas, a partir de seleccionar el nombre de la celda como se puede ver a continuación:

Dim i As Double
Dim final As Double
'Limpiamos los contenidos de la columna C
Worksheets("Hoja3").Range("C2:C65000").Select
Selection.ClearContents
'Calculamos el rango de los datos en la columna A
Worksheets("Hoja3").Select
final = Application.CountA(Worksheets("Hoja3").Range("a:a"))
For i = 2 To final
Nombres = Worksheets("Hoja3").Cells(i, 1).Value
'Mediante una condición contamos las veces que se repiten los nombres elegidos
If Nombres = "3250 " Then
Worksheets("Hoja3").Cells(i, 3).Value = Application.CountIf(Worksheets("Hoja3").Range("A1:A" & final), Nombres)
End If
Next

...

Estoy haciendo que me busque el numero "3250" y me cuente cuantas se repite.

Lo que me quiero hacer es que a partir del numero que busco me seleccione la celda en la que esta el numero (3250) y por siguiente me copie las 5 celdas de adelante, o el rango de filas.

Si me podrían ayudar se los agradecería

2 Respuestas

Respuesta
1

[Hola

No queda tan claro, es decir, el número 3250 se repite varias veces y quieres que por cada vez que se repita te copie las cinco celdas de ¿la derecha? Pero ¿qué las copie en dónde?

Abraham Valencia

exacto!!! cuando encuentre el numero 3250, en el momento me seleccione las cinco celdas de la derecha del numero(3250) ya encontrado y que por siguiente me copie las cinco celdas (que son palabras cortas), y se copien , y se peguen en la hoja2......

me di entender??

nota: todas los numeros 3250 me se selecciones las cinco celdas

Nota: toda las veces que se encuentra el numero 3250, se deben seleccionar las cinco celdas por delante

[Hola

Siguiendo con tu misma idea (yo lo haría con "Find") prueba esto:

Dim UltimaFila1 As Long, UltimaFila2 As Long, x As Long
Let UltimaFila1 = Worksheets("Hoja3").Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To UltimaFila1
    If Worksheets("Hoja3").Cells(x, 1).Value = 3250 Then
        Let UltimaFila2 = Worksheets("Hoja2").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Hoja3").Range("B" & x & ":F" & x).Copy Worksheets("Hoja2").Range("A" & UltimaFila2 + 1)
    End If
Next x

Ajusta los nombres de las hojas o los rangos a copiar según tu necesidad.

Abraham Valencia

hola!

La detectar el número (3250), ¿es para solo una columna en este caso Columna A?

Tal como en lo que enviaste, busca el valor en la columna "A".

Abraham Valencia

Abraham Valencia, ya casi está pero me da un error de que el objeto no admite esa propiedad o método :(

Y me marca otro error, no me selecciona el número 3250, me selecciona otro número y las cinco celdas de la derecha 

[Hola

Sospecho que no cambiaste los nombres de las hojas y/o los rangos correspondientes. Asimismo, quizá eso que ves como números es en realidad texto. Son varias cosas que pueden estar ocurriendo pero para no andar adivinando, sugiero coloques tu archivo en un "Drive" y compartas el enlace por aquí.

Saludos]

Abraham Valencia

Claro en un momento la subo :)

https://drive.google.com/drive/folders/1uifOe3oNFFLp8z7IHT2wljhMq7B669bS 

Hola Abraham Valencia, este es espero que me puedas ayudar y en serio muchas gracias

[Hola

Pues en tu mismo archivo no da ningún error por lo que asumo que lo más probable es que en tu primer intento no cambiaste los nombres de las hojas. En tu, aparente, segundo intento parecía que no copiaba/seleccionaba nada porque tampoco ajustaste el rango.

Mira este archivo/libro:

https://1drv.ms/x/s!ApkTgtnWCTgAjTj0qazYmBvYx27b 

Pero sobre todo, trata de entenderlo.

OJO con algo, el método de copiar ("copy") es un poco lento, hay formas más rápidas pero solo estoy siguiendo tus mismas pautas.

Abraham Valencia

Cual es la otra forma más rápida? 👀

ante todo gracias 

Enviar solo valores y no copiar propiamente dicho (solo si no deseas copiar el formato), usar filtro o "filtros avanzados" pero con VBA, etc. Es cuestión de que leas un poco más e, insisto, que trates de entender VBA, no solo copiar/pegar códigos.

Abraham Valencia

Tienes mucha razón, trataré de entender completamente el programa, por mientras muchas gracias por tu tiempo, me has ayudado mucho

Gracias por tu tiempo:)

93;

Abraham Valencia

Respuesta

Para copiar celda en base a referencia usa offset así:

cells(1,"H").offset(5,0).select

Significa que desde la celda h1 selecciones cinco filas hacia abajo y 0 columnas hacia la derecha

Este ejemplo te puede servir

https://youtu.be/UuyFcJnv5MM    

Visita https://programarexcel.com descarga cientos de ejemplos de macros gratis

suscribe a https://youtube.com/programarexcel mira tutoriales de macros gratis

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas