Jump to content

AJORDAN

Members
  • Content Count

    12
  • Joined

  • Last visited

  1. Bueno, pues como desde que subí el archivo nadie ha contestado nada, he cambiado de estrategia y he empezado de cero. En vez de con rangos estoy trabajando con matrices... El tema es que no soy capaz de extraer la dirección, el índice, o como se llame, de una matriz. Igual que en un rango, puedo buscar un valor y luego sacar la dirección de esa celda con .address, con una matriz (tipo variant) no soy capaz de hacerlo. Si hago x = Application.Max(Matrix) ¿Como puedo saber el indice que ocupa x dentro de la matriz? La única solución que se me ocurre es transformar la matriz a un rango y después buscar en le rango For Each Casilla In RngMatrix If Casilla = x Then Exit For End If Next Casilla Msgbox Casilla.address Pero estoy seguro que debería haber alguna función para extraer el "índice de la matriz", lo único que yo no lo encuentro. Se agradece como siempre cualquier tipo de ayuda.
  2. Ya imaginaba que si subía el archivo iba a ser muy farragoso e iba a espantar a la gente, por eso no lo subí en un principio. Pero independientemente de mi código, la pregunta es simple, ¿se puede crear de alguna manera un rango variable no continuo? Gracias again
  3. Me ha faltado decir que uso la versión 14.0.0 (100825) de EXCEL 2011 para MAC (OSX 10.10.4). Gracias or la paciencia.
  4. Aquí va el fichero, dividido en 3. Solo hay que pasar las Hojas de dos archivos al tercero. Asigna_Noches_parte 3.xlsm.zip Asigna_Noches_parte 2.xlsm.zip Asigna_Noches_sin_macro_parte 1.xlsm.zip
  5. Estoy intentando subir el archivo, tal cual lo tengo porque he pensado que hay cosas que igual le pueden servir a alguien, y si me pongo a borrar dificilmente me va a quedar sin errores. El zip pesa 355 Kb, alguna idea para poder subirlo?
  6. No había leído la Nota de Macro Antonio. No he subido el archivo porque la macro que tengo, pasada a un Word para poder leerla bien, son 38 páginas. La macro hace muchas más cosas y es difícil de seguir sin una explicación y pensé que si lo subía nadie perdería el tiempo leyendo y descifrando tanto. Pero voy a separar el "problema" del resto de cosas que hace la macro, y lo subo. Perdonad si he ofendido a alguien. En cuanto a lo de etiquetar el código VBA, no sé muy bien a qué os referís. Me lo podéis aclarar?
  7. Gracias JoseKar por tu aporte, el tema de buscar los valores mínimos ya lo tengo solventado. El problema es con el rango. El que tú me propones es continuo, aunque haya celdas vacías. Yo tengo 100 filas en las que buscar, todas con datos desde las columna L a la R. Lo que ocurre es que tengo que hacer muchas búsquedas, y en cada una con unas pocas filas solamente (máximo 7 filas a la vez)- Lo que se me ha ocurrido, aunque poco elegante, es hacer un Rango como el que puse en el primer post: Set Rng = Range("L" & rows(0) & ":R" & rows(0) & ",L" & rows(1) & ":R" & rows(1) & ",L" & rows(2) & ":R" & rows(2) & ",L" & rows(3) & ":R" & rows(3) & ",L" & rows(4) & ":R" & rows(4) & ", L" & rows(5) & ":R" & rows(5) & ", L" & rows(6) & ":R" & rows(6)) y si en un caso por ejemplo tengo que buscar sólo en las filas 3, 56 y 83, hacer rows(0) = 3, rows(1) = 56 y rows(2) = 83, y para que no me de fallo, hacer rows(3) a rows(7) igual a una fila donde no tenga valores. Pero me paree un poco cutre. Insisto en que gracias por intentar ayudar.
  8. Hola Macro Antonio, Primero agradecerte tu respuesta, pero creo que no me vale. Tu código me da un Rango continuo y mi problema es que mis rangos son discontinuos. En esencia, de una tabla, tengo que encontrar el valor mínimo de varias filas (alternas). Por ejemplo filas 7, 13 y 26. Esto muchas veces, variando las filas. Pero el número de filas también cambia, y si en la primera iteracción eran las 7, 13 y 26, en la segunda pueden ser las 34, 35, 47, 53, 59 y 65. Y en la tercera la 22 solamente, etc. Entonces, como esto lo hago cientos de veces, no quiero estar definiendo cientos de rangos, ese es mi problema. Gracias de nuevo.
  9. Hola a todos, llevo tiempo peleándome con una macro que estoy haciendo y me resultaría util tener un rango que variase según el criterio que os voy a contar, pero no sé cómo hacerlo: El Rango es: Set Rng = Range("L" & rows(0) & ":R" & rows(0) & ",L" & rows(1) & ":R" & rows(1) & ",L" & rows(2) & ":R" & rows(2) & ",L" & rows(3) & ":R" & rows(3) & ",L" & rows(4) & ":R" & rows(4) & ", L" & rows(5) & ":R" & rows(5) & ", L" & rows(6) & ":R" & rows(6)) que es básicamente las celdas de las columnas de la L a la R , donde rows() es la fila. rows() es una variable (integer que varía en función de otra llamada nccas) que se va redimesionando de la siguiente manera: Sub añadir(ByVal fila As Integer) nccas = nccas + 1 ReDim Preserve rows(0 To nccas - 1) rows(nccas - 1) = fila End Sub Así, si nccas = 7, tengo rows (0), rows(1)...hasta rows(6), para lo que me vale Rng según está definido. El problema es que nccas va variando según una serie de cosas que no vienen a cuento, con lo que rows se va redimensionando constantemente y Rng ya no me vale porque, por ejemplo, si ncca = 5, ni rows(5) ni rows(6) existe. Lo que no quiero es tener que ir redimensionando Rng de la forma: If nccas = 5 Then Set Rng = (".......) porque lo tendría que hacer un millón de veces . Después Rng lo uso para: x = Application.Min(Rng) Minimo Rng, x Bueno, la pregunta es: ¿Cómo se puede definir Rng para que dependiendo de nccas ( o de si existe o no rows(i)) se redimensione automáticamente? Gracias anticipada por vuestra ayuda. Alfredo
  10. Gracias Onardem, pero no es lo que busco. Voy a mandar un fichero, como "sugiere" Torquemada :-) - - - - - Mensaje combinado - - - - - Ahí va el archivo que he hecho hasta ahora. No lo había mandado porque no creo que aporte nada, pero bueno, siempre ayuda para explicarse. En la Hoja 1 ordeno aleatoriamente los 101 trabajadores para un día cualquiera. En la segunda hoja lo hago para los 365 días del año (en el archivo que envío en vez de 365 he puesto 35 días, para aligerar el archivo, y tb he reducido la tabla de 101 trabajadores a unos 20), pero claro, cada vez que se recalcula la tabla cambia el orden. En la tercera me dediqué a copiar y pegar los valores de la segunda hoja (cada vez que recalculaba pegaba para un día distinto) hasta que me aburrí y pensé que ese método era una tontería. Y por último, en la hoja "Turno de servicio" quería meter a los 13 que entraban a trabajar (tecleando su número en una columna) y que, en función de la fecha (o la hoja 3, o yo que sé qué) se me ordenasen de forma aleatoria (pero predefinida para podérselo mandar a los 101 trabajadores y que tuvieran una copia de la tabla anual, que no se pudiera luego modificar con nuevos recálculos). Espero que la explicación sea suficientemente clara. Gracias por vuestro interés. - - - - - Mensaje combinado - - - - - Ahí va el archivo que he hecho hasta ahora. No lo había mandado porque no creo que aporte nada, pero bueno, siempre ayuda para explicarse. En la Hoja 1 ordeno aleatoriamente los 101 trabajadores para un día cualquiera. En la segunda hoja lo hago para los 365 días del año (en el archivo que envío en vez de 365 he puesto 35 días, para aligerar el archivo, y tb he reducido la tabla de 101 trabajadores a unos 20), pero claro, cada vez que se recalcula la tabla cambia el orden. En la tercera me dediqué a copiar y pegar los valores de la segunda hoja (cada vez que recalculaba pegaba para un día distinto) hasta que me aburrí y pensé que ese método era una tontería. Y por último, en la hoja "Turno de servicio" quería meter a los 13 que entraban a trabajar (tecleando su número en una columna) y que, en función de la fecha (o la hoja 3, o yo que sé qué) se me ordenasen de forma aleatoria (pero predefinida para podérselo mandar a los 101 trabajadores y que tuvieran una copia de la tabla anual, que no se pudiera luego modificar con nuevos recálculos). Espero que la explicación sea suficientemente clara. Gracias por vuestro interés. UNIVERSAL1.xls
  11. Entonces me va a tocar aprender a programar macros?
  12. El problema que tengo que resolver es el siguiente: Una empresa dispone de una plantilla de 100 personas. Cada día llama a trabajar sólo a 15 de ellas mediante un correo electrónico dirigido a las 100, y éstas 15 deciden repartirse las tareas como mejor les parezca (hay 15 tareas). El tema es que en vez de sortear cada día al entrar a trabajar qué tarea le toca a cada uno, refieren saberlo de antemano. Es relativamente fácil, poner quince nombres y que se ordenen aleatoriamente (y entonces en ese orden elegirán sus tareas). El problema es que si cada vez que le das al F9 cambia se reordena la lista, es imposible tener un orden aleatorio que no sea manipulable. No sé si me explico, si soy el encargado de hacer la lista de elección de tareas y utilizo algo del tipo =BUSCARV(K.ESIMO.MENOR($B$3:$B$103;A6);$B$3:$C$103;2;FALSO) y no me gusta el resultado, le doy a F9 y obtengo otro. Me gustaría hacer algo en función de la fecha, por ejemplo, que me ordene aleatoriamente mi lista, pero no se me ocurre nada. Otra idea que he tenido es ordenar toda la lista para cada día del año y dejar "la foto" fija, es decir, pegar los valores. Pero tendría que ejecutar, copiar y pegar valores 365 veces. Y además se puede dar el caso (injusto) que siempre una persona en concreto esté por encima de otra. No sé si me he hecho entender, pero espero vuestras aportaciones. Por cierto, uso mac, con lo que no puedo hacer macros. Gracias por anticipado.
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5