Necesito una MACRO en excel para copiar valores de una hoja en otra, según una condición.

Mi necesidad se basa en utilizar una Macro en excel para poder copiar las dos celdas anteriores ( la fecha, y el importe) a todas aquellas en las que figura la palabra "banco"(medio de pago). Mi intención es conglomerar en una sola hoja todos lo importes cuyo medio de pago fue el banco. Ademas debo hacer lo mismo con el "efectivo". Es decir, el medio de pago lo tengo en las columnas "P" y "S" a partir de la fila 5 en la hoja "PEDIDOS", y lo que quiero hacer es copiar esos registros en una hoja que diga "BANCOS" y otra que diga "CAJA", junto con las dos celdas contiguas anteriores (fecha e importe).

Es la primera vez que publico aquí y espero poder contar con una respuesta satisfactoria!

1 Respuesta

Respuesta

H o l a:

Tengo algunas dudas.

  • ¿La palabra "banco" está en la celdas de la columna "P"?
  • Si encuentro la palabra "banco" en la columna "P", ¿debo copiar las celdas de las columnas "N" y "O"?
  • ¿La palabra "efectivo" está en la celdas de la columna "S"?
  • Si encuentro la palabra "efectivo" en la columna "S", ¿debo copiar las celdas de las columnas "Q" y "R"?
  • Si es banco los pego en la hoja "BANCOS", ¿pero en cuál columna?
  • ¿Y en cuál fila los pego? ¿En la fila 2? ¿O después de la última fila con datos?
  • Lo mismo para los datos de la hoja "CAJA", ¿en dónde los pego?

E spero tus comentarios en ese orden.

Sal u dos

  • La palabra "banco" está en la celdas de la columna "P"? 
  • Si encuentro la palabra "banco" en la columna "P", ¿debo copiar las celdas de las columnas "N" y "O"?
  • ¿La palabra "efectivo" está en la celdas de la columna "S"?
  • Si encuentro la palabra "efectivo" en la columna "S", ¿debo copiar las celdas de las columnas "Q" y "R"?
  • Si es banco los pego en la hoja "BANCOS", ¿pero en cuál columna? SE PEGA EN LA HOJA "MAYOR BANCOS" EN LA CELDA "B2"
  • ¿Y en cuál fila los pego? ¿En la fila 2? ¿O después de la última fila con datos? DESPUES DE LA ULTIMA FILA CON DATOS
  • Lo mismo para los datos de la hoja "CAJA", ¿en dónde los pego? ESTOS SE PEGAN EN LA CELDA "B2" EN LA HOJA "MAYOR CAJA"

LAS PRIMERAS PREGUNTAS SON AFIRMATIVAS PERO CAMBIANDO DE LUGAR LAS PALABRAS. "BANCO" SE ENCUENTRA EN LA COLUMNA "S" A PARTIR DE "S5" Y "EFTVO" EN COLUMNA "P" A PARTIR DE "P5". 

Ademas quiero que cuando siga ingresando datos en las filas subsiguientes la macro me lo siga tomando para que los datos se sigan copiando a las hojas de mayores.

Espero haber sido claro.

Muchas gracias.

Ya no entendí tu último comentario:

"Ademas quiero que cuando siga ingresando datos en las filas subsiguientes la macro me lo siga tomando para que los datos se sigan copiando a las hojas de mayores"

¿Quieres qué la macro se ejecute en automático después de que realizas la captura?

Envíame tu archivo con algunos ejemplos, para adaptar la macro y revisar bien la ubicación de las columnas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Manuel Arisnabarreta” y el título de esta pregunta.

Dante te acabo de mandar el correo, el asunto es "MANUEL ARISNABARRETA". MUCHAs gracias

H o l a:

Te anexo las macros, la siguiente va en los eventos de la hoja "PEDIDOS"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Row < 5 Then Exit Sub
    If Not Intersect(Target, Range("P:P, S:S")) Is Nothing Then
        Select Case UCase(Target.Value)
            Case "EFTVO": Call Revisar(Target, "MAYOR CAJA")
            Case "BANCO": Call Revisar(Target, "MAYOR BANCOS")
        End Select
    End If
End Sub

La siguiente va en un módulo

Sub Revisar(Target, hoja)
'Por.Dante Amor
    texto = ""
    If Target.Offset(0, -2) = "" Then texto = "Falta la fecha"
    If Target.Offset(0, -1) = "" Then texto = "Falta el valor"
    If texto <> "" Then
        MsgBox texto, vbExclamation, "ERROR EN LA CAPTURA"
        Application.EnableEvents = False
        Target.Value = ""
        Target.Select
        Application.EnableEvents = True
        Exit Sub
    End If
    '
    Set h = Sheets(hoja)
    u = h.Range("A" & Rows.Count).End(xlUp).Row + 1
    h.Cells(u, "A") = Target.Offset(0, -2)
    h.Cells(u, "B") = Target.Offset(0, -1)
    MsgBox "Datos enviados a la hoja: " & hoja, vbInformation, "COPIAR DATOS"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas