Note: The other languages of the website are Google-translated. Back to English

¿Cómo mover la fila completa a otra hoja según el valor de la celda en Excel?

Para mover una fila completa a otra hoja según el valor de la celda, este artículo lo ayudará.

Mueva toda la fila a otra hoja según el valor de la celda con código VBA
Mueva toda la fila a otra hoja según el valor de la celda con Kutools para Excel


Mueva toda la fila a otra hoja según el valor de la celda con código VBA

Como se muestra en la siguiente captura de pantalla, debe mover toda la fila de Sheet1 a Sheet2 si existe una palabra específica "Listo" en la columna C. Puede probar el siguiente código VBA.

1. Prensa otro+ F11 teclas simultáneamente para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. En la ventana de Microsoft Visual Basic para Aplicaciones, haga clic en recuadro > Módulo. Luego copie y pegue el siguiente código VBA en la ventana.

VBA code 1: Move entire row to another sheet based on cell value

Sub Cheezy()
'Updated by Kutools for Excel 2017/8/28
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Done" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Nota:: En el código, Sheet1 es la hoja de trabajo que contiene la fila que desea mover. Y Sheet2 es la hoja de trabajo de destino donde ubicará la fila. "C: C"Es la columna que contiene el valor determinado y la palabra"Terminados”Es el valor seguro en el que moverá la fila. Cámbielos según sus necesidades.

3. presione el F5 para ejecutar el código, la fila que cumpla con los criterios en Sheet1 se moverá a Sheet2 inmediatamente.

Nota:: El código VBA anterior eliminará las filas de los datos originales después de pasar a una hoja de trabajo específica. Si solo desea copiar filas según el valor de la celda en lugar de eliminarlas. Aplica el siguiente código VBA 2.

VBA code 2: Copy entire row to another sheet based on cell value

Sub MoveRowBasedOnCellValue()
'Updated by Extendoffice 2017/11/10
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
    If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Mueva toda la fila a otra hoja según el valor de la celda con Kutools para Excel

Si eres novato en el código VBA. Aquí les presento el Seleccionar celdas específicas utilidad de Kutools for Excel. Con esta utilidad, puede seleccionar fácilmente todas las filas según un determinado valor de celda o diferentes valores de celda en una hoja de trabajo, y copiar las filas seleccionadas a la hoja de trabajo de destino según lo necesite. Haz lo siguiente.

Antes de aplicar Kutools for Excel, Por favor descargarlo e instalarlo en primer lugar.

1. Seleccione la lista de columnas que contiene el valor de celda en el que moverá las filas, luego haga clic en Kutools > Seleccione > Seleccionar celdas específicas. Ver captura de pantalla:

2. En la apertura Seleccionar celdas específicas cuadro de diálogo, elija Fila completa en el capítulo respecto a la Tipo de selección sección, seleccionar Equivale en el capítulo respecto a la Tipo específico lista desplegable, ingrese el valor de la celda en el cuadro de texto y luego haga clic en el OK

Otra Seleccionar celdas específicas El cuadro de diálogo aparece para mostrarle el número de filas seleccionadas, y mientras tanto, todas las filas contienen el valor especificado en la columna seleccionada. Ver captura de pantalla:

3. presione el Ctrl + C claves para copiar las filas seleccionadas y luego pegarlas en la hoja de trabajo de destino que necesita.

Nota:: Si desea mover filas a otra hoja de trabajo en función de dos valores de celda diferentes. Por ejemplo, mueva filas según los valores de celda, ya sea "Listo" o "Procesando", puede habilitar el Or condición en el Seleccionar celdas específicas cuadro de diálogo como se muestra a continuación:

  Si desea tener una prueba gratuita (30-día) de esta utilidad, haga clic para descargarloy luego vaya a aplicar la operación según los pasos anteriores.


