Macro para generar números consecutivos si celda adyacente no esta vacía

Necesito generar números consecutivos en columna B siempre y cuando las celdas de la columna A no estén vacías, o sea que si los datos de la columna A son 100 entonces en la columna B deben generarse los números del 1 al 100, y si elimino algún registro y quedan 99, entonces en la columna B deben haber 99, y si en vez de eliminar, agrego otro registro serian 101 entonces la columna B debe darme 101.

Los numero deben estar ordenados siempre de forma ascendente (o sea del 1 al 100 o al 101, o al numero de registros que haya en la columna A. La columna A siempre esta ordenada alfabéticamente.

Lo quiero es que aparezca así

columna a                  columna b

Acetaminofen                             1

Bicarbonato                                2

Magnesio                                     3

etc

encontre esta macro pero no me da resultado 

Sub conteo()

Dim valor As Integer
    Sheets("Medicamentos").Activate
    Range("B3").Value = 1
    Range("A3", Range("B50000").End(xlUp)).Select
    valor = 1
    For Each celda In Selection
           If celda.Value <> "" Then
              celda.Offset(0, -1).Value = valor
              valor = valor + 1
           End If
    Next celda

End Sub

Respuesta
1

Lo puedes hacer más sencillo con una fórmula en la columna B:

Hola

Copie la fórmula tal como la escribiste y me da 0

Lo siento me equivoque, pero si agrego otro registro no agrega ninguno numero, deja espacio en blanco en la casilla del numero y lo que necesito es que si agrego también otro registro se le asigne el numero correspondiente, y si elimino un registro los números se ordenen correlativamente.

Una solución puede ser arrastrar la fórmula hacia abajo, dependiendo del volumen de registros que vayas a agregar; si se trata de unos cientos, con que alargues la fórmula hasta A1000 tendrías de sobra.

Si eliminas registros no pasa nada, te quedarán ordenados correctamente.

Eso funciona cuando se quiere eliminar un registro pero no cuando se agrega, porque al agregar un registro la celda de su numero sale vacía. Tendría que estar arrastrando la fórmula para que se actualice y esa es la razón por la que quiero automatizar esa parte.

Sí claro, tienes que arrastrar en algún momento...

... Entonces que otro experto nos ilumine con un poco de código, que yo en excel lo toco muy poco.

¡Gracias! 

Al tras algunas pruebas lo he resuelto así:

Dim valor As Integer

Sheets("Medicamentos").Activate

vvv = 50000

valor = 1

For Bx = 1 To vvv
vc = Range("A" & Bx)
If IsNull(vc) Or vc = "" Then
Else
Range("B" & Bx).Value = valor
valor = valor + 1
End If
Next

¡Gracias! por tu ayuda

saludos

A ti por preguntar, así aprendemos todos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas