Copiar valores de una hoja para otra hoja

Quisiera un apoyo para ver cómo se puede hacer una macro para el siguiente caso, tengo un archivo en Excel que contiene dos hojas, en una hoja llamada "octubre 2021" que le cambio el nombre cada mes, en esta hoja es donde voy haciendo el registro de los cheque que se emiten, pero por errores involuntarios a veces se anulan cheques y eso los debo llevar a la otra hoja con el nombre CONCILIA OCTUBRE 2021, en esta otra hoja vinculo los datos a través de la formula buscarv.

Como se puede observar en esta imagen es la hoja que se llama octubre 2021y es la hoja 2, aquí es donde coloco la fecha, beneficiario, referencia, cheque, ingreso, egreso y saldo,

Y en la hoja 2 con el nombre CONCILIA OCTUBRE 2021, en esta hoja es donde necesito que se realice la macro, ya que cuando yo coloque en la otra hoja la palabra anulado o cheque anulado en la columna de referencia, son estas dos palabras que uso, entonces que automáticamente los valla trasladando para esta otra hoja, ya que ahorita lo hago manual, coloco el número de cheque y el a través de la formula buscarv, vinculo los datos de beneficiario, fecha y valor, entonces cada vez que coloque alguna de estas dos palabras el vaya vinculando estos dos, y los valla colocando así en lista para abajo, como se ve la imagen,

Porfis.

1 Respuesta

Respuesta
1

Tienes en la hoja "CONCILIA OCTUBRE 2021" un formato un poco complejo de ir llenando de manera automática. No digo que es imposible, pero tiene varios detalles que necesito que me aclares.

1. Cuando empieza el mes, cuántas filas en blanco tienes en el formato, entre las celdas "No cheque" y "Valor total".

2. Es necesario que se vaya generando "automáticamente" o puede ser al fin de mes. ¿Ejecutas una macro y entonces que lea todos los cheques anulados y llene el formato?

Te explico cuál es la complejidad, si no hay líneas en blanco para poner los dato del cheque anulado, la macro tendría que insertar una línea, pero el verdadero problema es estar poniendo y quitando los bordes, para que tu formato se vea como en tu imagen. Además veo que los números de cheque están ordenados, entonces la macro tendría que insertar el cheque y después ordenar los datos por el número de cheque.

Responde mis dudas 1 y 2, y veo la mejor forma de ayudarte.

1. Cuando empieza el mes, cuántas filas en blanco tienes en el formato, entre las celdas "No cheque" y "Valor total". R// en esa parte hay varias líneas aproximadamente unas 20 las que me quedan en blanco los oculto después para que solo se vean los cheques que se van a usar. 

2. Es necesario que se vaya generando "automáticamente" o puede ser al fin de mes. ¿Ejecutas una macro y entonces que lea todos los cheques anulados y llene el formato? R//lo ideal seria que se vaya generando automáticamente para que el saldo vaya cuadrando con la conciliación o con un botón para que vaya agregando los cheques 

Otras dudas, antes de empezar a realizar macros y macros y no te funcionen.

1. Por ejemplo:

- En la hoja "octubre 2021", en la referencia del cheque 7201 escribes "anulado".

- La macro en automático pone los datos en la hoja "CONCILIA OCTUBRE 2021"

- Pero t equivocaste no era el cheque 7201, entonces vas a la hoja "octubre 2021" y borras de la referencia la palabra "anulado"

- ¿Qué debe hacer la macro? Supongo que debe ir a la hoja "CONCILIA OCTUBRE 2021" y borrar el registro.

----

2. Otro ejemplo con imágenes completas.

- En tu imagen, no pusiste ningún cheque "anulado", puedes poner otra imagen donde se vea uno o varios cheques anulados.

- Tal vez sea obvio, pero es obvio para ti, porque conoces tus datos y cómo se encuentran en la hoja. Recuerda, nos estás pidiendo ayuda, entonces ayúdanos brindando toda la información relevante.