Artículos relacionados:


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (299)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Hola, Encontré esta guía en particular realmente útil sobre otras que he visto. ¡Gracias! El problema que tengo es que si cambio mi valor deseado a 'Cerrado', tengo que ejecutar F5 para mover la fila. Me gustaría que se moviera automáticamente. Soy nuevo en Excel por lo que su ayuda es muy apreciada. Sub Cheezy() Dim xRg As Range Dim xCell As Range Dim I As Long Dim J As Long I = Worksheets("ECR Incident Tracker").UsedRange.Rows.Count J = Worksheets("Problemas resueltos").UsedRange.Rows. Contar si J = 1 Entonces si Aplicación.Función de hoja de trabajo.CuentaA(Hojas de trabajo("Problemas resueltos").Rango usado) = 0 Entonces J = 0 Terminar si Establecer xRg = Hojas de trabajo("Rastreador de incidentes de ECR").Rango("B1:B" & I) En caso de error, reanudar la siguiente aplicación.Actualización de pantalla = Falso para cada xCell en xRg Si CStr(xCell.Value) = "Cerrado" Entonces xCell.EntireRow.Copiar destino:=Hojas de trabajo("Problemas resueltos").Rango("A" & J + 1) xCell.EntireRow.Delete J = J + 1 End If Next Application.ScreenUpdating = True End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy tratando de automatizar el movimiento de las celdas sin tener que abrir el módulo y presionar F5 también. ¿Alguna vez resolviste esta pregunta? ¡Gracias de antemano!
Este comentario fue minimizado por el moderador en el sitio
Crystal brindó información sobre cómo hacer eso hoy: eche un vistazo a la página uno de este hilo para ver su respuesta. Mueve automáticamente la fila con la fecha de hoy en una columna (L en mi caso) a una hoja de trabajo diferente.
Este comentario fue minimizado por el moderador en el sitio
Estoy ejecutando este código y estoy tratando de mover una fila en función de la fecha de hoy que aparece en la columna I. Cambié Range("B1:B" & I) para leer Range(I1:I" & I). He cambiado " Hecho" en su ejemplo hasta la fecha. Sin embargo, cuando la fecha de hoy aparece en cualquier lugar de la fila, no solo en la columna I como se requiere, la fila se mueve a la hoja de cálculo alternativa. ¿Alguna idea de por qué sucede esto y cómo puedo mover la fila? solo cuando la fecha de hoy está en la columna I, independientemente de si la fecha de hoy aparece en otras columnas?
Este comentario fue minimizado por el moderador en el sitio
Si quisiera tener muchos valores y muchas hojas para mover mi fila, ¿tendría que escribir todo el código nuevamente con un valor diferente para esa celda? Es decir, si pongo NA en una celda, irá a la hoja Na, y si pongo W#, irá a la hoja de números equivocados, etc.
Este comentario fue minimizado por el moderador en el sitio
hola, esto fue muy útil. ¿Hay alguna manera de hacer esto sin que la fila de datos se mueva a la segunda hoja, sino que se copie? Entonces, ¿los datos permanecerían en ambas hojas?
Este comentario fue minimizado por el moderador en el sitio
Hola, el código fue muy útil, pero en lugar de copiar toda la fila, necesito que se mueva una cierta selección de fila a la siguiente hoja. ¿Cómo puedo definir un rango en lugar de una fila completa? Sub Cheezy() Dim xRg As Range Dim xCell As Range Dim I As Long Dim J As Long I = Worksheets("Sheet1").UsedRange.Rows.Count J = Worksheets(" Sheet2").UsedRange.Rows.Count Si J = 1 Entonces si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces J = 0 End If Set xRg = Worksheets("Sheet1").Range( "C1:C" e I) En caso de error, reanudar la siguiente aplicación. Actualización de pantalla = Falso para cada xCell en xRg Si CStr(xCell.Value) = "Terminado", entonces xCell.Fila completa.Copiar destino:=Hojas de trabajo("Hoja2").Rango("A" & J + 1) J = J + 1 Finalizar si es la siguiente aplicación.Actualización de pantalla = True End Sub
Este comentario fue minimizado por el moderador en el sitio
¿Cuál sería el código si quiero copiar filas (celdas específicas) en otra hoja a celdas específicas? PERO también basado en un valor Ejemplo: cadena de imágenes de productos de color white blender 2 whiteblender2 black juicer 3 blackjuicer3 red tv 1 redtv1 green iron 4 greeniron4 Me gustaría que la cadena se copiara en otra hoja, pero el número en la columna de imágenes indica cuántas veces se debe copiar (entonces, en este caso, la cadena blender se debe copiar en 2 filas
Este comentario fue minimizado por el moderador en el sitio
Hola, Muy buena pieza de código, funciona muy bien. ¿Cómo cambiar este código para mover filas de una tabla a otra tabla, en lugar de una hoja a otra hoja? Muchas gracias !
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy tratando de usar el código pero recibo un error de sintaxis en Dim xCell As Range. Me puede ayudar por favor ?
Este comentario fue minimizado por el moderador en el sitio
Sub Cheezy() Dim xRg As Range Dim xCell As Range Dim I As Long Dim J As Long I = Worksheets("Sheet1").UsedRange.Rows.Count J = Worksheets("Sheet2").UsedRange.Rows.Count If J = 1 Entonces si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces J = 0 End If Set xRg = Worksheets("Sheet1").Range("C1:C" & I) On Error Resume Next Application.ScreenUpdating = False para cada xCell en xRg If CStr(xCell.Value) = "Done" Entonces xCell.EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1) xCell. EntireRow.Delete J = J + 1 End If Next Application.ScreenUpdating = True End Sub ¿cómo se puede agregar una segunda hoja de trabajo para que las filas se muevan a la hoja 2?
Este comentario fue minimizado por el moderador en el sitio
¿Qué debo ingresar si quiero incluir cualquier fecha como mi valor? Entonces, ¿la fila permanece en la hoja 1 si no tiene fecha y se mueve a la hoja 2 si la tiene?
Este comentario fue minimizado por el moderador en el sitio
[cita] hola, esto fue muy útil. ¿Hay alguna manera de hacer esto sin que la fila de datos se mueva a la segunda hoja, sino que se copie? Entonces, ¿los datos permanecerían en ambas hojas?por Maddie[/quote] ¿alguien resolvió esto?
Este comentario fue minimizado por el moderador en el sitio
Elimine este "xCell.EntireRow.Delete" del código
Este comentario fue minimizado por el moderador en el sitio
Cuando elimino esa línea de código y ejecuto la macro nuevamente, Excel se congela. ¿Por qué y cómo lo soluciono? Quiero que los datos estén en ambas hojas de trabajo y que no se eliminen del original. AIT
Este comentario fue minimizado por el moderador en el sitio
hay una respuesta para esto? El mío también se congela. Me gustaría copiar pero no eliminar la fila.
Este comentario fue minimizado por el moderador en el sitio
Buenos días,
El siguiente código de VBA puede ayudarlo a copiar solo las filas en lugar de eliminarlas.

Sub Cheezy ()
Dim xRg como rango
Dim xCell como rango
Dim I tan largo
Dim J tan largo
Dim K tan largo
I = Hojas de cálculo ("Hoja1").UsedRange.Rows.Count
J = Hojas de cálculo ("Hoja2").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces J = 0
Si terminar
Establecer xRg = Hojas de trabajo ("Hoja1"). Rango ("C1: C" & I)
On Error Resume Next
Application.ScreenUpdating = False
Para K = 1 Para xRg.Count
Si CStr(xRg(K).Valor) = "Terminado" Entonces
xRg(K).EntireRow.Copiar destino:=Hojas de trabajo("Hoja2").Rango("A" & J + 1)
J = J + 1
Si terminar
Siguiente
Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy buscando una variación de esto. Necesito que el script se ejecute continuamente o, en su defecto, cada vez que cambie el valor en ese campo específico. El código en sí funciona, pero debe ejecutarse de forma independiente. Me gustaría que fuera automatizado. ¿Alguien puede ayudar?

Aparte, si solo quiero que se copie sobre celdas específicas en el rango, ¿cómo se logra eso?
Este comentario fue minimizado por el moderador en el sitio
Estimado Rob,

Si necesita que la secuencia de comandos se ejecute automáticamente cuando cambien las celdas de ese campo, el siguiente código de VBA puede ayudarlo. Haga clic con el botón derecho en la pestaña de la hoja actual (la hoja con filas que moverá automáticamente), luego seleccione Ver código en el menú contextual. Luego copie y pegue el siguiente script de VBA en la ventana Código.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)

Dim xCell como rango

Dim I tan largo
On Error Resume Next

Application.ScreenUpdating = False

Establecer xCell = Objetivo (1)
Si xCell.Value = "Listo" Entonces
I = Hojas de cálculo ("Hoja2").UsedRange.Rows.Count
si yo = 1 entonces

Si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces I = 0

Si terminar

xCell.EntireRow.Copy Worksheets("Hoja2").Rango("A" & I + 1)

xCell.EntireRow.Delete
Si terminar

Application.ScreenUpdating = True

End Sub


Para su segunda pregunta, ¿quiere decir simplemente copiar varias celdas en lugar de toda la fila? ¿O podría proporcionar una captura de pantalla de su pregunta? ¡Gracias!

Saludos, Cristal
Este comentario fue minimizado por el moderador en el sitio
Cristal,


Tu ayuda es más que necesaria :)



Cómo podemos agregar otro criterio aquí, por ejemplo, me gustaría transferir Completado al lado de Listo:


Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)

Dim xCell como rango

Dim I tan largo
On Error Resume Next

Application.ScreenUpdating = False

Establecer xCell = Objetivo (1)
Si xCell.Value = "Listo" Entonces
I = Hojas de cálculo ("Hoja2").UsedRange.Rows.Count
si yo = 1 entonces

Si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces I = 0

Si terminar

xCell.EntireRow.Copy Worksheets("Hoja2").Rango("A" & I + 1)

xCell.EntireRow.Delete
Si terminar

Application.ScreenUpdating = True

End Sub
Este comentario fue minimizado por el moderador en el sitio
hola cristal
Esta es la información más útil que he encontrado en la web y esta macro hace lo que quiero. Pero estoy moviendo las filas de una tabla a otra tabla, y con esta macro, la información se mueve de la primera línea libre fuera de la tabla, ¿no a la siguiente línea libre de la tabla? ¿Puede usted ayudar?
Este comentario fue minimizado por el moderador en el sitio
Estoy ejecutando este código y estoy tratando de mover una fila en función de la fecha de hoy que aparece en la columna I. Cambié Range("B1:B" & I) para leer Range(I1:I" & I). He cambiado " Hecho" en su ejemplo hasta la fecha. Sin embargo, cuando la fecha de hoy aparece en cualquier lugar de la fila, no solo en la columna I como se requiere, la fila se mueve a la hoja de cálculo alternativa. ¿Alguna idea de por qué sucede esto y cómo puedo mover la fila? solo cuando la fecha de hoy está en la columna I, independientemente de si la fecha de hoy aparece en otras columnas?
Este comentario fue minimizado por el moderador en el sitio
Querido David,

El código me funciona bien después de cambiar el rango y el valor variable hasta la fecha. El formato de fecha en su código debe coincidir con el formato de fecha que usó en la hoja de trabajo. ¿O te conviene adjuntar tu hoja de trabajo?
Este comentario fue minimizado por el moderador en el sitio
Hola Crystal,


No tengo claro lo que quiere decir cuando dice que el código y los formatos de fecha de la hoja de cálculo deben coincidir. No soy un experto en VB, más un nivel de principiante. En mi hoja de cálculo ingreso la fecha de hoy en la columna F como la fecha de entrada de la fila, en el formato ctrl + :. Ingreso la fecha de vencimiento en la columna "I" en el formato mm/dd/aaaa. Sin embargo, esto causa problemas al realizar una nueva entrada de fila e ingresar la fecha de hoy en la columna F porque, tan pronto como se ingresa, la fila se mueve a la nueva hoja de trabajo. Además, el código adicional para ejecutar cada vez que se abre el libro de trabajo no aparece correr sin que yo lo obligue a hacerlo. Lo siento por lo que podría ser para usted problemas muy triviales, pero simplemente no puedo entender estos problemas. Cualquier ayuda sería apreciada.
Este comentario fue minimizado por el moderador en el sitio
Querido David,

Intenté exactamente lo que mencionaste anteriormente, pero la dosis del problema no aparece en mi caso. ¿Puede proporcionar su versión de Excel? Necesito más información para ayudar a resolver este problema. Siento molestarte de nuevo.

Saludos, Cristal
Este comentario fue minimizado por el moderador en el sitio
Crystal, estas son las hojas de trabajo en cuestión. Verá en el código copiado que estoy buscando "hasta" la fecha de hoy en la columna L y si "hasta" e incluyendo la fecha de hoy está en esa columna, entonces quiero mover la fila que contiene esa fecha a una nueva hoja de cálculo. Actualmente, cuando ingreso la fecha de hoy en cualquier lugar de la fila (por ejemplo, la columna F si se emite una solicitud hoy), mueve automáticamente toda la fila a la hoja de cálculo archivada. Usualmente ingreso la fecha de hoy usando la combinación ctrl + :, generalmente en la columna F.
Además, me gustaría que este movimiento suceda cuando abro el libro. Actualmente necesito ir a mostrar el código y luego presionar F5. Cualquier consejo sobre cómo hacerlo será bienvenido.
Este comentario fue minimizado por el moderador en el sitio
Desafortunadamente, mi libro de trabajo habilitado para macros no se cargará porque dice que el formato no es compatible. Estos están en Excel 2016
Este comentario fue minimizado por el moderador en el sitio
Querido David,

El siguiente código de VBA puede ayudarlo a lograrlo.

Private Sub Workbook_Open ()
Dim xRg como rango
Dim xCell como rango
Dim I tan largo
Dim J tan largo
I = Hojas de trabajo ("OPORTUNIDADES ACTUALES DE OASIS").UsedRange.Rows.Count
J = Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange) = 0 Entonces J = 0
Si terminar
Establecer xRg = Hojas de trabajo ("OPORTUNIDADES ACTUALES DE OASIS").Rango ("L1: L" & I)
On Error Resume Next
Application.ScreenUpdating = False
Para cada xCell en xRg
Si CStr(xCell.Value) = Fecha Entonces
xCell.EntireRow.Copiar destino:=Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").Rango("A" & J + 1)
xCell.EntireRow.Delete
J = J + 1
Si terminar
Siguiente
End Sub

Notas
1. Debe colocar el script VBA en la ventana de código de ThisWorkbook;
2. Su libro de trabajo debe guardarse como Libro de trabajo habilitado para macros de Excel.

Después de la operación anterior, cada vez que abra el libro de trabajo, una fila completa se moverá a la hoja de trabajo ARCHIVADA si la celda de la columna L llega a la fecha de hoy.

Bestia Saludos, Crystal
Este comentario fue minimizado por el moderador en el sitio
gracias cristal,
Esto funciona muy bien si la fecha de hoy se logra en la columna L. ¿Hay alguna forma de incluir hasta la fecha de hoy en la columna L también, de modo que si no reviso el libro de trabajo por una cantidad de días, automáticamente incluirá fechas anteriores a el de hoy? Muchas gracias por su ayuda.
Este comentario fue minimizado por el moderador en el sitio
Querido David,

Lo siento, no estoy seguro de haber recibido tu pregunta. Si es así, todas las filas se moverán siempre que aparezcan fechas anteriores en la columna L.
Este comentario fue minimizado por el moderador en el sitio
Hola Crystal,

Si no abro mi hoja de trabajo durante unos días y la fecha ingresada en la columna L ya pasó, es decir, la fecha en una celda de la columna L es el 11 de septiembre de 2017 pero no abro mi hoja de trabajo hasta el 13 de septiembre, lo haría como todas las entradas en la columna L para que se verifiquen para cada fecha hasta la fecha de hoy, luego mueva las filas correspondientes a la nueva hoja. Actualmente, con el código que gentilmente proporcionó, solo las filas con la fecha actual en la columna L se mueven a la nueva hoja, dejando atrás aquellas con una fecha anterior en la columna L, que actualmente muevo manualmente a la nueva hoja. Gracias por tu ayuda.
Este comentario fue minimizado por el moderador en el sitio
Querido David,



Entiendo tu punto. Pruebe el siguiente script de VBA. Cuando abra el libro de trabajo, todas las filas con fechas hasta la fecha de hoy en la columna L se moverán a la nueva hoja especificada.



Private Sub Workbook_Open ()
Dim xRg como rango
Dim xRgRtn como rango
Dim xCell como rango
Dim xLastRow tan largo
Dim I tan largo
Dim J tan largo
On Error Resume Next
xLastRow = Worksheets("OPORTUNIDADES ACTUALES DE OASIS").UsedRange.Rows.Count
Si xLastRow < 1, entonces salga de Sub
J = Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange) = 0 Entonces J = 0
Si terminar
Establezca xRg = Hojas de trabajo ("OPORTUNIDADES ACTUALES DE OASIS"). Rango ("L1:L" & xLastRow)
Para I = 2 Para xÚltima fila
Si xRg(I).Valor > Fecha Entonces Salir de Sub
Si xRg(I).Valor <= Fecha Entonces
xRg(I).EntireRow.Copiar destino:=Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").Rango("A" & J + 1)
xRg(I).EntireRow.Delete
J = J + 1
yo = yo - 1
Si terminar
Siguiente
End Sub

Debe colocar la secuencia de comandos de VBA en la ventana de código de ThisWorkbook y guardar el libro de trabajo como un libro de trabajo habilitado para macros de Excel.
Este comentario fue minimizado por el moderador en el sitio
Gracias Crystal, eso funciona muy bien.
Este comentario fue minimizado por el moderador en el sitio
Crystal, me apresuré un poco al responder que el código funcionaba. Abrí mi libro de trabajo hoy y las filas que contienen entradas de fechas anteriores en la celda de la columna L todavía están en la "hoja de trabajo de oportunidades de oasis actuales" y no se han movido a la "hoja de trabajo de oasis archivada" como se esperaba. ¿Alguna idea de por qué sería así?
Este comentario fue minimizado por el moderador en el sitio
Las celdas resaltadas están en la columna L con respecto a la pregunta anterior y son los criterios (hasta la fecha de hoy) para mover la fila a la nueva hoja de trabajo. Espero que esta imagen ayude.
Este comentario fue minimizado por el moderador en el sitio
Esta es también una copia de la ventana de VBA relacionada con la anterior.
Este comentario fue minimizado por el moderador en el sitio
Crystal, me apresuré un poco al responder que el código funcionaba. Abrí mi libro de trabajo hoy y las filas que contienen entradas de fechas anteriores en la celda de la columna L todavía están en la "hoja de trabajo de oportunidades de oasis actuales" y no se han movido a la "hoja de trabajo de oasis archivada" como se esperaba. ¿Alguna idea de por qué sería así?
Este comentario fue minimizado por el moderador en el sitio
Cristal,

Como no puedo cargar mi libro de trabajo, reproduciré las filas y columnas aquí

ABCDEFGHIJKL
# Tipo Solicitud de reserva Modificar # Fecha de emisión Preguntas Cliente Ubicación de entrega Vencimiento de la propuesta de proyecto

1 SS SB 1234567 1 09/6/17 No Ejército Nombre Lugar Manejar Tanque 09/10/17

Usando el código a continuación, quiero que mueva una fila completa a una nueva hoja de trabajo cuando la columna L llegue a la fecha de hoy. Además, si no he completado la hoja de trabajo durante varios días, me gustaría usar la búsqueda "hasta la fecha de hoy" en la columna L para hacer lo mismo. También me gustaría que hiciera esto automáticamente cuando abro el libro de trabajo si es posible. Actualmente, si ingreso la fecha de hoy en cualquier celda de la fila, por ejemplo, la columna F al ingresar datos, toda la fila se mueve a la hoja de trabajo de archivo. (Usando Excel 2016)

[Código del módulo 1]

Sub DaveV()

Dim xRg como rango

Dim xCell como rango

Dim I tan largo

Dim J tan largo

I = Hojas de trabajo ("OPORTUNIDADES ACTUALES DE OASIS").UsedRange.Rows.Count

J = Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange.Rows.Count

Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange) = 0 Entonces J = 0

Si terminar

Establecer xRg = Hojas de trabajo ("OPORTUNIDADES ACTUALES DE OASIS").Rango ("L1: L" & I)

On Error Resume Next

Application.ScreenUpdating = False

Para cada xCell en xRg

Si CStr(xCell.Value) = Fecha Entonces

xCell.EntireRow.Copiar destino:=Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").Rango("A" & J + 1)
xCell.EntireRow.Delete

J = J + 1
Si terminar

Siguiente
Application.ScreenUpdating = True

End Sub
Este comentario fue minimizado por el moderador en el sitio
[Hoja 1 Código]

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Dim xCell como rango
Dim I tan largo
On Error Resume Next
Application.ScreenUpdating = False
Establecer xCell = Objetivo (1)
Si xCell.Value = Fecha Entonces
I = Hojas de trabajo("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange.Rows.Count
si yo = 1 entonces
Si Application.WorksheetFunction.CountA(Worksheets("OPORTUNIDADES DE OASIS ARCHIVADAS").UsedRange) = 0 Entonces I = 0 End If
xCell.EntireRow.Copy Worksheets("OPORTUNIDADES DE OASIS ARCHIVADAS").Rango("A" & I + 1)
xCell.EntireRow.Delete
Si terminar
Application.ScreenUpdating = True
End Sub

Espero que lo anterior ayude, pero no soy una persona de VBA, por lo tanto, no entiendo cómo hacer que el código haga lo que necesito. Tu ayuda será apreciada.
Este comentario fue minimizado por el moderador en el sitio
¡Hay un gran error en tu script!

Digamos que detectó que la fila 7 tiene la palabra "Terminado" en la columna C, por lo que la copia y elimina la fila.
Una vez que eliminó la fila, la siguiente fila en la lista será la fila 9 y no la 8, porque una vez que eliminó la línea 7, ahora el contenido de la línea 8 está en la línea 7, y todas las líneas subieron 1 fila. Entonces, se suponía que la siguiente fila para verificar era la fila n. ° 8, pero ahora contiene los datos que anteriormente estaban en la fila n. ° 9, por lo que cada vez que elimina una fila, ¡en realidad está omitiendo una fila para verificar!
Este comentario fue minimizado por el moderador en el sitio
Estimado Shau Alon,

Gracias por tu comentario. El código ha sido actualizado con el error corregido. Muchas gracias por tu asistente.

Saludos, Cristal
Este comentario fue minimizado por el moderador en el sitio
Creo que me está pasando esto, sigue copiando la misma fila una y otra vez aunque dice que el código fue actualizado. Esto es lo que tengo:

Sub Cheezy ()
'Actualizado por Kutools para Excel 2017/8/28
Dim xRg como rango
Dim xCell como rango
Dim I tan largo
Dim J tan largo
Dim K tan largo
I = Hojas de trabajo ("PROYECCIÓN DE COMPRA").UsedRange.Rows.Count
J = Hojas de trabajo ("Archivo de compras").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("Comprar archivo").UsedRange) = 0 Entonces J = 0
Si terminar
Establecer xRg = Hojas de trabajo ("PROYECCIÓN DE COMPRA").Rango ("H3: H" & I)
On Error Resume Next
Application.ScreenUpdating = False
Para K = 1 Para xRg.Count
Si CStr(xRg(K).Valor) = "Sí" Entonces
xRg(K).EntireRow.Copiar destino:=Hojas de cálculo("Comprar archivo").Rango("A" & J + 1)
xRg(K).EntireRow.Delete
Si CStr(xRg(K).Valor) = "Sí" Entonces
k = k - 1
Si terminar
J = J + 1
Si terminar
Siguiente
Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola Fred,
Cada vez que ejecuta el código, el código busca el rango especificado, por lo que copia la misma fila una y otra vez porque no puede saber qué fila ya se ha copiado. Para evitar copiar la misma fila repetidamente, puede hacer que el código se ejecute automáticamente cuando se ingresa un valor coincidente en la celda especificada.
En la hoja de cálculo denominada "PROYECCIÓN DE COMPRA", haga clic con el botón derecho en la pestaña de la hoja y haga clic en Ver código del menú contextual. Luego copie el siguiente código VBA en la ventana Hoja (Código).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Kutools for Excel 20220830
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
I = Worksheets("PURCHASE FORCAST").UsedRange.Rows.Count
J = Worksheets("Purchase Archive").UsedRange.Rows.Count
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("Purchase Archive").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("PURCHASE FORCAST").Range("H3:H" & I)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.Count
If CStr(xRg(K).Value) = "Yes" Then
xRg(K).EntireRow.Copy Destination:=Worksheets("Purchase Archive").Range("A" & J + 1)
xRg(K).EntireRow.Delete
If CStr(xRg(K).Value) = "Yes" Then
K = K - 1
End If
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
¿Podría alguien ayudarme a hacer que esto funcione? Intenté cambiar la parte que debe coincidir con mi archivo, pero aparece esto y no estoy seguro de qué hacer.
Este comentario fue minimizado por el moderador en el sitio
dice que el archivo no es compatible cuando intento cargar el archivo de Excel. Lo siento... luchando con esto hoy.
Este comentario fue minimizado por el moderador en el sitio
Me gustaría ayuda para una tarea similar, pero un poco diferente. Tengo 5 columnas de números, alrededor de 25000 por columna, cada columna con un encabezado 1-5. Me gustaría copiar la fila completa en otra hoja si el valor de la columna 1 es mayor que cero, O la columna 2 es mayor que cero , O la columna 3 es menor que cero, O la columna 4 es mayor que cinco O la columna 5 es mayor que dos, etc. ¿es esto posible?
Este comentario fue minimizado por el moderador en el sitio
la carga de imágenes no funciona... lo siento.
Este comentario fue minimizado por el moderador en el sitio
Hola,
Utilice el botón de carga de este.
Este comentario fue minimizado por el moderador en el sitio
Entonces, el objetivo es ver si alguno de los gases está por encima del límite que estableceré en la fórmula, la hueva completa se COPIA en una nueva hoja.

Muchísimas gracias por toda ayuda.
Este comentario fue minimizado por el moderador en el sitio
Imagen adjunta
Este comentario fue minimizado por el moderador en el sitio
Querido Michael,
Tal vez pueda resolver este problema utilizando un complemento de Excel. Aquí te recomiendo la utilidad Seleccionar celdas específicas de Kutools for Excel. Con esta utilidad, puede seleccionar fácilmente todas las filas en un rango determinado si el valor de una columna específica es mayor o menor que un número. Después de seleccionar todas las filas necesarias, puede copiarlas y pegarlas manualmente en una nueva hoja de trabajo. Ver imagen adjunta a continuación.

Puede obtener más información sobre esta característica siguiendo el siguiente hipervínculo.
https://www.extendoffice.com/product/kutools-for-excel/excel-select-specific-cells-rows.html
Este comentario fue minimizado por el moderador en el sitio
gracias por esta fórmula, pero tuve un problema que es cuando quiero mover la fila a otra hoja, no sucede automáticamente. ¿Puedes darme otra fórmula? así que cada vez que cambio el valor de la celda, se mueve automáticamente.


gracias
Este comentario fue minimizado por el moderador en el sitio
Estimado Janang,
La dosis del código no sucede automáticamente hasta que activa el botón de ejecución manualmente.
Este comentario fue minimizado por el moderador en el sitio
Hola,

Me gustaría tener esta macro configurada pero con 2 argumentos. Logré que la macro funcionara en mi archivo en función del valor de las celdas en la columna O. Sin embargo, me gustaría que la Macro verifique si la Columna S está completa (o <> "") también, antes de mover la fila . Por último, también me gustaría que las filas copiadas tengan el mismo formato que las filas de la segunda hoja. ¿Eso cambia completamente la macro?
Este comentario fue minimizado por el moderador en el sitio
Estimado Hugues,
No sé si te entiendo bien. ¿Quiere decir que si la celda en la columna S está completa y la celda en la columna O contiene el valor determinado al mismo tiempo, entonces mueva la fila con formato? De lo contrario, ¿no te muevas?
Este comentario fue minimizado por el moderador en el sitio
Hola cristal,

Sí, eso es exactamente lo que quiero decir. De hecho, mis datos son sobre proyectos. Mi columna O es el estado de mi proyecto y S la fecha de finalización de mi proyecto.
Quiero que mis usuarios, las personas que tienen la información y necesitarán insertarla, puedan "Archivar" un proyecto SOLO si tienen su estado como "Cerrado" y han insertado una "Fecha de finalización".


Espero que esto ayude a aclarar las cosas.
Este comentario fue minimizado por el moderador en el sitio
Estimado Hugues,
Lo siento por responder tan tarde. El siguiente código de VBA puede ayudarlo a resolver el problema. Siga los pasos de este artículo para aplicar el script VBA.

Sub MoveRowBasedOnCellValue()
Dim xRgStatus como rango
Dim xRgDate como rango
Dim I tan largo
Dim J tan largo
Dim K tan largo
I = Hojas de cálculo ("Hoja1").UsedRange.Rows.Count
J = Hojas de cálculo ("Hoja2").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces J = 0
Si terminar
Establecer xRgStatus = Worksheets("Sheet1").Rango("O1:O" & I)
Establecer xRgDate = Worksheets("Sheet1").Rango("S1:S" & I)
On Error Resume Next
Application.ScreenUpdating = False
Application.CutCopyMode = False
xRgStatus(1).EntireRow.Copy
Hojas de cálculo ("Hoja 2"). Rango ("A" y J + 1). Pegado especial xl Pegar todo utilizando el tema de origen
J = J + 1
Para K = 2 Para xRgStatus.Count
Si CStr(xRgStatus(K).Valor) = "Cerrado" Entonces
Si (xRgDate(K).Value <> "") Y (TypeName(xRgDate(K).Value) = "Date") Entonces
xRgStatus(K).EntireRow.Copy
Hojas de cálculo ("Hoja 2"). Rango ("A" y J + 1). Pegado especial xl Pegar todo utilizando el tema de origen
J = J + 1
Si terminar
Si terminar
Siguiente
Aplicación.CutCopyMode = Verdadero
Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Estimado Cristal,

Muchas gracias por su ayuda!

Saludos,

Hugues
Este comentario fue minimizado por el moderador en el sitio
Hola,


¿Cómo copio las filas en lugar de moverlas?
Este comentario fue minimizado por el moderador en el sitio
Hola,


Sé que esto se ha publicado varias veces, pero no puedo encontrar la respuesta. ¿Cómo puedo copiar el material a la hoja nueva y NO eliminarlo de la hoja original?
Este comentario fue minimizado por el moderador en el sitio
Querido Mike,
Si desea copiar las filas en lugar de eliminarlas, el siguiente código de VBA puede ayudarlo. ¡Gracias por tu comentario!

Sub Cheezy ()
Dim xRg como rango
Dim xCell como rango
Dim I tan largo
Dim J tan largo
Dim K tan largo
I = Hojas de cálculo ("Hoja1").UsedRange.Rows.Count
J = Hojas de cálculo ("Hoja2").UsedRange.Rows.Count
Si J = 1 Entonces
Si Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Entonces J = 0
Si terminar
Establecer xRg = Hojas de trabajo ("Hoja1"). Rango ("C1: C" & I)
On Error Resume Next
Application.ScreenUpdating = False
Para K = 1 Para xRg.Count
Si CStr(xRg(K).Valor) = "Terminado" Entonces
xRg(K).EntireRow.Copiar destino:=Hojas de trabajo("Hoja2").Rango("A" & J + 1)
J = J + 1
Si terminar
Siguiente
Application.ScreenUpdating = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola,

Soy nuevo en el uso de macros, ¿es posible pegar los datos a continuación después de un cierto valor y se repetirán hasta el final de la columna?
Me gusta:

Transferir "Azul" después de "Color"

A1 = Azul
A5= Color
A6= (transferir "Azul" aquí)
y así...
Este comentario fue minimizado por el moderador en el sitio
Querido John,
¿Quiere decir que si una celda contiene "Color" en una columna, luego copie el texto de la primera celda a la celda debajo de "Color" y repita la copia de este texto hasta el final de la columna?
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL