Mejorar macro de excel para determinar de donde cortar piezas

La tarea consiste en analizar una tabla que contiene paneles, clasificados por algunas variables y su longitud; para luego determinar de donde se cortan los paneles que en cantidad sean inferiores a 10. Los paneles se cortaran de otros paneles con las mismas características pero de mayor longitud. Y cuya cantidad supere 10 unidades.
Para esto, el macro compara las variables que deben ser iguales, luego determina la longitud inmediatamente mayor y devuelve al sistema, en una casilla de la tabla, el resultado donde dice "Cortado de" concatenado con el nombre del panel del que va a ser cortado.
Me gustaría, que pudieran ayudarme a mejorar este macro para que funcione independientemente del orden en que la tabla de contenido sea proporcionada.
Agradezzco mucho su atención y pronta respuesta.

PD: esto es lo que llevo, pero solo funciona si los datos están en orden de mayor a menor...

Sub CFO()
' CFO Macro
' AUTOMATIC CALCULATION OF "CUT FROM OTHERS" PANELS.
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        Dim d As Integer
        Dim e As Integer
        Dim f As Integer
        Dim x As Integer
    a = 5
    b = 5
    c = 5
    d = 5
    e = 5
    f = 5
      Do Until (Cells(a, 1) = "" And Cells(a + 1, 1) = "")
                          Cells(a, 15) = Replace(Cells(a, 1), Cells(a, 3), "")
                                      a = a + 1
       Loop
          a = 5
     Do Until (Cells(a, 1) = "" And Cells(a + 1, 1) = "")
        If Cells(a, 5) < 10 Or Cells(a, 5) = "" Then
           If Cells(a + 1, 5) <> "" Then
               Do Until (Cells(a, 15).Value = Cells(a + 1, 15).Value Or (Cells(a, 15).Value = "" And Cells(a + 1, 15).Value = ""))
                        a = a + 1
      Loop
          Cells(a, 6).Value = "Cut from " & Cells(a - 1, 1)
          Else
                    Cells(a, 6).Value = "Cut from " & Cells(a - 1, 1)
          End If
  End If
                     a = a + 1
   Loop
   Cells(a, 15).Value = "End"
  Do While (Cells(b, 1) <> "" And Cells(b - 1, 1) <> "") 
     Do While (Cells(c, 1) <> "" And Cells(c + 1, 1) <> "")
        If Cells(b, 6) = "Cut from " & Cells(c, 1) And Cells(c, 6) <> "" Then
        Cells(b, 6) = Cells(c, 6)
        End If
     c = c + 1
     Loop
  b = b + 1
  Loop
Do Until (Cells(f, 1) = "" And Cells(f + 1, 1) = "")
   If (Cells(f, 5) > 10 Or Cells(f, 5) = "") Then
    Cells(f, 6) = ""
End If
f = f + 1
Loop
c = 5
Do Until (Cells(c, 1) = "" And Cells(c + 1, 1) = "")
If (Cells(d, 6) <> "" And Cells(d - 1, 5) < 10) Then
e = d
Do Until (Cells(e - 1, 5) > 10 Or e = 0)
e = e - 1
Loop
Cells(d, 6) = Cells(e, 6)
End If
c = c + 1
d = d + 1
Loop
End Sub

Añade tu respuesta

Haz clic para o