Macro para copiar datos de celdas a otra hoja según condición

Necesito de su ayuda tengo una hoja donde concilie bancos contra contabilidad estas son las columnas algunas celdas con datos otras no las filas empiezas en línea 3 hasta 80 mi hoja es conciliación y que esta macro copie solo los que digan NO pero solo las celdas valor y cheque a mi otra hoja resumen, en A9, no soy un experto en macro pero hago un esfuerzo para aprender y me gusta, esta macro lo hice con un botón pero no funciono de antemano se los agradezco, espero haberme explicado

G                     H                    I             K

fecha          valor          estado    cheque

01/05/16   10,000.00        NO          9836

01/05/16   5,000.00           NO     

01/05/16    3,000.00           SI        1000

2 respuestas

Respuesta
1
Sub copiacondicion()
'Act.Temp01
Set h1 = Sheets("conciliación")
Set h2 = Sheets("resumen")
   h2.Cells.Clear
   Application.ScreenUpdating = True
   y = 9
   For k = 3 To h1.Range("H" & Rows.Count).End(xlUp).Row
        If h1.Cells(k, "I") = "SI" Then
            h2.Cells(y, "A") = h1.Cells(k, "H")
            y = y + 1
        End If
    Next
End Sub

Me comentas y valoras para finalizar saludos!!

Me envío un error 9 en tiempo de ejecución subíndice fuera del intervalo, te puedo enviar mi archivo para que lo analices

envíame [email protected] 

Explícame con un ejemplo de la pregunta y el resultado deseado saludos!

El posible error 9 es por el nombre de la hoja fíjate que estén bien escritas o si lleva tilde

Set h1 = Sheets("conciliación")
Set h2 = Sheets("resumen")

Dijiste que se copie cuando el valor es no, ahíta la macro corregida

Sub copiacondicion()
'Act.Temp01
Set h1 = Sheets("conciliación")
Set h2 = Sheets("resumen")
   h2.Cells.Clear
   Application.ScreenUpdating = True
   y = 9
   For k = 3 To h1.Range("H" & Rows.Count).End(xlUp).Row
        If h1.Cells(k, "I") = "SI" Then
            h2.Cells(y, "A") = h1.Cells(k, "H")
            y = y + 1
        End If
    Next
End Sub

puntuar para finalizar saludos!

If h1.Cells(k, "I") = "NO" Then

Respuesta
1

H o l a:

Si quieres que siempre empiece a pegar en la fila 9:

Sub CopiarDatos()
'Por.Dante Amor
    Set h1 = Sheets("conciliación")
    Set h2 = Sheets("resumen")
    '
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u < 9 Then u = 9
    h2.Range("A9:B" & u).ClearContents
    j = 9
    For i = 3 To h1.Range("I" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "I") = "NO" Then
            h2.Cells(j, "A") = h1.Cells(i, "H")
            h2.Cells(j, "B") = h1.Cells(i, "K")
            j = j + 1
        End If
    Next
    MsgBox "Fin"
End Sub

Si quieres que pegue en la siguiente fila después de la última fila con datos de la columna A:

Sub CopiarDatos()
'Por.Dante Amor
    Set h1 = Sheets("conciliación")
    Set h2 = Sheets("resumen")
    '
    j = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    For i = 3 To h1.Range("I" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "I") = "NO" Then
            h2.Cells(j, "A") = h1.Cells(i, "H")
            h2.Cells(j, "B") = h1.Cells(i, "K")
            j = j + 1
        End If
    Next
    MsgBox "Fin"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! por tu valioso aporte

H o l a:

Al final de la respuesta hay 2 opciones para valorar: "Votar" y "Excelente", si todavía tienes dudas o la macro no realiza lo que necesitas, puedes solicitar más información, de lo contrario.

¡Gracias! 

Me faltó poner esta parte:

'De lo contrario podrías cambiar la valoración de la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas