Asignar un número según el orden |
Responder ![]() |
Autor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
txino_2 ![]() Nuevo ![]() ![]() Unido: 19/Diciembre/2020 Localización: Jaén Estado: Sin conexión Puntos: 5 |
![]() ![]() ![]() ![]() ![]() 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xavi ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 13722 |
![]() ![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AnSanVal ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 16/Marzo/2005 Localización: España Estado: en línea Puntos: 5735 |
![]() ![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
Si por el
contrario el orden de los números (Nº) va a ser variable/desordenado...
... 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
txino_2 ![]() Nuevo ![]() ![]() Unido: 19/Diciembre/2020 Localización: Jaén Estado: Sin conexión Puntos: 5 |
![]() ![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AnSanVal ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 16/Marzo/2005 Localización: España Estado: en línea Puntos: 5735 |
![]() ![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sigues sin decir los rangos reales. «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). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
txino_2 ![]() Nuevo ![]() ![]() Unido: 19/Diciembre/2020 Localización: Jaén Estado: Sin conexión Puntos: 5 |
![]() ![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |