Autonumerar fila según valor más alto

Necesitaría hacer esto:
Que la Columna A sea igual a Autonumeración incremental en función de si se introduce dato en columna B.
Condición: A tener en cuenta que en la Columna B hay fechas y que en cualquier momento se puede Ordenar la columna B por Fecha.
Al hacer esto, la numeración de la columna A ya no sería correlativa ya que los datos de fecha son aleatorios.
Lo que quiero es que al margen de la ordenación de fecha de la columna B, el nuevo dato de la Columna A sea igual al número más alto que exista en la Columna A + 1.
La fórmula sería algo así como A2 = "Valor más alto de columna A" + 1 y se debería auto rellenar al introducir un dato en la columna B (o sea, cuando B no sea igual a Null)

1 respuesta

Respuesta
2

En A2 colocá esta fórmula, manteniendo los signos $ tal como te los dejo:

=SI(B2<>"";MAX($A$1:A1)+1;"")

Estoy considerando que A1 tiene un texto que no se sumará.

Utilizo el separador de argumentos 'punto y coma'. Reemplázalo por el tuyo si hiciera falta.

Muchas gracias @ElsaMatilde.

Es esto, pero hay un pero.

Cuando se reordena la tabla según el criterio de la columna B (fecha), el número asignado no permanece con la fila a la que le corresponde. Se pone de forma correlativa.

Necesito que cuando se asigne un número en la columna A, este permanezca siempre con el resto de datos de esa fila, independientemente del orden por columna que se le quiera dar.

Y que el nuevo valor de la columna A sea el del mayor de A + 1.

Gracias

Para mantener el dato de la col A con su fila, tendrás que pasar el resultado a valores (copiar y pegar sobre la misma celda, opción valores).

Pero para esto es mejor entonces que utilices una macro que se ejecutará en cada cambio que se produzca en la col B.

Entrá al Editor de macros (menú Desarrollador/Programador o con el atajo de teclado ALT+F11)

Seleccioná el objeto HOJA donde vayas a trabajar con este tema. Y allí copiá el código que dejo a continuación. Está desarrollado para tu ejemplo: columna B a partir de fila 2. Ajustá estas referencias si cambias de modelo.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'controla cambios solo en col 2 (B)
If Target.Column <> 2 Then Exit Sub
'si se borra la celda se borra también el valor de la col A
If Target = "" Then
    Target.Offset(0, -1) = ""
Else
    'se coloca en la col A el valor consecutivo del rango iniciado en fila 2
    Target.Offset(0, -1) = Application.WorksheetFunction.Max(Range("A2:A" & Target.Row)) + 1
End If
End Sub

Como te adelantaste en valorar la respuesta, ahora con las aclaraciones quizás quieras mejorarla... ;)

Sdos!

Gracias. He probado el Código y sí que mantiene la Fila junta, pero modifica los números de las Filas que desplaza al ordenar por Fecha Valor.

Además, al modificarlos, hace desaparecer esos números.

Te lo voy a decir de otra manera a ver si así me explico mejor sobre lo que quiero.
Estos datos los copio de una Hoja de Excel externa. Los pego en mi Hoja y luego los "limpio" un poco en cuanto a texto que contienen.

En el momento que los pego, ya tienen que ir juntos y no desvincularse nunca los datos y el número autogenerado de orden.

Por qué?, pues porque cuando está todo arreglado, esos datos, con ese número, van a una Base de Datos de Access, la cual utiliza ese número de orden como "Clave Principal" y por eso no pueden ser modificados jamás en la Hoja de excel.

Te quería adjuntar una copia con datos falsos de la Hoja que uso para que veas sobre la realidad lo que tengo hecho, pero no se cómo se hace. No encuentro la opción de adjuntar archivo.

Por supuesto que mejoraré la valoración de la respuesta. No me importa si encontramos la solución o no. Simplemente por tu atención.
Muchas gracias de nuevo

En la imagen dejo los 2 métodos:

-Con fórmula, al ordenar por cualquier columna se pierde la conexión entre su nro de orden y el resto del registro.

-Con macro, al ordenar por cualquier columna el nro de orden acompaña al resto del registro.

Si necesitas algo diferente, entonces enviame tu libro con un ejemplo reducido de tu tabla y cómo la necesitas dejar luego del ingreso de datos.

Mi correo: cibersoft.arg @ gmail.com (todo en minúscula. Lo encontrarás también en la sección Contactos de mi sitio que dejo al pie).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas