Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - SchroederAaron

Páginas: [1]
1
Hola, necesito saber como activar el ScrollBarVertical en una Page que esta dentro de un Multipage en VBA, ya que la información que se encuentra en esta pagina es muy largo y el largo de la Multipage en General la necesito más pequeña. Ya active en las propiedades de la pagina (page):

KeepScrollBarsVisible     3-fmScrollBarsBoth
ScrollBars                       2-fmScrollBarsVertical
ScrollHeight                    0 (no se cambia)
ScrollLeft                        0 (no se cambia)
ScrollTop                        0 (no se cambia)
ScrollWidth                     0 (no se cambia)

Sin embargo, el desplazamiento no esta activado, espero que me puedan ayudar, gracias de antemano

2
Hola a todos quería saber si existe alguna forma de reducir este código de VBA para un
CheckBox

CheckBox(PASO1_D, PASO2_D, PASO3_D, PASO4_D, PASO4_D, PASO5_D, PASO6_D, PASO7_D)

y para un TextBox

TextBox (ComD_1, ComD_2, ComD_3, ComD_4, ComD_5, ComD_6, ComD_7).

La cuestión es que aqui son 7 de cada uno, pero si llegaran a ser 100 o 1000 pues se pone complicado.

Este es parte el código:
Código: [Seleccionar]
PASO1_D.Caption = Worksheets("Plantilla MPD").Range("A8")
PASO1_D.Left = 6
PASO1_D.Top = 30
PASO1_D.Width = 300
PASO1_D.Height = 30
PASO2_D.Caption = Worksheets("Plantilla MPD").Range("A9")
PASO2_D.Left = 6
PASO2_D.Top = 60
PASO2_D.Width = 300
PASO2_D.Height = 30
PASO3_D.Caption = Worksheets("Plantilla MPD").Range("A10")
PASO3_D.Left = 6
PASO3_D.Top = 90
PASO3_D.Width = 300
PASO3_D.Height = 30
PASO4_D.Caption = Worksheets("Plantilla MPD").Range("A11")
PASO4_D.Left = 6
PASO4_D.Top = 120
PASO4_D.Width = 300
PASO4_D.Height = 30
PASO5_D.Caption = Worksheets("Plantilla MPD").Range("A12")
PASO5_D.Left = 6
PASO5_D.Top = 150
PASO5_D.Width = 300
PASO5_D.Height = 30
PASO6_D.Caption = Worksheets("Plantilla MPD").Range("A13")
PASO6_D.Left = 6
PASO6_D.Top = 180
PASO6_D.Width = 300
PASO6_D.Height = 30
PASO7_D.Caption = Worksheets("Plantilla MPD").Range("A14")
PASO7_D.Left = 6
PASO7_D.Top = 210
PASO7_D.Width = 300
PASO7_D.Height = 30


Lo que tenia pensado era algo similar a esto

Código: [Seleccionar]
For n=1 to 7
PASOn_D.Caption = Worksheets("Plantilla MPD").Range("A8").offset(n-1,0)
PASOn_D.Left = 6
PASOn_D.Top = 30*n
PASOn_D.Width = 300
PASOn_D.Height = 30
next n


Y para los TextBox

Código: [Seleccionar]
ComD_1.Left = 6
ComD_1.Top = 6
ComD_1.Width = 400
ComD_1.Height = 30
ComD_2.Left = 6
ComD_2.Top = 36
ComD_2.Width = 400
ComD_2.Height = 30
ComD_3.Left = 6
ComD_3.Top = 66
ComD_3.Width = 400
ComD_3.Height = 30
ComD_4.Left = 6
ComD_4.Top = 96
ComD_4.Width = 400
ComD_4.Height = 30
ComD_5.Left = 6
ComD_5.Top = 126
ComD_5.Width = 400
ComD_5.Height = 30
ComD_6.Left = 6
ComD_6.Top = 156
ComD_6.Width = 400
ComD_6.Height = 30
ComD_7.Left = 6
ComD_7.Top = 186
ComD_7.Width = 400
ComD_7.Height = 30

algo como
Código: [Seleccionar]
For n=1 to 7
ComD_n.Left = 6
ComD_n.Top = 6+(n-1)
ComD_n.Width = 400
ComD_n.Height = 30
next n

Espero que me puedan orientar sobre estos temas, gracias de antemano.

3
Hola no sé cual es el problema en este código de VBA, lo que quiero que haga es que me sume los valores con dos condiciones, la primera es que sume los valores <>0 y los valores que correspondan a los meses de enero, estoy ocupando la función "sumIFs" y este es el código, el que me pueda ayudar se lo agradeceré

Application.WorksheetFunction.SumIfs(Range(Range("H4"), Range("H4").End(xlDown)), Range(Range("A4"), Range("A4").End(xlDown)), "<>0", Month(Range("C4")))

4
Aprender a programar desde cero / Construcción de diagramas ternarios
« en: 19 de Septiembre 2014, 19:11 »
Quiero hacer un diagrama ternario de clasificación de rocas ígneas, sedimentarias y metamorficas en excel en diagramas ternarios pero no como aparecen en excel si no que coloque un punto, alguien me puede orientar

5
Hola estoy haciendo una hoja de calculo para hacer regresiones polinómicas, todo se calcula muy bien solo que por cuestiones de presentación quiero que en los coeficientes que no este utilizando no aparezca "#N/A" sino la casilla en blanco, adjunto archivo donde al cambiar el grado del polinómio en la casilla "G1" de 0 a 8.

Para explicarme más claramente en el ejemplo que mando: Si yo coloco un 4 en la casilla "G1" los coeficientes:
a₀=3.44E+05, a₁=9.69E+04, a₂=-1.06E+03, a₃=5.73E+00, a₄=-1.05E-02, a₅=#N/A, a₆=#N/A, a₇=#N/A, a₈=#N/A y quiero que aparezca así:
a₀=3.44E+05, a₁=9.69E+04, a₂=-1.06E+03, a₃=5.73E+00, a₄=-1.05E-02, a₅=0.00E+00, a₆=0.00E+00, a₇=0.00E+00, a₈=0.00E+00.

Espero que me pueda ayudar, muchas gracias de antemano.

6
Perfecto, ya salio el problema, gracias....

7
De acuerdo eso lo se hacer, pero lo que necesito es sacar los coeficientes sin el gráfico, ni agregando línea de tendencia, sino con alguna secuencia, arreglo o formula

8
Aprender a programar desde cero / Re:Regresión Polinómica
« en: 02 de Julio 2014, 17:17 »
No yo no he creado ningún calculo ni procedimiento, lo que necesito es una forma de sacar los coeficientes del polinomio creando una formula o procedimiento.

En el archivo de Excel que he voy a adjuntar, esta explicito lo que se necesita, y explico un poco más a detalle.

En la Hoja, el Rango $B$3:$D$49 es la tabla de datos con los que se construye la gráfica para sus correspondientes curvas f(x) y g(x), después le agrego la linea de tendencia a f(x) y  g(x) (polinomio de 4to grado), que es el que más se ajusta por el tipo de curva.

Excel crea una ecuación a partir de una regresión polinómica y presenta el valor de R cuadrada, lo que necesito o quiero hacer es, determinar los coeficientes de esta regresión polinómica y el valor de R cuadrada sin hacer el procedimiento de: agregar la línea de tendencia, agregar ecuación al gráfico y presentar el valor de R cuadrada en el gráfico.

El ejemplo son datos de una presa de áreas-elevación y capacidad de almacenamiento; como tengo que analizar más de 100 presas necesito sintetizar esto, gracias por tu ayuda.

P.D. creo que desde el archivo adjunto se entiende mejor.

9
Aprender a programar desde cero / Re:Regresión Polinómica
« en: 01 de Julio 2014, 17:53 »
Precisamente eso es lo que necesito, cuando se realiza una gráfica y le das click con el botón derecho y seleccionas la opción "Agregar línea de tendencia" y seleccionas la opción Polinómica Orden 4, y las opciones de "Presentar ecuación en el gráfico" y "Presentar el valor R".

Con estas opciones aparece una ecuación en el gráfico, la cual es una ecuación polinómica de cuarto orden, lo que necesito extraer son los coeficientes de esta ecuación.

Me imagino que Excel tiene una rutina para sacar esa ecuación o algo así.

10
Hola a todos, estaba viendo la forma de encontrar los coeficientes de una regresión polinómica partiendo de datos de una tabla, para este caso se necesita un polinómio de cuarto grado, mando una hoja de Excel con los datos, gracias y espero su ayuda

11
Hola oye una pregunta en los cálculos que haz hecho cuando llegas a el resultado de 0,000000107344277886442000 tienes un código que lo hace en una sola celda?
Es que con eso creo que ya queda lo que necesito y ya quedaría.

Con el resultado que te da de 68062,377709 no se por que sale eso, en el archivo, en la celda M15 esta la formula =PRODUCTO(COND($K15,M$1,$L15),W($K15,M$1,2,3,2),1000000) y en la celda AA15 esta la formula =SI.ERROR(PRODUCTO(PRECIP($K15,M$1,$L15),COND($K15,M$1,$L15),W($K15,M$1,2,3,2),SUMA($M15:$V15)^-1),0), lo que esta en rojo es la suma de todos los punto y divide a cada una de las celdas de AA15 hasta AJ15 y eso a su vez se suma

Espero que esto ya quede, gracias por tu tiempo.

12
Es cierto, si te fijas en el rango (M15:V15) la inversa de la distancia esta multiplicada por 1,000,000; esto es por que las distancias están en metros y parece que se tiene que hacer una conversón de unidades de m a km.
En el rango (AA15:AJ15) también pasa algo similar

13
En el archivo que adjunte (Prueba.xlsm) están los datos y el proceso paso a paso, lo que intento es que todo el proceso que de en una sola celda.

El planteamiento del problema es el siguiente para una estación cualquiera (16004) falta un dato en 1964 (en este casi es precipitación, pero puede ser cualquier variable), existen diferentes métodos para rellenar estos espacios uno de ellos es el USNWS, donde:

Px=PiWi/ΣW

Pi= Precipitación
Wi=Inversa de la distancia al cuadrado
ΣW= a la suma de todas las W

Para esto las estaciones deben cumplir ciertas condiciones, que corresponda en fecha del dato faltante de la estación y que tenga valor.

En el Archivo hay 10 estaciones y no todas sirven para hacer el calculo, también hay un método para la estación más cerca pero esta condición es la misma que la anterior, que tenga la misma fecha y que tenga valor diferente de vacío, no cero Vacío, por que en este caso Vacío no es lo mismo que cero.

Gracias por tu ayuda, te has tomado tu tiempo para esto.

Mando de nuevo archivo adjunto.

14
y como se hace eso?  :o

Si te fijas no soy programador, y los códigos que tengo son más bien las formulas ya establecidas en Excel como SUMIF, VLOOKUP, COUNTIFS y esas cosas.

En un principio pensé en la estructura de SUMIFS "SUMAR.SI.CONJUNTO" pero además de sumar, era sumar la distancia o algo así. gracias por tu tiempo y tus consejos.

15
En el código no aparece nada solo aparece el error en la hoja de Excel #Valor! lo que me imagino es que en el código no están bien declaradas las variables.
Para la Inversa de la distancia (W) tengo un código aparte donde hace bien el calculo lo único que necesito es que haga el calculo para todos los puntos del rango, mando el código de W, DISTANCIA y PRECIP (P)

Código: [Seleccionar]
'Función para calcular Distancia entre puntos
Function DIST(Po, Pf, x As Integer, y As Integer) As Double
    Dim Xo, Yo, Xf, Yf As Double
    Xo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("C:L"), x, False) 'Busca Xo
    Yo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("C:L"), y, False) 'Busca Yo
    Xf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("C:L"), x, False) 'Busca Xf
    Yf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("C:L"), y, False) 'Busca Yf
    If Po = Pf Then 'Nunca calcula la Distancia para el mismo punto
        DIST = Empty
    Else: DistX = (Xo - Xf) ^ 2 'Calcula Binomio Cuadrado de X
        DistY = (Yo - Yf) ^ 2 'Calcula Binomio Cuadrado de Y
        DIST = (DistX + DistY) ^ (1 / 2) 'Calcula la distancia entre puntos
    End If
End Function

Código: [Seleccionar]
'Función para Calcular Inversa de la Distancia al Cuadrado (1/D)^n entre puntos
Function W(Po, Pf, x As Integer, y As Integer, n As Integer) As Double
    Dim DIST, Xo, Yo, Xf, Yf As Double
    If Po = Pf Then
        W = Empty
        Else: Xo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("C:L"), x, False) 'Busca Xo
            Yo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("C:L"), y, False) 'Busca Yo
            Xf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("C:L"), x, False) 'Busca Xf
            Yf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("C:L"), y, False) 'Busca Yf
            DistX = (Xo - Xf) ^ 2 'Calcula Binomio Cuadrado de X
            DistY = (Yo - Yf) ^ 2 'Calcula Binomio Cuadrado de Y
            DIST = (DistX + DistY) ^ (1 / 2) 'Calcula la Distancia entre puntos
            W = 1 / DIST ^ n 'Calcula la función Inversa de la Distancia elevado a la n (1/D)^n
    End If
End Function

Código: [Seleccionar]
'Función de Precipitación
Function PRECIP(Po, Pfs, Fecha As Date) As Double
    If Po = Pfs Then
        PRECIP = Empty
        Else: PRECIP = Application.WorksheetFunction.SUMIFS(Worksheets("Registro").Range("C:C"), Worksheets("Registro").Range("B:B"), Fecha, Worksheets("Registro").Range("A:A"), Pfs, Worksheets("Registro").Range("C:C"), ">0")
    End If
End Function

Si te fijas, este código es para dos puntos uno por vez, tengo ΣPiWi listo para cada uno de los puntos solo me falta el ΣW para completar la ecuación lo que necesito es que haga todos los cálculos en una sola celda.

16
Estoy de acuerdo, todo número dividido entre cero es indeterminado o un error, si te fijas en el código en la sexta línea esta un IF cuando Po y Pfs (el rango de puntos) son iguales.
Lo que estoy intentando hacer es rellenar espacios de series históricas de precipitaciones con estaciones climatologías cercanas, en el método esta la formula:

Px=ΣPiWi/ΣWi

donde
Pi=son las precipitaciones de las otras estaciones
Wi=es la inversa de la distancia al cuadrado
ΣWi=es la inversa de la distancia al cuadrado de todas las estaciones

Las restricciones que para las estaciones aledañas son que deben tener la misma fecha y tener dato para poder hacer el calculo

Mando un archivo de Excel que tiene los códigos que hasta ahorita llevo.

Gracias, por todo y espero que me sigas ayudando

17
Hola estoy haciendo un programa en VBA en Excel y me falta solo un elemento para incluir en la función.
El programa debe de sumar la distancia entre dos puntos y sumarla si cumple ciertas condiciones, esto parte de una lista de puntos, donde si es el mismo punto la distancia es cero, asi sucesivamente hasta completar todos los puntos, ahorita tengo un código que empece pero me marca un error, creo que no estoy tan perdido, envío el codigo:

Código: [Seleccionar]
'Función para Calcular Inversa de la Distancia al Cuadrado (1/D)^n un punto cumpliendo condiciones
Function SUMWS(Po, Pfs As Range, x As Integer, y As Integer, n As Integer, Fecha As Date) As Double 'Pfs es la variable que recibe el rango de puntos a evaluar
'Esta función SUMA las W si cumple ciertas Condiciones (Fecha, Valor<>"", Po<>Pfs)
    Dim DIST, W, Xo, Yo, Xf, Yf As Double
    Dim COND As Double 'Integer
    If Pfs = Po Then
        CW = Empty
        Else
        Z = Pfs.EntireRow.Count
        SUMWS = Null
        For Each Pf In Pfs
' Condiciones de Fechas Iguales, Valor Diferente de Vacío y Diferentes Puntos (Fecha, Valor<>"", Po<>Pfs)
            COND = Application.WorksheetFunction.CountIfs(Worksheets("Registro").Range("B:B"), _
            Fecha, Worksheets("Registro").Range("A:A"), Pf, Worksheets("Registro").Range("C:C"), ">0")
           
            Xo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("B:K"), x, False) 'Busca Xo
            Xf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("B:K"), x, False) 'Busca Xf
            DistX = (Xo - Xf) ^ 2 'Calcula Binomio Cuadrado de X
           
            Yo = Application.WorksheetFunction.VLOOKUP(Po, Worksheets("Est Aled").Range("B:K"), y, False) 'Busca Yo
            Yf = Application.WorksheetFunction.VLOOKUP(Pf, Worksheets("Est Aled").Range("B:K"), y, False) 'Busca Yf
            DistY = (Yo - Yf) ^ 2 'Calcula Binomio Cuadrado de Y

            DIST = (DistX + DistY) ^ (1 / 2) 'Calcula la Distancia entre puntos
            W = 1 / DIST ^ n 'Calcula la función inversa de la distancia elevado a la n (1/D)^n
' Sumatoria de la función inversa de la distancia elevado a la n (1/D)^n
            CW = COND * W 'Si cumple las condiciones COND = 1, si no COND = 0 y se multiplica por la función W
            SUMCW = CW + Pf
        Next Pf
            SUMWS = CW
    End If
End Function

Gracias y espero su ayuda, tambien envio erchivo en Excel

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".