¿Cómo copiar valores de celdas de forma ordenada según criterios?
Estoy ajustando las lineas de una macro, la cual debe copiar los valores contenidos desde la columna E hasta la columna H en orden de lista en las celdas disponibles (vacias) de la columna D, sabiendo que estos valores (los contenidos en las columanas desde la E hasta la H) son variables, en cuanto a que en algunos casos pueden estar distribuidos de forma diferente o no estar en todas las columnas ya mencionadas, sino, solo en una o algunas de ellas; en el siguiente link - https://drive.google.com/file/d/11ge-xeXMKCEV4TiqlNqnBpp2-_6N6aLi/view?usp=sharing - les comparto el libro .xlsm que estoy trabajando como prueba macro de este procedimiento, con dos hojas las cuales clasifico de forma visual con un antes y un despues del procedimiento que anteriormente describo.
He intentado obtener este resultado con la siguinete macro:
Sub InsertarItem() Dim Celda As Range Dim UltimaFila As Long, x As Long Dim Valores(1 To 4) As Integer Let UltimaFila = Cells(Rows.Count, 5).End(xlUp).Row Valores(1) = 0: Valores(2) = 2: Valores(3) = 3: Valores(4) = 4 For Each Celda In Range("E3:E" & UltimaFila) For x = 1 To 4 If Celda.Offset(0, Valores(x)) > "0" Or Celda.Offset(0, Valores(x)) > " " Or Celda.Offset(0, Valores(x)) > "REEMPLAZAR" Then If Valores(x) = 0 Then Celda.Offset(Valores(x) + 1, -1).Formula = "=" & Celda.Offset(0, Valores(x)).Address(0, 0) ElseIf Valores(x) = 2 Then Celda.Offset(Valores(x), -1).Formula = "=" & Celda.Offset(0, Valores(x)).Address(0, 0) ElseIf Valores(x) = 3 And Valores(x) = 4 Then Celda.Offset(Valores(x) - 1, -1).Formula = "=" & Celda.Offset(0, Valores(x)).Address(0, 0) End If End If Next x Next Celda End Sub
pero no he logrado del todo lo que pretendo, ya que al ejecutarla copia los valores pero sin tener en cuenta la celda disponible en la columna D y la distribucion de la informacion contenida en las columnas desde la E hasta la H, en el libro que les comparto en la hoja asociada al "conprocedimiendo" muestro los seis (6) casos que son los que pueden ocurrir en la tabla en orden aleatorio con el resultado deseado.
A continuación propongo la situación que he mencionado anteriormente en imágenes, aclarando que todos los casos que se presentan están coloreados en razón de que están asociados entre si, es decir, las celdas con color entre si tienen relación en como deben resultar luego del procedimiento de copiado de valores (de los valores contenidos en las columnas desde la E hasta H) en los campos disponibles de la columna D.
Sin procedimiento
Con procedimiento