Jump to content

el_trasgu

Members
  • Content Count

    36
  • Joined

  • Last visited

Posts posted by el_trasgu

  1. Muchísimas gracias Antoni, la verdad que algo más claro el código me queda. Aunque por ahora, me sigue resultando imposible desarrollar los siguientes algoritmos, aún se me escapan trozos de código que no me quedan claros del todo.

    Me pasa como con los estudios, estamos dando Java y C#, y en ésta primera evaluación ando perdido del todo, de echo, las asignaturas de programación, las he suspendido.

    Por cierto, si cambio en el proceso A, el tiempo de llegada de 0 por 1, me escribe espacios en blanco en los estados de espera.

    Me sorprende la capacidad de resolución que demuestras, quien pudiera.

    Muchísimas gracias por todo, espero algún día poder enterarme de algo. Un saludo

  2. Hola Antoni, buenos días

    El código que me has enviado me arroja en error si cambio el instante de llegada, y en lugar de ponerlo en cero, lo pongo en tres

    imagen.thumb.png.e55ee6cf289c9d0d432091ab9c089f72.png

    imagen.thumb.png.a9477aeb6a0e801f6f2bfa6c0f6e186e.png

    Por otra parte, me pasa lo mismo que en las veces anteriores que me has resuelto mis dudas y solucionado mis deseos, que no me entero de tu código.

    Mira que no es muy extenso, pero aún así, no lo entiendo

    Sub FIFO_FCFS()

    'para que la pantalla no se actualice
    Application.ScreenUpdating = False


    fila = 17   'Fila inicio
    columna = 2 'Columna inicio
    '--
    Cells(fila, columna).Resize(10, 30).ClearContents                'Limpiamos
    Cells(fila, columna).Resize(10, 30).Interior.ColorIndex = xlNone 'Quitamos color relleno
    '--

    'si la celda E5 contiene algún valor
    If Range("E5") <> "" Then

       'vete leyendo hacia abajo las filas desde la celda E4 ? (Pero no entiendo porque le das a x el valor 5, y luego referencias la celda E4
       For x = 5 To Range("E4").End(xlDown).Row

          'Aquí me pierdo totalmente, porque no entiendo lo del Resize(1, ni que significa el Range("M". Y que lo haga a partir de fila = 17 y columna = 2
          Cells(fila, columna).Resize(1, Range("M" & x)) = "E"                  'Valor E según tiempo

          'Aquí entiendo que a las mismas celdas del código de arriba donde escribes la "E", las pinte de rojo
          Cells(fila, columna).Resize(1, Range("M" & x)).Interior.Color = vbRed 'Color rojo

          'Aquí me vuelve a pasar lo mismo, me pierdo en el Range("I"
          If Range("I" & x) > 0 Then

             'A partir de fila=17 y columna=2 y me vuelvo a perder en el Resize, que lo pinte de color gris
             Cells(fila, Range("I" & x) + 2).Resize(1, columna - Range("I" & x) - 2).Interior.ColorIndex = 15 'Gris
          End If

          'a la fila le sumanos 1
          fila = fila + 1

          'a la columna le sume el valor que se me escapa de Range("M" & x)
          columna = columna + Range("M" & x)
       Next
    End If
    End Sub

     

    Un saludo y muchas gracias, como siempre, por tu tiempo de dedicación y tu ayuda

  3. Hace 2 horas, Antoni dijo:

    Abre el adjunto y pulsa el botón FIFO_FCFS.

    A ver si soy capaz de encontrar el mecanismo por el que se determinan los valores de las celdas en gris (L?), de momento, no lo he conseguido. ¿Se supone que Lx representan los procesos en espera en un instante dado?

    Procesos.xlsm 398.85 kB · 0 descargas

    Cuando un proceso "B" entra para su ejecución en el instante 2, por ejemplo, y en ese momento se está ejecutando otro proceso "A" que finalizará en el instante 6, los instantes de espera comprendidos entre el instante de llegada 2, y el instante 6 de finalización del proceso "A", serán los que esté en el estado Listo, y se representa como L1.

    Si en el instante 4, entrase un proceso "C", pasaria al estado de Listo, pero en éste caso de representaría como L2, pues tiene delante al proceso "B" como L1 también en estado listo y en espera.

    Un proceso "D" que entrase en el instante 5, pasaría al estado de Listo y se representaría como L3, pues tiene dos procesos en espera delante.

    Al finalizar el proceso "A", estasmos en el instante 6, el proceso "B" entraría en ejecución, y pasaría al proceso "C" a L1, y al proceso "D" a L2.

    El proceso "B" tiene un tiempo de ejecución de 4, entre los instantes 6 y 9. Al finalizar éste, estaríamos en el instante 10.

    El proceso "C" entraría en ejecución, pasando al proceso "D" a L1. Estaría en éste estado hasta el instante 17 que finalizaría la ejecución del proceso "C".

    En el instante 18 el proceso "D" entraría en ejecución, y en esos momentos no habría más procesos en espera.

    En el instante 20 el proceso "D" finalizaría su ejecución, liberando el procesador en el instante 21

    imagen.thumb.png.10388b35199a63c848f243fbb7611494.png

  4. Y ahora entraría el siguiente algoritmo, el Round-Robin

    Este lo que hace, es darle a cada tarea un tiempo de ejecución por defecto, que en el caso del problema de la imagen es 1.

    lo que hace, es que al llegar un proceso lo ejecuta durante un milisegundo. Si al acabar no hay ningún proceso más, vuelve a ejecutar el A durante otro milisegundo. Si al acabar entra otro proceso, ejecutará éste segundo proceso durante 1 milisegundo. Al acabar mirará cuantos procesos nuevos han entrado y cuántos hay en espera. Y los irá ejecutando todos, por orden de llegada, pero durante ese milisegundo alternando entre todos los procesos.

    imagen.png

  5. A ver si logro explicarme mejor, los datos de entrada, están en la primera tabla de mi fichero, y recojo los datos con el primer array A_Datos.

    Sería tipo al siguiente ejercicio, yo los procesos los he identificado con números en lugar de letras.

    El primer proceso A si inicia en 0, o sea, en la celda B17, que se corresponde con A0 en la tabla de abajo. y tiene una duración de 3 milisegundos, de ahí las tres "E"

    El segundo proceso B, se inicia en 1, sería la celda C18, se corresponde con B1 en la tabla de abajo. pero como se está ejecutando el proceso anterior, tiene que pasar al estado de listo, que se representa con L1.

    Cuando se acaba de ejecutar el proceso A, se empezará a ejecutar éste segundo proceso B, que se iniciará en lugar del instante 1 (C18), en el instante 3 (E18), y tendrá una duración de 6 milisegundos, se ahí las 6 "E"

    El tercer proceso C, llega en el milisegundo 3, que está ocupado por el proceso B, por lo tanto pasará al estado de listo (L1 - primer poceso en espera).

    Se ejecutará en el instante 9 (Como ves, los instantes de ejecución, son la suma de los procesos ejecutados con anterioridad (el proceso A tardo 3 milisegundos en ejecutarse, el proceso B, tardó 6. 3 + 6 = 9. El tercer proceso C, a pesar de llegar en el instante 3, no se podrá ejecutar hasta el instante 9)

    imagen.thumb.png.bfdd4be4d4efb7ed6a2e17bfda0a9e2c.png

    En esta segunda imagen pongo otro tipo de algoritmo. Es el SJF

    En él, los procesos, en lugar de ejecutarse por orden de llegada, se ejecutan por tiempo de ejecución más corto.

    El proceso A tiene 3 milisegundos de ejecución. Al llegar al micro-procesador, no hay ningún proceso más en ejecución ni en espera, por lo que al llegar se ejecuta, tardando 3 milisegundos.

    Mientras se está ejecutando el proceso A, entra el proceso B, que tardará 6 milisegundos en ejecutarse, pero como el micro está ocupado, pasa al estado de espera (Listo1)

    Justo al tiempo de acabar de ejecutarse el proceso A, entra el proceso C, y aunque el proceso B está listo para ejecutarse y en espera, como éste proceso C, tiene un tiempo de ejecución más corto, 3, se ejecutará primero que el proceso B, y éste seguirá a la espera. Como ves en la gráfica, aún se ejecutan dos procesos más, en E y el D antes que el B.

    imagen.thumb.png.9e78250018c53001ebec35be36516cb5.png

    Espero haberme expllicado mejor en ésta ocasión, aunque la verdad es que a mi me ha costando entenderlo un rato largo, jeje

    Un saludo y muchas gracias

     

     

  6. Hola a todos

    En la asignatura de Programación de Servicios y Procesos, me piden representar en unas tablas los tiempos de ejecución de los procesos, los tiempos de espera y el orden de llegada.

    Se me ocurrió intentar hacerlo, pero programado en vba. Lamentablmente, me pasa como en mis anteriores proyectos, lo imagino, pero no logro llevarlo a la práctica.

    Tengo una matriz, donde meto los datos de los procesos:

    Orden de llegada ordenados por número de proceso del 1 al 9 y que identifican cada proceso en una fila diferente.

    Tiempo de llegada, que será la celda desde donde se comenzará a ejecutar el proceso, o sea, si llega en 3 milisegundos, empezará a ejecutarse en la tercera celda de la tabla

    Tiempo de ejecución, que serán  los milisegundos que se estarán ejecutando, representados por una "E", que se escribirá desde la celda de llegada el número de celdas que represente dicho tiempo. O sea, si tiene 3 de tiempo de llegada y 6 de tiempo de ejecución, se escribirán seis "E", desde la celda 3, hasta la celda 9 y en la fila que corresponda el número del proceso

     

    he conseguido hacerlo, si solo fuera un proceso y utilizamos una sola línea. Pero cuando ya intento incluir una línea por proceso e incluyo unos cuántos, me pierdo.

    Lo he intentado con varios array, con varios for, con while. Pero no tengo aún los conocimientos que me permiten hacerlo funcionar.

    He creado el array de los datos de entrada:

    Dim A_Datos(1 To 3, 1 To 9)
    Dim i As Integer, j As Integer
    For i = 1 To 3
       For j = 1 To 9
          If ("E" & (j) <> " ") Then
             A_Datos(i, j) = Cells(5 + i, 5 + j).Value
          End If
       Next j
    Next i

    Luego he creado los array de las tablas donde representaría esos datos:

    'Algoritmo FCFS (Primero en llegar, primero en servir
    'Los procesos se ejecutan por orden de llegada y el resto se va poniendo a la cola
    Dim A_Fifo(1 To 31, 1 To 9)
    Dim fi As Integer, fj As Integer
    For fi = 1 To 31
       For fj = 1 To 9
          A_Fifo(fi, fj) = Cells(17 + fi, 2 + fj).Value
       Next fj
    Next fi
    
    'Algoritmo SJF --> El más corto primero
    'Se van ejecutando los procesos con menos tiempo de ejecución.
    'Los demás se van poniendo a la cola y ejecutando los más cortos primero
    Dim A_Sjf(1 To 31, 1 To 9)
    Dim Si As Integer, Sj As Integer
    For Si = 1 To 31
       For Sj = 1 To 9
          A_Sjf(Si, Sj) = Cells(30 + Si, 2 + Sj).Value
       Next Sj
    Next Si

    Pero lamentablemente, no se muy bien, como hacer ahora para que los datos del primer array, se escriban en las tablas de los arrays correspondientes

    Estoy totalmente perdido

    Alguien me podría hechar una mano ?

    Muchas gracias

    Procesos.xlsm

  7. Hace 1 hora, Antoni dijo:

    ¡Fíjate tu!, y a mi que me gusta más así:

    
    Sub SRT()
    Select Case progreso
       Case "A": f = 17
       Case "B": f = 18
       Case "C": f = 19
       Case "D": f = 20
       Case "E": f = 21
       Case "F": f = 22
       Case "G": f = 23
       Case "H": f = 24
       Case "I": f = 25
       Case "J": f = 26
    End Select
    Cells(f, instante).Resize(1, tiempo - instante + 1).Value = "E"
    End Sub

     

    Que grandes soid, pero a unos niveles que están muy por encima de mis posibilidade

    Tomaré nota, muchas gracias

  8. Hola a todos

    Tengo éstos dos códigos un dos módulos diferentes

    pero me da error Case sin Select Case, y no entiendo el motivo, si apenas tengo código, eso esto que pongo

    Y ya de paso, preguntar si el for sería correcto para rellenar celdas con la letra "E", desde la celda que conincida con el valor que contiene la variable instante en la fila número 17, el número de celdas que contiene la variable tiempo

    Lo que busco, es que, si por ejemplo, progreso tiene el valor "A", instante tiene el valor 4, y tiempo tiene el valor 6. Se empiece a escribir la letra "E", en la fila 17, y desde la celda "E17", hasta la celda "J17", suponiendo que la tabla a rellenar empieza en la celda A16, teniendo las cabeceras de la misma ocupando la fila 16 y la columna A

    Las variables están declaradas en otro módulo como públicas

    Muchas gracias

     

    
    Sub calcular()
    
        proceso = Range("D4").Value
        instante = Range("G4").Value + 1
        tiempo = Range("k4").Value
        
        SRT
    
    End Sub

     

    Sub SRT()
    
    Select Case progreso
    
        Case "A"
        
                For i = instante To tiempo
                    Cells(17, i).Value = "E"
                    
        Case "B"
                For i = instante To tiempo
                    Cells(18, i).Value = "E"
       
        Case "C"
       
        Case "D"
       
        Case "E"
       
        Case "F"
       
        Case "G"
       
        Case "H"
       
        Case "i"
       
        Case "j"
                                            
    End Select
    
    End Sub

     

  9. Pues "avalencia", muchísimas gracias, es exactamente lo que buscaba

    Private Sub Workbook_Open()
        Dim pass As Integer
        pass = 12345
        Workbooks.Open Filename:=ThisWorkbook.Path & "\Pass2.xlsm", Password:=pass
    End Sub

    De ésta forma me queda perfecto, y puego usar la variable "pass" para procesarla y editarla cuanto estime necesario.

  10. Si me lo permites, por lo sensible de la información, he creado tres ficheros vacíos de la misma forma que los originales.

    La contraseña en los tres es la misma: 12345

    Gracias por el tiempo que me dedicas.

    En el trabajo tengo los tres ficheros, donde tengo que introducir información en cada uno de ellos, son tres informes que cada uno de los que estamos en el mismo puesto de trabajo, rellenamos en cada turno, tres de mañana, tres de tarde y tres de noche.

    La contraseña es corporativa, y como puedes comprender, se trata de un serie alfanumérica que cambia cada tres meses, y es un engorro tener que meterla tres veces para tres informes.

    La idea, sería meter la cotraseña en el primer imputbox que desprende el primer fichero, almacenarla en una variable y usarla para una vez abierto el segundo y tercer fichero por código vba, usar la variable para introducir la contraseña guardada en el imputbox que corresponde a cada uno de los dos ficheros abiertos y así meter una sola vez la contraseña.

    Lo curioso, es que podríamos modificar cada uno de los ficheros por vba y sin embargo, no podemos crear ni almacenar nuevos ficheros, ni siquiera de texto, en ninguno de los directorios del sistema. Pues hasta hace unos meses teníamos un fichero de texto con la contraseña que copiábamos y luego pegábamos al iniciar los ficheros.

    Pero nos pillaron y nos prohibieron de repetirlo

    Un saludo y muchas gracias

    Pass3.xlsm Pass1.xlsm Pass2.xlsm

  11. Hola a todos

    Tengo tres libros protegidos y cifrados. Los tres libros tienen la misma contraseña.

    Mi pregunta se refiere, a que cuando se carga el imputbox de petición de contraseña al abrir el primer libro, sería posible, copiar esa contraseña introducida de alguna menera haciendo que se abra el segundo libro y se pegue en el imputbox correspondiente, haciendo lo mismo con el tercer libro.

    He mirado y en vba no queda constancia de ese imputbox de apertura que usa el excel 365 al proteger con contraseña y cifrar el fichero.

    Un saludo y muchas gracias

  12. Hace 6 horas, Antoni dijo:

    ¡Jo..!, no acierto ni una. 

    Ahora creo que si.

    Planificación Formulario Final II.xlsm 265.61 kB · 1 descarga

    Increible Antoni, ahora si, funciona todo y funciona a la perfección. Es una pasada. Muchísimas gracias.

    Por fin y solo gracias a ti, veo luz en mi proyecto. Eso si, también tengo que decir que salvo lo de igualar a cero la función del tiempo, no veo otro cambio. El caso es que sigo sin entender como funciona.

    Lo dicho, muchísimas graciasssssss

  13. Hola Antoni, muchísimas gracias por todo tu trabajo, al final, practicamente me lo has hecho tu entero.

    Sólo detecto dos errores.

    En el rango de celdas I9:K13, donde va la distancia Total, iría sumando la distancia parcial del tramo actual, más la distancia acumulada de los anteriores.

    o sea: en i9:k13  sería el mismo resultado de i4:k8, pues es el primer punto.

    en i19:k23 iría la distancia del tramo actual i14:k18 + la distancia acuamulada del anterior i9:k13

    En i29:k28, iría la distancia del tramo actual i24:k28 + la distancia acumulada de los anteriores i19:k23

    Con el tiempo, pasaría lo mismo. En las celdas l9:k13, irían los tiempos del tramo actual más los acumulados de los anteriores

     

    Me da cosa corregir errores, pero lamentablemente no entiendo el código, y no sé donde podría modificar la fórmula, lo siento.

    Te subo el archivo con mis últimas icorporaciones sumadas a todos tus trabajos

    Un saludo y muchísimas gracias

    Planificación Formulario Final II.xlsm

  14. Hace 17 horas, Antoni dijo:

    He eliminado todas las fórmulas y formatos condicionales a partir de la columna E y he incluido las acciones en las macros.

    Esto te permitirá borrar/copiar la información de entrada sin el peligro de borrar las fórmulas y los formatos.

    Abre el adjunto y pulsa sobre el botón Calcular, a ver que te parece.

     

    Planificación con rumbo, tiempo y pendiente-TOTAL.xlsm 142.97 kB · 2 descargas

    Fantástico Antoni, muchísimas gracias

    Todo a la perfección, tal como esperaba e imaginaba. una pasada. Increibleeee

  15. Hola Antoni, te vuelvo a agradecer todo tu tiempo. Si te pasas alguna vez por Asturias y te gusta la montaña, tienes guía gratis para realizar alguna ruta de montaña

    Te paso la hoja con la que realizo los cálculos del tiempo

    Cálculos de tiempo.

    Aunque es un dato que requiere mucho de nuestra experiencia, utilizamos las siguientes reglas:

    •Una persona sola o grupo entrenado recorre en una hora 500 m de desnivel o 5 Km/h en distancia reducida.

    •Un grupo normal recorre 400 m de desnivel la hora o 4 Km/h en Distancia reducida.

    •Un grupo flojo recorre 300m de desnivel o 3 km/h

    El Cálculo lo realizamos de la siguiente forma:

    •1º Averiguamos los Metros de desnivel y los Km. en Distancia reducida (Dr) según la regla anterior.

    •2º Sumamos la cantidad mayor más la mitad del menor.

    •3º En caso de descenso al tiempo total se le resta un tercio.

    La estimación del tiempo es conveniente hacerla por cada una de las líneas directrices. Normalmente, se añade al tiempo obtenido, un 10% por paradas y un 10% seguridad e imprevistos.

     

    Ejemplo:                    Grupo normal                    Desnivel: 800 m.                        Dr.: 12 Km.                                     

    Tiempo en desnivel : 2 horas

    Tiempo en Dr.: 3 horas

     

    Cálculo de tiempo = 3 + 1 = 4 horas

    En caso de bajada:

    Tiempo = Tiempo subida –1/3 de tiempo subida 4 horas x 2 / 3 = 2 ́40 horas

    Cálculo de tiempo rutas.xlsx

  16. Hace 22 horas, Antoni dijo:

    He corregido las fórmulas de las columnas G9, G19, G29, G39,......, que a mi modo de ver estaban equivocadas.

    Por ejemplo : 

    G19=SI(G14>0;SI(G14>G4;G14-G4;SI(G14>G4;G4-G14;SI(G14=G4;0;"")));"")

    la he cambiado por:

    G19=SI(G14>0;SI(G14>G4;G14-G4;G4-G14);"")

    El tema de la pendiente era un problema conceptual por mi parte, al considerar que la subida/bajada era en relación al punto siguiente y no al anterior.  Ahora al ver que la altura inicial va en la celda A8, lo he visto claro, o al menos eso creo.

    A ver si es esto.

    Has de tener en cuenta que solo se recalcula la representación de la pendiente en la fila que has hecho el cambio.

    Solo eliminando las cabeceras intercaladas se podría articular el recalculo hasta el final.

    Planificación con AZIMUT y pendiente - copia (1).xlsm 208.53 kB · 2 descargas

    ¡¡¡ Perfecto !!!
     

    Muchísimas gracias Antoni, funciona a la perfección, justo como había deseado.

    Un trabajo incrible, alucinante. Sigo sin entender el código aún estando comentado, pero es lo que tiene no tener ni idea.

    Vaya, estoy alucinado, es una pasada. Lo dicho, muchísimos e inestimables agradecimientos.

  17. Hola a tod@s

    Tengo una hoja de excel en la que introduzco los datos de una ruta de montaña. Esta hoja la he conseguido tener, gracias al inestimable e imprescindible trabajo de Antoni.

    Ahora la duda, teniendo esa hoja, es la de poder calcular los tiempos de ruta.

    Tengo todas las fórmulas para el cálculo de dichos tiempos metidos en la hoja, en un apartado dentro del código, lo he marcado como:

    '-------------------Inicio

    '-------------------fin

    Esas fórmulas son las que me calculan los tiempos de cada tramo de la ruta. Pero yo las tengo para el cálculo de punto a punto de forma individual, y descnozco como se debería de hacer para que esas fórmulas se calculen en cada uno de los tramos y se agregue al rango de celdas L3:N8, L13:N18, L23:N28, L33:N38, etc.

    En un repaso, la explicación sería:

    El ritmo de ascenso, en metros hora, que se le supone al grupo, lo ponemos en la hoja2, en la celda A18

    El ritmo de marcha del grupo, en kilómetros hora, lo metemos en la hoja2, celda B18

    Introducimos un tiemo estimado para paradas, descansos o imprevistos, en la celda C18 de la hoja2. este valor será un porcentaje

    Con esos datos anteriores los cálculos serían los siguientes:

    Si el tramo es de ascenso:

    Multiplicamos el desnivel por 60 y lo dividimos entre la velocidad de ascenso

    Multiplicamos la distancia por 60 y los dividimos entre la velocidad de marcha

    Cogemos los valores máximos y mínimos de los cálculos anteriores y los almacenmos en variables

    tomamos el valor máximo de las variables y lo sumamos al valor mínimo de las variables dividido entre 2

    Si el tramo es en descenso:

    Hacemos los mismos cálculos hasta llegar al último, en éste caso, multiplicamos dos tercios por el valor máximo de las variables y lo sumamos al valor mínimo de las variables dividido entre dos

    En el caso de terrenos llano:

    Multiplicamos la distancia por 60 y lo dividimos entre la velocidad de tramo

    Finalmente, sumamos lo obtenido en cada cálculo y le sumamos el porcentaje de la celda C18

     

    Me lo podría mirar alguien ?

    Muchas gracias

    Planificación con AZIMUT y pendiente - Form.xlsm

  18. Hola Antoni, me sorprendes por la dedicación, ya no se como agradecerlo

    Varias cosas, aunque me sabe mal mencionar los errores que encuentro, pues es como buscar los fallos.

    La verdad es que siento decir que el tema de la pendiente no va muy fino, pues no se adapta a la información que muestra la celda con el porcentaje de la pendiente (Fila O), Veo que llevas el dato a la hoja 2 celda A13 y luego realizas las fórmulas. No se si el error estará en el mismo cálculo de esas fórmulas, pero a veces me pone bajada cuando en realidad es subida y viceversa.

    Observo otro error en la celda G39, aún teniendo la fórmula bien metida como en el resto, no hace los cálculos, está metida pero no calcula, no se si es que estará afectada por algún código de la programación.

    Para calcular la altura del primer punto, la altura la meto en la celda A8.

    El tema de la brújula con los grados me tiene alucinado, es una pasada como funciona.

    Planificación con AZIMUT y pendiente - copia.xlsm

  19. Hace 3 horas, qwerty123 dijo:

    Hola.

    Por si sirve de algo, para calcular el ángulo en función de la pendiente:    =GRADOS(ATAN(pendiente/100))

     

    Un saludo.

     

    Gracias qwerty123

    En la hoja de excel la fórmula que empleo pasar la pendiente a porcentaje, se basa en los metros de ascenso y la distancia:

    Porcentaje de Pendiente = Altura / Base * 100

    Para calcular el ángulo de la pendiente con la fórmula que has puesto, la cosa se complica, supongo que primero habría que calcular los grados de la misma, creo que sería la siguiente fórmula:

    Pendiente en Grados = ArcTangente (Altura / Base)

    Una vez obtenidos los grados de la pendiente, se pasaría a utilizar la que has comentado:

    Angulo de Pendiente = GRADOS(ATAN(pendiente/100))

     

  20. Muchas gracias Antoni

    Te puedo decir que yo me puse varias veces con tu código a ver si logro ponerle lógica, y no hay manera. No entiendo nada.

    No entiendo de donde sacas la circunferencia ni la flecha.

    No entiendo como coges los datos de la hoja

    Bueno, de un código como el mio que tenía decenas de líneas y no funionaba a uno como el tuyo de cuatro líneas hay una sustancial diferencia, jeje

    Pues lo dicho, que muchísimas gracias

  21. Hola Antoni

    Cuando hablo de pendiente negativa, es por el tramo con relación al punto anterior. O sea:

    Si G14:H18, es mayor que G4:H8, la pendiente será de subida.

    Si G14:H18, es menor que G4:H8, la pendiente será de bajada.

    La pendiente en porcentaje no tiene una transferencia directa a grados. Por eso resulta bantante complicado de calcular, la regla de 3 no sirve. Además, tenemos la impresión de que una cuesta con una inclinación del 100% sería vertical, cuando en realidad casi equivale a un ángulo de 45 grados. Para tener una pendiente vertical, nos tendríamos que ir a un 1000%.

    Como imagen para el apartado de la pendiente, no se si sería posible, en lugar de una esfera como en el caso de la dirección, poner un simple ángulo y que se vaya digujando la recta en función del porcentaje.

    gradient8.png

    400px-Slope_quadrant.svg.png

    Pendientes porcentaje y grados.jpg

×
×
  • Create New...

Important Information

Privacy Policy