** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Asignar un número según el orden
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Asignar un número según el orden

 Responder Responder
Autor
Mensaje
txino_2 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2020
Localización: Jaén
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita txino_2 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Asignar un número según el orden
    Enviado: 19/Diciembre/2020 a las 11:18
Buenos días

Me salta una duda y estoy muy perdido, a ver si alguien me puede decir alguna función o formula.

Tengo una serie de datos, en la columna de la izquierda sería el orden de prelación, en las columnas de la derecha los números. Quiero asignar un valor de la columnas del 1 al 10, a la columna que se llama Nº.

Por ejemplo, el número 1 se le asignaría el 1003, por ser el número 1 el primero, al número 2 el 1010, al número 3, como el número 1 ya se le asigna el 1003, a este le correspondería el 1005. Al número 4 le correspondería el 1004, al número 5 como el 1010 ya lo tiene asignado el número 2 y el número 1003 lo tiene asignado el número 3, el número 1004 lo tiene asignado el número 4, entonces le correspondería el número 1002. Y así sucesivamente.

¿Es posible automatizarlo con excel con alguna formula o función?, muchas gracias


El saber no ocupa lugar
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 13722
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 19/Diciembre/2020 a las 15:54
Hola txino_2 y bienvenido al foro,

He leído varias veces el mensaje (y , como yo, se supone que otra decena de personas) pero no soy capaz de entender la lógica de la secuencia de ordenación. Hasta he buscado que es el "orden de prelación".... y he acabado entendiendo menos que cuando he empezado a leer.

Dicho esto, si hay una lógica para decidir los números, hay una forma de programarlo. En tu caso es muy probable que sea con una macro.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5735
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 19/Diciembre/2020 a las 18:40

Yo tampoco encuentro un orden lógico para los números de orden de concurso.

Dicho eso, si  en el rango destino los números (Nº) están (siempre) ordenados, no habría necesidad de la tabla de 10 × 10, puesto  que los números de orden de concurso obtenidos la primera vez, serán los mismos que para la segunda y sucesivas.

       M

   N

       O

   2

Nombre

N.O.C.

   3

Nombre1

1

1003

   4

Nombre2

2

1010

   5

Nombre3

3

1005

   6

Nombre4

4

1004

   7

Nombre5

5

1002

   8

Nombre6

6

1009

   9

Nombre7

7

1001

   10

Nombre8

8

1008

   11

Nombre9

9

1007

   12

Nombre10

10

1006

 

Si por el contrario el orden de los números (Nº) va a ser variable/desordenado...

       M

   N

       O

   2

Nombre

N.O.C.

   3

Nombre1

1

1003

   4

Nombre2

4

1004

   5

Nombre3

6

1005

   6

Nombre4

2

1010

   7

Nombre5

3

1002

   8

Nombre6

9

1009

   9

Nombre7

7

1001

   10

Nombre8

8

1008

   11

Nombre9

10

1007

   12

Nombre10

5

1006

 

... podrías resolver (como indica Xavi [cada vez más sabio] con una macro), en mi ejemplo, con una función de usuario definida (UDF).

 

El código VBA variará dependiendo de en que rango este la  tabla de números de orden y de cual sea el rango de asignación (destino). Si no coinciden los rangos reales con los de la UDF ¡No funcionará!.

 

Suponiendo en B3 el número 1003, enB4 el número 1010,...  ... en K12 el número 1006 (B3:K12), 

En un módulo ordinario:

Function NOC(num&, fila&)

  Dim col&

  col = 2

  Application.Volatile

1

  NOC = Cells(num + 2, col)

  If WorksheetFunction.CountIf(Range("$O$2:O" & fila), NOC) > 0 Then

    col = col + 1

    If col > 11 Then Exit Function

    GoTo 1

  End If

End Function


La fórmula de la celda O3 es:  =noc(N3;FILA(A2))    (copia/pega hacia abajo)

La fórmula en la(s) celda(s) también  depende de los rangos reales.

 


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
txino_2 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2020
Localización: Jaén
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita txino_2 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 20/Diciembre/2020 a las 07:54
Perdón por no ser preciso.



La primera columna del 1 al 10, serían trabajadores colocados por antigüedad en la empresa.



Hay 10 puestos de trabajo y cada uno con una nomenclatura 1001, 1002, etc...



Cada trabajador, hace una petición para ocupar uno de esos puestos de trabajo.



Para asignar esos puestos de trabajo se utilizará la antigüedad en el empleo en la empresa. Y quisiera automatizar la asignación, para que por ejemplo el puesto 1003 se le asigne al trabajador 1, y al trabajador 3 que también había solicitado el 1003, al haberlo ocupado el trabajador 1 le asigne el siguiente que solicito que es el 1005.



Espero quede así más claro y disculpar.
El saber no ocupa lugar
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5735
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 20/Diciembre/2020 a las 12:31
Sigues sin decir los rangos reales.

Entiendo la idea, aunque la mayoría de los trabajadores repiten el 1002 y no optan al 1001, supongo que la tabla es sólo un ejemplo.

«La primera columna del 1 al 10, serían trabajadores colocados por antigüedad en la empresa.»
- Si no son números la UDF (tal como está ahora) no te funciona, eso pasa cuando el ejemplo aportado no se ajusta a la realidad, deberías haber puesto (nunca aportes datos sensibles): nombre1, nombre2,... nombre10.

- Si no sabes adaptar la UDF a tus rangos reales, aporta los rangos reales de la tabla y del rango donde quieres los resultados y te la modifico (sin conocer los rangos es trabajar inútilmente).


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
txino_2 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2020
Localización: Jaén
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita txino_2 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 20/Diciembre/2020 a las 15:09
Muchas gracias AnSanVal por tu colaboración altruista.

Así es, en la columna de la izquierda serían los trabajadores colocados por antigüedad. (nombre_1, nombre_2, etc).

Es una petición, por lo cual cada trabajador pide el puesto de trabajo que quiera, por eso hay coincidencias en el número de puesto, y el día excel debería asignarle el puesto de forma automática con su antigüedad.

Pero como trabajador puede pedir varios puestos de trabajo, si no consigue el primer puesto, se le asigna el segundo que ha pedido, si tampoco lo alcanzase por haberlo pedido alguien más antiguo optaría al tercero y así sucesivamente.

No se si me explico bien, disculpa las molestias y de nuevo muchas gracias.
El saber no ocupa lugar
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable