Macro validación de datos en sumas

Estimado, muy buena tarde:
Agradezco, me pudieran colaborar con el siguiente tema:
Ejemplo:
                   Colum A       Colum B
Fila 2          Código           Valor
Fila 3          1105             2.000 (Suma Filas 4+5+6)
Fila 4 110505 600
Fila 5 110506 200
Fila 6 110507 1.200
Fila 8 1110 3.000 (Suma Filas 9+10+11)
Fila 9 111005 1.500
Fila 10 111006 500
Fila 11 111007 1000
Especificaciones: los códigos de 4 cifras son la suma de los códigos que tienen 6, pero que comienzan con esas mismas 4 cifras.
La macro realizaría la verificación que el valor que tengan los códigos de 4 cifras efectivamente sean la suma de los que tienen 6, siempre y cuando comiencen por las 4 cifras, Ejemplo: 1105=110501+110502+110503+N...
Luego cuando vuelva a encontrar un codigo de 4 cifras, siga verificando. Las que la anteceden,  Ejemplo: 1110= 111001+111002+111003+N...............
Esta vericiacion se cumple en por los menos unos 70 números que tienen 4 cifras,
por eso reuqueriria que al terminar la vericiacion de uno siga con el otro y así hasta no encontrar datos en la columna código.
Soy consciente que el tema es algo complicado, llevo intentándolo, pero no he podido ni he solucionado, nada, les ofrezco mis agradecimientos si me pudieran colaborar con clarificar este tema.
Mil y mil gracias por su ayuda.

1 respuesta

Respuesta
1
Bueno tomando en cuenta tu ejemplo desarrolle lo siguiente :
Sub Sumar_Criterio()
    CantAu = 1
    For Fila = 2 To Range("A65536").End(xlUp).Row
        If Len(Cells(Fila, 1)) = 4 Then
            Cod = Cells(Fila, 1)
            If CantAu = 0 Then
                Cells(AuFila, 2) = Cant
            End If
            Cant = 0
            AuFila = Fila
        ElseIf Len(Cells(Fila, 1)) > 4 Then
            If Cod = Val(Mid(Cells(Fila, 1), 1, 4)) Then
                Cant = Cant + Cells(Fila, 2)
                If Len(Cells(Fila + 1, 1)) = 4 Then
                    CantAu = 0
                End If
            End If
        End If
    Next
    Cells(AuFila, 2) = Cant
End Sub
Espero que sea de tu ayuda. Cualquier consulta no dudes en preguntar.
Suerte
Pitcher !
Mil gracias por tu tiempo, y tu pronta respuesta, es fantástica la instrucción que me facilitas, es fantástica, me vas ahorrar tiempo, en ejecución de taras, en verdad era lo que necesitaba, de igual manera te pido disculpas, porque se me paso hacer una pregunta demás, hay alguna forma que esta macro sirva también, no solo para que ponga la suma, si no que en ves de colocarla, ¿la verifique? Es decir,
                   Colum A       Colum B
Fila 2          Código           Valor
Fila 3          1105             2.000 (Suma Filas 4+5+6)
Fila 4 110505 600
Fila 5 110506 200
Fila 6 110507 1.200
Fila 8 1110 3.000 (Suma Filas 9+10+11)
Fila 9 111005 1.500
Fila 10 111006 500
Fila 11 111007 1000
Yo recibo esos archivos ya totalizados, pero con el valor en numero, SIN FÓRMULA, para en este caso en las filas 3, 8 y n..., también podría si no es mucho pedir que la macro verifique que esos valores que están puesto en números que corresponden a la suma de los códigos, ¿sean efectivamente la sumas correctas?, si en en caso contrario la suma es incorrecta, me salga como un log, ¿diciendo qué suma es incorrecta para los códigos en cuestión? o si no es un log, ¿Un mensaje de error?
Te agradezco mucho tu tiempo, apreciado experto.
Saludos,
Fredy mira modifique algo el código para hacer la suma en la columna C y en la columna DE hice la consulta si la B es igual a la C. este es el código :
Sub Sumar_Criterio_Formula()
    CantAu = 1
    Cont = 0
    Formula = ""
    For Fila = 2 To Range("A65536").End(xlUp).Row
        If Len(Cells(Fila, 1)) = 4 Then
            Cod = Cells(Fila, 1)
            If CantAu = 0 Then
                Cells(AuFila, 3).Select
                ActiveCell.FormulaR1C1 = "=" & Formula
                Cells(AuFila, 4).Select
                ActiveCell.FormulaR1C1 = "=+RC[-2]=RC[-1]"
                Cont = 0
                Formula = ""
            End If
            Cant = "+"
            AuFila = Fila
        ElseIf Len(Cells(Fila, 1)) > 4 Then
            If Cod = Val(Mid(Cells(Fila, 1), 1, 4)) Then
                Cant = Cant & Cells(Fila, 2) & "+"
                Cont = Cont + 1
                Formula = Formula & "+R[" & Cont & "]C[-1]"
                If Len(Cells(Fila + 1, 1)) = 4 Then
                    CantAu = 0
                End If
            End If
        End If
    Next
    Cells(AuFila, 3).Select
    ActiveCell.FormulaR1C1 = "=" & Formula
    Cells(AuFila, 4).Select
    ActiveCell.FormulaR1C1 = "=+RC[-2]=RC[-1]"
End Sub
Espero que sea de tu ayuda. Cualquier consulta no dudes en preguntar.
Suerte
Pitcher !
Estimado Experto Pitcher, en verdad mil gracias por tu gestión, en exaactamente lo que requería, te agradezco me hayas dedicado tiempo para la solución a mi inquietud, mil y mil gracias,
Saludos Cordiales,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas