z2xhrqhq publicó en la clase Instrucción Set: Lista de validación hace 1 semana
Hola sergio
si tengo un rango por ejemplo de 7 columnas y en las filas varian en numero
quiero encontrar on texto especifico y seleccionar las 7 columnas y ese texto encontrado quiero moverlo 3 o 4 columnas abajo despues de la ultima fila
que funcion podria utilizar o como podria hacerlo
muchas gracias
si tengo un rango por ejemplo de 7 columnas y en las filas varian en numero
quiero encontrar on texto especifico y seleccionar las 7 columnas y ese texto encontrado quiero moverlo 3 o 4 columnas abajo despues de la ultima fila
que funcion podria utilizar o como podria hacerlo
muchas gracias
Respuestas
JuliaBravo490 respondió hace hace 4 días:
Hola, Álvaro.
Prueba con este código y nos dejas saber si es lo que buscas:
Sub Buscar_Mover_Fila_Dinamico()
Dim ws As Worksheet
Dim RangoBuscar As Range
Dim celdaEncontrada As Range
Dim ultimaFila As Long
Dim ultimaColumna As Long
Set ws = ThisWorkbook.Sheets("Hoja1") ' Ajusta el nombre de la hoja
' Detectar automáticamente el rango utilizado en la hoja. En caso de que no quieras limitarlo solo a 7 columnas
ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Última fila con datos
ultimaColumna = ws.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column ' Última columna con datos
Set RangoBuscar = ws.Range(ws.Cells(1, 1), ws.Cells(ultimaFila, ultimaColumna)) ' Rango dinámico
' Buscar el texto específico
Set celdaEncontrada = RangoBuscar.Find(What:="TextoEjemplo", LookAt:=xlWhole) ' Reemplaza el texto buscado o usa una celda para tomar el dato
If Not celdaEncontrada Is Nothing Then
' Encontramos el texto, seleccionamos la fila completa
ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Detecta la última fila con datos
celdaEncontrada.EntireRow.Copy
ws.Cells(ultimaFila + 3, 1).PasteSpecial xlPasteValues ' Mueve la fila 3 filas abajo
MsgBox "Texto encontrado y movido correctamente"
Else
MsgBox "Texto no encontrado"
End If
Application.CutCopyMode = False
End Sub
Será un gusto saber si esto te ayuda. Adapta el código según tu necesidad.
Saludos,
Julia
Equipo DEZTACA
Prueba con este código y nos dejas saber si es lo que buscas:
Sub Buscar_Mover_Fila_Dinamico()
Dim ws As Worksheet
Dim RangoBuscar As Range
Dim celdaEncontrada As Range
Dim ultimaFila As Long
Dim ultimaColumna As Long
Set ws = ThisWorkbook.Sheets("Hoja1") ' Ajusta el nombre de la hoja
' Detectar automáticamente el rango utilizado en la hoja. En caso de que no quieras limitarlo solo a 7 columnas
ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Última fila con datos
ultimaColumna = ws.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column ' Última columna con datos
Set RangoBuscar = ws.Range(ws.Cells(1, 1), ws.Cells(ultimaFila, ultimaColumna)) ' Rango dinámico
' Buscar el texto específico
Set celdaEncontrada = RangoBuscar.Find(What:="TextoEjemplo", LookAt:=xlWhole) ' Reemplaza el texto buscado o usa una celda para tomar el dato
If Not celdaEncontrada Is Nothing Then
' Encontramos el texto, seleccionamos la fila completa
ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Detecta la última fila con datos
celdaEncontrada.EntireRow.Copy
ws.Cells(ultimaFila + 3, 1).PasteSpecial xlPasteValues ' Mueve la fila 3 filas abajo
MsgBox "Texto encontrado y movido correctamente"
Else
MsgBox "Texto no encontrado"
End If
Application.CutCopyMode = False
End Sub
Será un gusto saber si esto te ayuda. Adapta el código según tu necesidad.
Saludos,
Julia
Equipo DEZTACA