Jump to content

Dr Hyde

Members
  • Content Count

    498
  • Joined

  • Last visited

  • Days Won

    16

Dr Hyde last won the day on May 1 2017

Dr Hyde had the most liked content!

About Dr Hyde

  • Rank
    Advanced Member
  • Birthday 03/12/1980

Profile information

  • Gender
    Hombre
  • Localización:
    NL, Mexico

Converted

  • Campos
    ,

Recent Profile Visitors

1,622 profile views
  1. prueba esta macro Sub colorear_fuente_condicionado() Set miRango = Range("a1").CurrentRegion With miRango filas = .Rows.Count For i = 1 To filas numero = .Cells(i, 1) Select Case numero Case 0, 1, 2, 4, 5, 7, 8 .Cells(i, 1).Font.ColorIndex = 3 End Select Next i .Cells(filas, 1).Interior.ColorIndex = 1 .Cells(filas, 1).Font.ColorIndex = 3 End With Set miRango = Nothing End Sub
  2. una ciclo do while es muy lento comparado con un ciclo For i, next, ademas es mucho mas rapido agregar los datos a la hoja a traves de una matriz todos a la vez en vez de 1 por uno como lo muestras, todas las soluciones planteadas aqui son mas eficientes que como lo planteas, en fin es la solucion que elegiste personalmente no la usaria y vaya que tengo años trabajando con sistemas de numeros aleatorios.
  3. prueba con esta macro, el valor que pones e fraccion Excel lo toma como un 1, asi que opte por usar un split para conseguir el valor en decimales de esa fraccion Private Sub CommandButton1_Click() TextBox4.Text = (Val(TextBox1.Text) * Val(TextBox2.Text)) valor = Split(TextBox3, "/") resultado = valor(0) / valor(1) TextBox4.Text = (Val(TextBox1.Text) * Val(TextBox2.Text)) * resultado End Sub
  4. para generar numeros aleatorios hay diferentes metodos desde los mas simples a los mas complejos, usando el promedio y la desviacion o probabilidades como en la simulacion de montecarlo, en el archivo anexo veras una muestra de lo que quieres usando la funcion de Excel aleatorio.entre que junto con un contenedor de memoria filtraran los repetidos dejandote solo unumeros unicos numeros aleatorios.xlsm
  5. prueba esta macro, teclea en cualquier celda un nombre y añade numeros Y/o caracteres, la macro te indicara que no admite caracteres diferentes a letas y te pedira que tecles un nombre restriccion.xlsm
  6. prueba con esta macro, se maneja a base de matrices con un solo ciclo For para hacer el recorrido, la depuracion de los repetidos y el concatenado Prueba_Conca.xlsm
  7. lo unico que no pude resolver es el filtro por fechas y por horas, por lo demas puedes filtrar por cualquier columna, para lo que quieres hacer no ocupas un select case con autofiltros y una hoja auxiliar se resuelve, solo hay otro inconveniente al cargar el listbox se hace a traves de una matriz porque la macro hace la conversion serial a fecha para que asi la veas en el resultado final y cuando este es el caso no se pueden poner los encabezados al listbox, si uso el rowsource que si permite titular el listbox las horas y fechas quedan en numeros decimales Buscar con combobox y llenar en listbox_GP.xlsm
  8. y si usas in if por ejemplo if tiempo1>="23:59:00" and tiempo2<="00:00:00" then tiempo=1 (o tiempo=60 ) 'considerando 1 minuto 0 60 segundos segun lo requieras endif
  9. macro como tal no existe lo que puedes hacer es poner una condicion por ejemplo if x=2 then end cuando la condicion se cumpla la macro pondra fin a las macros que esten activas y que esten relacionadas con la macro donde esta la condicion, la instruccion END pone fin a la macro o macros.
  10. el problema de lo que pides es que si hay una formula matematica y es esta M/R=((i+1)-(i+1)^n)/i solo que tienes que ir variando el valor de i hasta que igual el valor de M/R por ejemplo por medio de la funcion tasa para estos datos Monto=8000, pago mensual=-200, años=4, interes o tasa sera igual a 0.0077015 por la funcion matematica tendrias que hacerlo asi primero pasas los años a meses y le sumas uno 8000/-200=(1+i)-(1+i)^49, luego vas poniendole valores al interes por ejemplo .05, 0.06, .07 -40=(1+0.00700147)+(1+0.00700147)^49 -40=-40.0580 como ves el valor del interes para que ambos lados de la ecuacion sean casi iguales es 0.00700147 y es casi similar a 0.0077015 al calculado con la funcion TASA, de hecho la funcion tasa hace el calculo de manera similar a lo que te explique. y esa es la funcion matematica equivalente a la funcion tasa.
  11. una forma mas corta seria esta, como no mencionas si en tu hoja hay mas informacion hace una copia de tu informacion en la hoja2, elimina los duplicados y hace la carga al combobox Sub cargar_combo() Range("e2").CurrentRegion.Copy With Sheets("hoja2").Range("a1") .PasteSpecial .CurrentRegion.RemoveDuplicates Columns:=1 matriz = .CurrentRegion End With ComboBox1.List = matriz Sheets("hoja2").Cells.Clear End Sub
  12. puedes usar una matriz de datos y la propiedad combobox1,list Sub cargar_combo() filas = Range("e1").CurrentRegion.Rows.Count matriz = Range("e1").Resize(filas, 1) ComboBox1.List = matriz End Sub
  13. Para que la macro funcione la tabla necesita esta como esta en el ejemplo adjunto, con eso es mas facil mas programacion como tu la tienes es muy dificil programar, la macro lee la informacion y confome tu escogas el pais la va sectorizando por estados primero, seleccionas un estado y la sectoriza por municipios, prueba y comentas, ojo el alcance de la macro solo tiene colo limites la cantidad de filas y columnas de la hoja, si tu quitas o agregas paises la macro lo tendra en cuenta la siguiente vez que la corras PAISES Y PROVINCIAS.xlsm
  14. cambia esta linea If ThisWorkbook.Sheets(NombreHoja).Cells(fila, 1) = ListBox1.Column(0) Then 'AQUI SE DETIENE LA INSTRUCCION If ThisWorkbook.Sheets(NombreHoja).Cells(fila, 1) = ListBox1.List(ListBox1.ListIndex, 1) Then tu instruccion le esta diciendo a Excel que coloque en una celda especifica toda la columna 0 del listbox1, con la instruccion que te paso solo el valor correspondiente a la fila de la columna 1 es la que se captura en la celda.
  15. prueba con esta macro Sub copiar_categorias() Set h1 = Worksheets("catalogo") Set h2 = Worksheets("hoja3") Set datos = h1.Range("a2").CurrentRegion Set lista = h2.Range("a3").CurrentRegion filasd = datos.Rows.Count filasl = lista.Rows.Count Set resultado = h2.Range("f3").Resize(filasd, 2) With lista For i = 1 To filasl If i > 1 Then Set resultado = resultado.Rows(filasd + 1).Resize(filasd, 2) resultado.Columns(1) = .Cells(i, 1) resultado.Columns(2).Value = datos.Value Next i End With Set resultado = Nothing: Set lista = Nothing End Sub
×
×
  • Create New...

Important Information

Privacy Policy