Completar números de una lista luego de una captura en Excel

Cuento con una lista de números encolumnados (col AA) que corresponden a N°s de Remitos (VER IMAGEN 1)

Luego de una nueva captura de datos, aparecen remitos nuevos y otros que ya existían, desaparecen pues, ya fueron confirmados.

Lo cierto es que, luego de la captura, queda una columna de números desordenada (VER IMAGEN 2) con celdas vacías de los remitos que desaparecieron y cuya fila fue ocupada por nuevos remitos de la nueva captura, con sus celdas en correspondencia con col AA, vacías.

Siendo el ultimo valor (el mayor de todos) el correspondiente a la última celda de la col AA, ¿cómo puedo rellenar cada celda vacía en orden descendente, x ejemplo, desde la celda AA3 como es el caso de la imagen 2, con números correlativos a partir de este dato?

Es decir, la celda AA3 tendría el valor 101, las celdas AA5 y AA6 tendrían el valor 102 y 103 respectivamente…. Etc.

IMAGEN 1 IMAGEN 2

Los ejemplos de imágenes fueron por mail privado

Un fuerte abrazo y

2 Respuestas

Respuesta
1

Envíame el archivo explicado con ejemplos

¡Gracias! 

Prueba con esto

    u = Range("D" & Rows.Count).End(xlUp).Row

    For j = 1 To u

        If Range("F" & j) <> "" Then

            datos = Split(Range("F" & j), ".")

            If UBound(datos) = 2 Then

                dia = datos(0)

                mes = datos(1)

                año = datos(2)

                Range("F" & j) = DateSerial(año, mes, dia)

            End If

        End If

    Next 

Respuesta
1

.30.05.17

Buenas, Daniel

Este sitio me envió un aviso para que responda a esta pregunta pero no veo las imágenes ni tampoco recibí imagenes por mail privado. Asumo que tu consulta fue para alguien más.

De todos modos, te arrimo una solución práctica para lo que pedís.

Me confunde un poco tu comentario de que AA3 debería tener el valor 101 y AA5 y AA6 tendrían el valor 102 y 103, lo que parece indicar que deberían rellenarse ascendentemente.

De todos modos, entendiendo la solución te resultará fácil adaptarla a lo que realmente necesitás, modificando los parámetros que te dejo indicado dentro del sigueinte código de VBA

Accedé al Editor de VBA (Atajo: Alt + F11), allí insertá un módulo (Insertar-Módulo) y pegá el siguiente código:

Sub CompletaVac()
'---- Variables modificables ----
'=== DANIEL, modificá estos datos de acuerdo a tu proyecto:
    CeldaIni = "AA3" 'celda donde está el primer registro a concatenar
    OrdenAsc = False ' FALSE para que disminuya desde el último, TRUE si deben incrementarse los números a partir del mayor
'---- fin Variables
'
' VBA coding by FeJoAl
'
'---- inicio de rutina:
'  
Ultcelda = Cells(Cells(Rows.Count, Range(CeldaIni).Column).End(xlUp).Row, Range(CeldaIni).Column).Address
MaxValor = Range(Ultcelda).Value
LaFila = 0
Do
    If IsEmpty(Range(Ultcelda).Offset(LaFila)) Then
        MaxValor = MaxValor + IIf(OrdenAsc, 1, -1)
        Range(Ultcelda).Offset(LaFila).Value = MaxValor
        Range(Ultcelda).Offset(LaFila).Interior.ColorIndex = 17
        cont = cont + 1
    End If
    LaFila = LaFila - 1
Loop Until Range(Ultcelda).Offset(LaFila).Address(False, False) = CeldaIni
ElMensaje = IIf(cont = 0, "NO SE AGREGO NUMERO DE REMITO ALGUNO" & Chr(10) & "no se encontraron espacios vacíos", "Se agreg" & IIf(cont > 1, "aron ", "ó ") & cont & " número" & IIf(cont > 1, "s", "") & " de remito.")
TipoMens = IIf(cont = 0, vbCritical, vbInformation)
ElTitulo = IIf(cont = 0, "NO SE HIZO NADA", "TERMINADO!")
Application.ScreenUpdating = True
MsgBox ElMensaje, TipoMens, ElTitulo
End Sub

Como verás al principio hay dos variables: en una le indicás la celda donde empiezan los números de remito (y la macro se encarga de averiguar cual es la última) y la otra variable permite que numere desde el el valor de la última celda hacia atrás si está en False o incrementándolo si ponés TRUE en su lugar.

Probala y decime si es lo que esperabas que haga -y, en tal caso, agradeceré que califiqués mi contribución- o escribime de nuevo aquí, si necesitas más apoyo con esto.

Un saludo

Fernando

(Buenos Aires, Argentina)

.

¡Muchas Gracias! Por el momento lo probé rápidamente y funciono

Necesitaría más capturas distintas para analizar su comportamiento pero en ppio funciono

Abrazo.

DC

.

Perfecto, Daniel

Probalo y comentame.

Avisame si necesita alguna adaptación.

Abrazo
Fer

.

La pregunta no admite más respuestas

Más respuestas relacionadas