- Entonces en la segunda imagen, debes poner los cheques a los que les pusiste "anulado" en la primera imagen, de esa manera tu ejemplo estará completo y congruente.

---

3. ¿Los datos en la hoja "CONCILIA OCTUBRE 2021", realmente empiezan en la fila 100?

[Espero que sean las últimas dudas, empiezo con tu macro... 

1. Por ejemplo:

- En la hoja "octubre 2021", en la referencia del cheque 7201 escribes "anulado".

- La macro en automático pone los datos en la hoja "CONCILIA OCTUBRE 2021"

- Pero t equivocaste no era el cheque 7201, entonces vas a la hoja "octubre 2021" y borras de la referencia la palabra "anulado"  

- ¿Qué debe hacer la macro? Supongo que debe ir a la hoja "CONCILIA OCTUBRE 2021" y borrar el registro. R/exacto asi es Dante, debe borrar el registro en la hoja de concilia octubre

----

2. Otro ejemplo con imágenes completas.

- En tu imagen, no pusiste ningún cheque "anulado", puedes poner otra imagen donde se vea uno o varios cheques anulados.

- Tal vez sea obvio, pero es obvio para ti, porque conoces tus datos y cómo se encuentran en la hoja. Recuerda, nos estás pidiendo ayuda, entonces ayúdanos brindando toda la información relevante.

- Entonces en la segunda imagen, debes poner los cheques a los que les pusiste "anulado" en la primera imagen, de esa manera tu ejemplo estará completo y congruente.

---

3. ¿Los datos en la hoja "CONCILIA OCTUBRE 2021", realmente empiezan en la fila 100?

Regularmente inicia en la fila 108 

gracias a ti Dante, no importa las consultas que me hagas yo te envió la información o también enviarla al correo el archivo 

Pusiste un buen ejemplo, o más o menos.

En la hoja "enero", en la celda D38 pusiste "cheque anulado", pero en la celda CHEQUE, el valor está vacío. En esos casos, qué debe hacer la macro. Supongo que nada.

Buena idea, envíame tu archivo con algunos ejemplos, para no tener que recrear los formatos.

Mi correo:

[email protected]

En el cuerpo del correo pon el enlace a esta pregunta.

Pon TODO el siguiente código en los eventos de tu hoja "marzo 2022"

Option Explicit
Dim texto
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("D3:D" & Rows.Count)) Is Nothing Then
    If Target.CountLarge > 1 Then Exit Sub
    '
    Dim sh As Worksheet
    Dim i As Long
    Dim f As Range
    Set sh = Sheets("CONCILIA MARZO 2022")
    '
    If Target.Value = "" Then
      If texto <> "" Then
        'borrar registro en "concilia"
        If LCase(texto) = "anulado" Or LCase(texto) = "cheque anulado" Then
          Set f = sh.Range("B:B").Find(Target.Offset(, 1).Value, , xlValues, xlWhole)
          If Not f Is Nothing Then
            sh.Range("A" & f.Row).Resize(1, 4).ClearContents
          End If
        End If
      End If
    Else
      'agrega registro
      If Target.Offset(, 1).Value <> "" Then
        If LCase(Target.Value) = "anulado" Or LCase(Target.Value) = "cheque anulado" Then
          i = 110
          Do While sh.Range("B" & i) <> ""
            i = i + 1
          Loop
          sh.Range("A" & i).Value = Range("C" & Target.Row).Value 'bene
          sh.Range("B" & i).Value = Range("E" & Target.Row).Value 'num ch
          sh.Range("C" & i).Value = Range("B" & Target.Row).Value 'fecha
          sh.Range("D" & i).Value = Range("G" & Target.Row).Value 'valor
        End If
      End If
    End If
  End If
End Sub
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Range("D3:D" & Rows.Count)) Is Nothing Then
    If Target.CountLarge > 1 Then Exit Sub
    If Target.Value <> "" Then
      texto = Target.Value
    End If
  End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas