
Actualizacion de datos
Publicado por Anggi Camacho Castillo (1 intervención) el 30/08/2024 17:57:25
Buen día, tengo una duda, tengo este código que requiero actualizar pero no logro identificar cual es su secuencia para poder replicarlo con mas limites. Este código es para tomar como base un listado y a partir de ese listado sacar que sobra o que falta para el siguiente, en este caso debo actualizarlo para que pueda identificar lo de 10 listados de manera consecutiva osea: Listado 1 , que sobra y que se necesita para el listado 2, luego del listado 2, contemplando lo que sobra y se necesita para el listado 2 y 1, e identifique que le sobra o necesita para el listado 3 y asi sucesivamente. todo esto, con dar click a un commandbotton. Soy nueva en este tema y la verdad no se como plantear los códigos. Agradecería su colaboración. El código base es el siguiente;
Private Sub NECESITA_Click()
Dim I, J As Integer
Dim AL2() As String
Dim SL2() As String
ReDim Preserve SL2(LIMITE1, 2)
ReDim Preserve AL2(LIMITE2, 3)
For I = 2 To LIMITE2
AL2(I, 1) = Worksheets(1).Cells(I, 4).Value
AL2(I, 2) = Worksheets(1).Cells(I, 5).Value
AL2(I, 3) = Worksheets(1).Cells(I, 4).Font.Color
Next
For I = 2 To LIMITE1
SL2(I, 1) = Worksheets(1).Cells(I, 1).Value
SL2(I, 2) = Worksheets(1).Cells(I, 2).Value
Next
For I = 2 To LIMITE2
For J = 2 To LIMITE1
If AL2(I, 1) = SL2(J, 1) Then
If AL2(I, 2) <> SL2(J, 2) Then
If CInt(AL2(I, 2)) < CInt(SL2(J, 2)) And AL2(I, 2) <> "" Then
SL2(J, 2) = SL2(J, 2) - AL2(I, 2)
AL2(I, 1) = ""
AL2(I, 2) = ""
ElseIf CInt(AL2(I, 2)) > CInt(SL2(J, 2)) Then
AL2(I, 2) = AL2(I, 2) - SL2(J, 2)
SL2(J, 1) = ""
SL2(J, 2) = ""
End If
Else
SL2(J, 1) = ""
SL2(J, 2) = ""
AL2(I, 1) = ""
AL2(I, 2) = ""
End If
End If
Next J
Next I
Dim Z As Integer
Z = 2
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = "ADICIONAL"
Z = Z + 1
For I = 2 To UBound(AL2)
If AL2(I, 1) <> "" Then
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = AL2(I, 1)
Worksheets(1).Cells(LIMITE2 + Z, 5).Value = AL2(I, 2)
Worksheets(1).Cells(LIMITE2 + Z, 4).Font.Color = AL2(I, 3)
Worksheets(1).Cells(LIMITE2 + Z, 5).Font.Color = AL2(I, 3)
Z = Z + 1
End If
Next
Z = Z + 1
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = "SOBRANTE"
Z = Z + 1
For J = 2 To UBound(SL2)
If SL2(J, 1) <> "" Then
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = SL2(J, 1)
Worksheets(1).Cells(LIMITE2 + Z, 5).Value = SL2(J, 2)
Z = Z + 1
End If
Next
Dim SW As Boolean
For I = 2 To UBound(AL2)
If AL2(I, 1) <> "" Then
SW = True
For J = 2 To LIMITE1
If AL2(I, 1) = Worksheets(1).Cells(J, 1).Value Then
SW = False
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + AL2(I, 2)
End If
Next J
If SW Then
INS = INS + 1
Worksheets(1).Cells(LIMITE1 + INS, 1).Value = AL2(I, 1)
Worksheets(1).Cells(LIMITE1 + INS, 2).Value = AL2(I, 2)
End If
End If
Next I
'************************************************************************
'************************************************************************
'************************************************************************
Dim SL3() As String
Dim AL3() As String
ReDim Preserve SL3(LIMITE1 + INS, 2)
ReDim Preserve AL3(LIMITE3, 3)
For I = 2 To LIMITE3
AL3(I, 1) = Worksheets(1).Cells(I, 7).Value
AL3(I, 2) = Worksheets(1).Cells(I, 8).Value
AL3(I, 3) = Worksheets(1).Cells(I, 7).Font.Color
Next
For I = 2 To LIMITE1 + INS
SL3(I, 1) = Worksheets(1).Cells(I, 1).Value
SL3(I, 2) = Worksheets(1).Cells(I, 2).Value
Next
For I = 2 To LIMITE3
For J = 2 To LIMITE1 + INS
If AL3(I, 1) = SL3(J, 1) Then
If AL3(I, 2) <> SL3(J, 2) Then
If CInt(AL3(I, 2)) < CInt(SL3(J, 2)) And AL3(I, 2) <> "" Then
SL3(J, 2) = SL3(J, 2) - AL3(I, 2)
AL3(I, 1) = ""
AL3(I, 2) = ""
ElseIf CInt(AL3(I, 2)) > CInt(SL3(J, 2)) Then
AL3(I, 2) = AL3(I, 2) - SL3(J, 2)
SL3(J, 1) = ""
SL3(J, 2) = ""
End If
Else
SL3(J, 1) = ""
SL3(J, 2) = ""
AL3(I, 1) = ""
AL3(I, 2) = ""
End If
Exit For
End If
Next J
Next I
Z = 2
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = "ADICIONAL"
Z = Z + 1
For I = 2 To UBound(AL3)
If AL3(I, 1) <> "" Then
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = AL3(I, 1)
Worksheets(1).Cells(LIMITE3 + Z, 8).Value = AL3(I, 2)
Worksheets(1).Cells(LIMITE3 + Z, 7).Font.Color = AL3(I, 3)
Worksheets(1).Cells(LIMITE3 + Z, 8).Font.Color = AL3(I, 3)
Z = Z + 1
End If
Next
Z = Z + 1
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = "SOBRANTE"
Z = Z + 1
For J = 2 To UBound(SL3)
If SL3(J, 1) <> "" Then
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = SL3(J, 1)
Worksheets(1).Cells(LIMITE3 + Z, 8).Value = SL3(J, 2)
Z = Z + 1
End If
Next
For I = 2 To UBound(AL3)
If AL3(I, 1) <> "" Then
SW = True
For J = 2 To LIMITE1
If AL3(I, 1) = Worksheets(1).Cells(J, 1).Value Then
SW = False
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + AL3(I, 2)
End If
Next J
If SW Then
INS = INS + 1
Worksheets(1).Cells(LIMITE1 + INS, 1).Value = AL3(I, 1)
Worksheets(1).Cells(LIMITE1 + INS, 2).Value = AL3(I, 2)
End If
End If
Next I
End Sub
Private Sub RECORRIDO_Click()
Dim I, J As Integer
For I = 2 To LIMITE2
For J = 2 To LIMITE1 + INS
If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
If Worksheets(1).Cells(I, 5).Value > Worksheets(1).Cells(J, 2).Value Then
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + (Worksheets(1).Cells(I, 5).Value - Worksheets(1).Cells(J, 2).Value)
End If
End If
Next J
Next I
End Sub
Private Sub SUMA_Click()
Dim I, J As Integer
For I = 2 To LIMITE2
For J = 2 To LIMITE1 + INS
If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + Worksheets(1).Cells(I, 5).Value
End If
Next J
Next I
End Sub
' If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
' If Worksheets(1).Cells(I, 5).Value <> Worksheets(1).Cells(J, 2).Value Then
' If Worksheets(1).Cells(I, 5).Value < Worksheets(1).Cells(J, 2).Value Then
' Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value - Worksheets(1).Cells(I, 5).Value
' Worksheets(1).Cells(I, 4).Value = ""
' Worksheets(1).Cells(I, 5).Value = ""
' ElseIf Worksheets(1).Cells(I, 5).Value > Worksheets(1).Cells(J, 2).Value Then
' Worksheets(1).Cells(I, 5).Value = Worksheets(1).Cells(I, 5).Value - Worksheets(1).Cells(J, 2).Value
' Worksheets(1).Cells(J, 2).Value = ""
' Worksheets(1).Cells(J, 1).Value = ""
' End If
' Else
' Worksheets(1).Cells(I, 4).Value = ""
' Worksheets(1).Cells(I, 5).Value = ""
' Worksheets(1).Cells(J, 2).Value = ""
' Worksheets(1).Cells(J, 1).Value = ""
' End If
' End If
Private Sub NECESITA_Click()
Dim I, J As Integer
Dim AL2() As String
Dim SL2() As String
ReDim Preserve SL2(LIMITE1, 2)
ReDim Preserve AL2(LIMITE2, 3)
For I = 2 To LIMITE2
AL2(I, 1) = Worksheets(1).Cells(I, 4).Value
AL2(I, 2) = Worksheets(1).Cells(I, 5).Value
AL2(I, 3) = Worksheets(1).Cells(I, 4).Font.Color
Next
For I = 2 To LIMITE1
SL2(I, 1) = Worksheets(1).Cells(I, 1).Value
SL2(I, 2) = Worksheets(1).Cells(I, 2).Value
Next
For I = 2 To LIMITE2
For J = 2 To LIMITE1
If AL2(I, 1) = SL2(J, 1) Then
If AL2(I, 2) <> SL2(J, 2) Then
If CInt(AL2(I, 2)) < CInt(SL2(J, 2)) And AL2(I, 2) <> "" Then
SL2(J, 2) = SL2(J, 2) - AL2(I, 2)
AL2(I, 1) = ""
AL2(I, 2) = ""
ElseIf CInt(AL2(I, 2)) > CInt(SL2(J, 2)) Then
AL2(I, 2) = AL2(I, 2) - SL2(J, 2)
SL2(J, 1) = ""
SL2(J, 2) = ""
End If
Else
SL2(J, 1) = ""
SL2(J, 2) = ""
AL2(I, 1) = ""
AL2(I, 2) = ""
End If
End If
Next J
Next I
Dim Z As Integer
Z = 2
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = "ADICIONAL"
Z = Z + 1
For I = 2 To UBound(AL2)
If AL2(I, 1) <> "" Then
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = AL2(I, 1)
Worksheets(1).Cells(LIMITE2 + Z, 5).Value = AL2(I, 2)
Worksheets(1).Cells(LIMITE2 + Z, 4).Font.Color = AL2(I, 3)
Worksheets(1).Cells(LIMITE2 + Z, 5).Font.Color = AL2(I, 3)
Z = Z + 1
End If
Next
Z = Z + 1
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = "SOBRANTE"
Z = Z + 1
For J = 2 To UBound(SL2)
If SL2(J, 1) <> "" Then
Worksheets(1).Cells(LIMITE2 + Z, 4).Value = SL2(J, 1)
Worksheets(1).Cells(LIMITE2 + Z, 5).Value = SL2(J, 2)
Z = Z + 1
End If
Next
Dim SW As Boolean
For I = 2 To UBound(AL2)
If AL2(I, 1) <> "" Then
SW = True
For J = 2 To LIMITE1
If AL2(I, 1) = Worksheets(1).Cells(J, 1).Value Then
SW = False
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + AL2(I, 2)
End If
Next J
If SW Then
INS = INS + 1
Worksheets(1).Cells(LIMITE1 + INS, 1).Value = AL2(I, 1)
Worksheets(1).Cells(LIMITE1 + INS, 2).Value = AL2(I, 2)
End If
End If
Next I
'************************************************************************
'************************************************************************
'************************************************************************
Dim SL3() As String
Dim AL3() As String
ReDim Preserve SL3(LIMITE1 + INS, 2)
ReDim Preserve AL3(LIMITE3, 3)
For I = 2 To LIMITE3
AL3(I, 1) = Worksheets(1).Cells(I, 7).Value
AL3(I, 2) = Worksheets(1).Cells(I, 8).Value
AL3(I, 3) = Worksheets(1).Cells(I, 7).Font.Color
Next
For I = 2 To LIMITE1 + INS
SL3(I, 1) = Worksheets(1).Cells(I, 1).Value
SL3(I, 2) = Worksheets(1).Cells(I, 2).Value
Next
For I = 2 To LIMITE3
For J = 2 To LIMITE1 + INS
If AL3(I, 1) = SL3(J, 1) Then
If AL3(I, 2) <> SL3(J, 2) Then
If CInt(AL3(I, 2)) < CInt(SL3(J, 2)) And AL3(I, 2) <> "" Then
SL3(J, 2) = SL3(J, 2) - AL3(I, 2)
AL3(I, 1) = ""
AL3(I, 2) = ""
ElseIf CInt(AL3(I, 2)) > CInt(SL3(J, 2)) Then
AL3(I, 2) = AL3(I, 2) - SL3(J, 2)
SL3(J, 1) = ""
SL3(J, 2) = ""
End If
Else
SL3(J, 1) = ""
SL3(J, 2) = ""
AL3(I, 1) = ""
AL3(I, 2) = ""
End If
Exit For
End If
Next J
Next I
Z = 2
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = "ADICIONAL"
Z = Z + 1
For I = 2 To UBound(AL3)
If AL3(I, 1) <> "" Then
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = AL3(I, 1)
Worksheets(1).Cells(LIMITE3 + Z, 8).Value = AL3(I, 2)
Worksheets(1).Cells(LIMITE3 + Z, 7).Font.Color = AL3(I, 3)
Worksheets(1).Cells(LIMITE3 + Z, 8).Font.Color = AL3(I, 3)
Z = Z + 1
End If
Next
Z = Z + 1
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = "SOBRANTE"
Z = Z + 1
For J = 2 To UBound(SL3)
If SL3(J, 1) <> "" Then
Worksheets(1).Cells(LIMITE3 + Z, 7).Value = SL3(J, 1)
Worksheets(1).Cells(LIMITE3 + Z, 8).Value = SL3(J, 2)
Z = Z + 1
End If
Next
For I = 2 To UBound(AL3)
If AL3(I, 1) <> "" Then
SW = True
For J = 2 To LIMITE1
If AL3(I, 1) = Worksheets(1).Cells(J, 1).Value Then
SW = False
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + AL3(I, 2)
End If
Next J
If SW Then
INS = INS + 1
Worksheets(1).Cells(LIMITE1 + INS, 1).Value = AL3(I, 1)
Worksheets(1).Cells(LIMITE1 + INS, 2).Value = AL3(I, 2)
End If
End If
Next I
End Sub
Private Sub RECORRIDO_Click()
Dim I, J As Integer
For I = 2 To LIMITE2
For J = 2 To LIMITE1 + INS
If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
If Worksheets(1).Cells(I, 5).Value > Worksheets(1).Cells(J, 2).Value Then
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + (Worksheets(1).Cells(I, 5).Value - Worksheets(1).Cells(J, 2).Value)
End If
End If
Next J
Next I
End Sub
Private Sub SUMA_Click()
Dim I, J As Integer
For I = 2 To LIMITE2
For J = 2 To LIMITE1 + INS
If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value + Worksheets(1).Cells(I, 5).Value
End If
Next J
Next I
End Sub
' If Worksheets(1).Cells(I, 4).Value = Worksheets(1).Cells(J, 1).Value Then
' If Worksheets(1).Cells(I, 5).Value <> Worksheets(1).Cells(J, 2).Value Then
' If Worksheets(1).Cells(I, 5).Value < Worksheets(1).Cells(J, 2).Value Then
' Worksheets(1).Cells(J, 2).Value = Worksheets(1).Cells(J, 2).Value - Worksheets(1).Cells(I, 5).Value
' Worksheets(1).Cells(I, 4).Value = ""
' Worksheets(1).Cells(I, 5).Value = ""
' ElseIf Worksheets(1).Cells(I, 5).Value > Worksheets(1).Cells(J, 2).Value Then
' Worksheets(1).Cells(I, 5).Value = Worksheets(1).Cells(I, 5).Value - Worksheets(1).Cells(J, 2).Value
' Worksheets(1).Cells(J, 2).Value = ""
' Worksheets(1).Cells(J, 1).Value = ""
' End If
' Else
' Worksheets(1).Cells(I, 4).Value = ""
' Worksheets(1).Cells(I, 5).Value = ""
' Worksheets(1).Cells(J, 2).Value = ""
' Worksheets(1).Cells(J, 1).Value = ""
' End If
' End If
Valora esta pregunta


0