Jump to content

pegones1

Members
  • Content Count

    753
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by pegones1

  1. Es un placer volver a contactar con amigos como tú @Gerson Pineda y @Sergio en estos días tan atípicos para todos y deseo que sigáis bien en situaciones difíciles para todos.

    He editado un nuevo aporte que espero le hagáis algo de caso pues me ha supuesto bastante esfuerzo y es el primero después de varios años:

    A ver si hacéis algún comentario a este aporte que me sirva de acicate para seguir publicando este verano.

  2. Buenas Matías, una alternativa a la función avanzada MIN.SI.CONJUNTO() es usar una fórmula matricial que se introduce con:

    Ctrl + Mayús + Intro (Excel automáticamente encierra la fórmula entre llaves para indicar que es una fórmula matricial)

    Fórmula para versiones superiores de Excel:

    =MIN.SI.CONJUNTO($C$2:$C$31;$B$2:$B$31;$G$2;$E$2:$E$31;$H$2)

    Fórmula matricial alternativa para versiones de Excel que no soportan la función MIN.SI.CONJUNTO():

    =MIN(SI(($B$2:$B$31=$G$2)*($E$2:$E$31=$H$2);$C$2:$C$31))

    Seleccionar los valores en los desplegables de estas dos celdas:

    $G$2  el DiaProd

    $H$2 el Mes

    Adjunto archivo de ejemplo con las dos fórmulas.

    Consulta_MIN.SI.CONJUNTO_PW1.xlsx

  3. He publicado en mi blog cómo se hace la

    Al final de este vídeo se ven las manecillas de todos los relojes moviéndose al unísono:

    Sólo lo he probado en Excel 2010 y los amigos me dicen que en Excel 2007 el proceso es muy lento y en un segundo no le da tiempo a refrescar los relojes y se emplean funciones que no soporta Excel 2003.

    Son muy gratificantes las 1000 visitas que ha tenido este tema en un mes.

  4. Se me ocurre Gerson que puede servir para no tener que escribir los prefijos para las llamadas internacionales.

    Target = "+34 976 " & Target[/CODE]

    y así poder tener una base de datos con los números telefónicos de mis amigos de Zaragoza.

  5. karlmay, siempre he pensado que lo mejor de Excel son sus fórmulas y funciones propias a las que hay que sacar todo el partido. :mad:

    Los problemas que se solucionan con macros VBA ayudan a entender más aplicaciones que incorporan Visual Basic for Applications, pero todo lo que se pueda hacer sin código en Excel es más instructivo y próximo al cálculo puro y duro. :P

    verzulsan, pensaba que no te sorprendería con ésto y me alegra que sigas sorprendiéndote con las pequeñas maravillas de Excel. :rolleyes:

    El sermón de los políticos es que nuestra juventud es la que más abandona los estudios y no se tiene futuro si no se estudia, así que ¡a ser aplicado y a estudiar con ganas! que sé positivamente que lo estás haciendo. :)

  6. Para conocer el estado de los proyectos o anteproyectos se necesita una Hoja de Firmas que indique quién y cuándo ha firmado cada uno de los hitos.

    Adjunto Hoja de Firmas, sin macros ni VBA, con la siguiente fórmula iterativa en la celda C8:

    =SI(C9="";"";SI(Y(B8<>"";C8="";C9<>"");AHORA();C8))[/CODE]

    Para que funcionen estas fórmulas, con cálculo circular, en [b]Opciones de Excel[/b], en la ficha de [b]Fórmulas[/b] marca la casilla [b]Habilitar calculo iterativo[/b] y en [b]Iteraciones máximas[/b] pon al menos un 1.

    Esta hoja puede servir de ejemplo para guardar las fechas de cambio de estado de cualquier evento, mediante una marca, que en este caso es la firma.

    HojaFirmasAnteproyectos.zip

  7. Mucas gracia por tu interes Ioyama!!

    Preguntare a pegones1 a ver si tenemos suerte!

    Saludos

    Hola MIARROW, como te ha dicho ioyama para que no salga el mensaje de error se debe hacer la llamada con macros, valiéndose de On Error Resume Next. Prueba ésto:

    Option Explicit

    Public ArrancaPara As Boolean
    Private datHora As Date

    Sub ArrancaParaReloj()
    ArrancaPara = Not ArrancaPara
    If ArrancaPara Then
    RefrescaConsultaWeb
    Else
    StopTemporizador
    End If
    End Sub

    Sub StartTemporizador() 'arranca el temporizador
    datHora = Now + TimeSerial(0, 1, 0)
    Application.OnTime Earliesttime:=datHora, Procedure:="RefrescaConsultaWeb", Schedule:=True
    End Sub

    Sub StopTemporizador() 'para el temporizador
    Application.OnTime Earliesttime:=datHora, Procedure:="RefrescaConsultaWeb", Schedule:=False
    End Sub

    Sub RefrescaConsultaWeb()
    On Error Resume Next
    Err.Clear

    [COLOR="blue"]Sheets(1).QueryTables(1).Refresh BackgroundQuery:=False[/COLOR]

    If Err.Number <> 0 Then
    Debug.Print Now & " Error: " & Err.Number & " " & Err.Description
    End If

    StartTemporizador
    End Sub[/CODE]

    Cambia el número de la hoja 1 por el que uses y el número de consulta en la llamada a [color=blue]Refresh (en azul)[/color].

    Al ejecutar ArrancaParaReloj() se ejecuta cada minuto RefrescaConsultaWeb() y cuando falla no sale la ventana del mensaje de error pero se escribe en la ventana de Inmediato la fecha y hora, el error y su descripción con Debug.Print para saber cuándo y cuántas veces ha pasado.

    [b]IMPORTANTE:[/b] En la ventana de propiedades de la conexión [b]NO MARQUES Actualizar cada 1 minutos[/b]. Esto ya lo hace el temporizador en código con: TimeSerial(0, 1, 0)

    Para dar las gracias, click en la mano abajo a la izquierda de este mensaje con la palabra [b]Gracias[/b].

  8. Gerson, no pienso que nos hayamos salido para nada del tema principal ya que nos hallamos convirtiendo divisas y lo principal es saber cómo se representan los decimales para que sea exacto el cambio de monedas.

    neverdelimon1 y verzulsan, la interpretación que da el fabricante de

    MED = Micro$oft te Extrae tus Datos

    A todos, he subido una nueva versión al Post #1 sin importar si el separador decimal es el punto o la coma.

  9. Re: Controlar digitación de una fecha.

    Gracias a jcgonzalez3165 y jorgetchake por vuestro apoyo a mi pequeña contribución a este tema.

    jorgetchake cualquier problema se puede atacar básicamente de dos maneras, a fuerza bruta metiendo mucho código software, en nuestro caso VBA, o analizándolo para emplear exactamente las funciones apropiadas para el caso, pero para eso hace falta conocer en profundidad y en detalle las utilidades y herramientas del lenguaje de programación con el que estamos resolviendo el algoritmo, o sea en nuestro caso las funciones de Excel.

    jcgonzalez3165, no entiendo tu crítica de que no contemplo años 19xx.

    Con la configuración regional de mi sistema operativo, los años introducidos con 2 dígitos si son mayores que 29 entiende que son del siglo pasado, o sea de 1930 a 1999, ya que hago uso de la función FECHANUMERO (o VALFECHA de Excel 2010) y se comporta así, aunque supongo que sabrás que es configurable en el sistema operativo y se puede cambiar a voluntad leyendo:

    Para dar las gracias, pulsa en la mano abajo a la izquierda de este mensaje con la palabra Gracias

  10. Re: Controlar digitación de una fecha.

    Hola a todos, las funciones IsDate, CDate, DateValue se comportan mejor si las expresiones con fechas son anglófonas.

    Para CDate, en general, la codificación de fechas y horas como cadenas (como se muestra en este ejemplo) no es recomendable. Utilice la fecha y la hora literales (por ejemplo, #10/19/1962#, #4:45:23 PM#) en su lugar.

    Observando lo anterior, he modificado el fichero de Jorge con un nuevo botón Digita Fecha que obtiene la fecha digitada en la celda G2.

    Se basa en obtener la fecha gracias a la función propia de Excel:

    Estas funciones de Excel si que respetan las expresiones de fecha tipo día-mes-año.

    Si se introduce un sólo dígito, lo convierte en un día del mes y año actual. Ejemplo: 24 para 24-01-2011.

    control digitacion fecha PW1.zip

  11. Gerson, ya sabes que una de mis debilidades con Excel es usar preferentemente las funciones nativas de Excel antes que VBA.

    Si estás acostumbrado a Excel en inglés, verás que la función MID ("in the MIDdle of the string") no ha cambiado en ninguna versión de Excel:

    Su traducción por "en MEDio de la cadena de caracteres" hace que la llamen MED en español.

    Ya he dicho que prefiero mil veces saltarme la versión 2007 que es la peor con diferencia.

  12. Gerson, haces trampa obteniendo los separadores con macros.

    Como ya dije, intento no usar macros y, a la primera de cambio, escribes una. :mad:

    En su lugar para Excel 2003-2007 basta con 16 caracteres en lugar de los 228 de tu macro:

    =EXTRAE(1/2;2;1)[/CODE]

    Estás en lo cierto y ya lo he indicado en mi anterior mensaje que son equivalentes las funciones:

    No entiendo por qué Micro$oft ha cambiado algo tan natural como EXTRAE por MED en la última versión de Excel :mad:

  13. Gracias Gerson, tengo que avisar que para que funcione el Conversor de Divisas, el separador de decimales de Excel debe ser el punto (.) y el de miles la coma (,) y no usar los separadores del sistema. Esta es una de las servidumbres de no usar VBA para cambiarlos automáticamente.

    Para saber qué separador de decimales está en vigor, coloca en cualquier celda, en Excel 2003 y 2007:

    =EXTRAE(1/2;2;1)[/CODE]

    Para Excel 2010:

    [CODE]=MED(1/2;2;1)[/CODE]

    Y si el separador de decimales no es el punto (.) lee cómo cambiarlo:

    Por supuesto que puedes comprobar el valor del Lempira hondureño.

  14. Re: Como sumar horas y minutos

    bunet, te mandé la solución en el tema anterior pero no le hiciste caso: Post #7 y Post #10

    Si en tu ejemplo, cada día laboral es como D32=8,15 (o sea, 8 horas y 15 minutos) escribe en D34 esta fórmula:

    =SUMAPRODUCTO(ENTERO(D2:D32)+RESTO(D2:D32;1)[B]*5/3[/B])/24[/CODE]

    En la celda D34 ( con formato [b][h]:mm[/b] ) sumará 189:45 horas (o sea, 189 horas y 45 minutos)

    [b]Explicación:[/b]

    Para convertir D32=8,15 en horas se suman 8 horas más 0,15*100 = 15 minutos dividido por 60 =0,25 horas [b](observa que 100/60 = 5/3)[/b] y el resultado son 8,25 horas que divididas por 24 = 0,34375 días en formato de fecha de Excel.

    Por lo que 23 días laborables serán 23*0,34375 = 7,90625 días o 189:45 horas

  15. He preparado un aporte a raíz de contestar a varios temas relacionados con la conversión de divisas, como:

    Adjunto un Conversor de Divisas sin macros ni VBA que consulta la página Web:

    Obteniendo cualquier cambio de divisas que seleccionemos (editando las celdas en amarillo) en tiempo real con la fecha y hora de sus últimas variaciones, con sólo habilitar las conexiones de datos.

    NOTA: El separador de decimales debe ser el punto (.) y el de miles la coma (,) como se explica en el Post #3

    NUEVO ARCHIVO: ConversorDivisasPW2 puede usar también el separador de decimales coma (,)

    ConversorDivisasFinanzas.zip

    ConversorDivisasPW2.zip

  16. Saludos @pegones1:

    Gracias por tu respuesta. Funciona.

    Me gustaría que en la respuesta no se mostrar el sufijo/prefijo COP.

    ¡Excelente foro!

    merlyn333, en la celda C3 de la hoja 'USD-Pesos' tienes el resultado con formato moneda como ya te comenté, obtenido con la fórmula:

    =VALOR(SUSTITUIR(SUSTITUIR(MED(C1;1;ENCONTRAR(" ";C1)-1);",";"");".";","))[/CODE]

    Sólo tienes que cambiar en el formato de moneda de [b]la celda C3 el símbolo COP por Ninguna[/b]

    [b]NOTA:[/b] Te puede interesa el nuevo tema que he creado en Ideas y Aportes:

    Para dar las gracias pincha en la mano abajo a la izquierda con la palabra [b]Gracias[/b]

  17. Hola logroastur,

    La conversión de divisas con moneda puente es peligrosa porque no se puede aplicar la regla de tres a divisas actualizadas a fecha diferente.

    Por ejemplo, el fichero que has subido emplea el EURO como moneda "puente":

    EURO/DOLAR USA = 1,352 a las 08:37 del 21/1/2011

    EURO/PESO COLOMBIANO = 2515,52 a las 13:30 del 20/01/2011

    Por lo que se obtiene con ese fichero:

    DOLAR USA/PESO COLOMBIANO = 1860,5917 ¿a qué hora?

    En la misma página Web el cambio es:

    DOLAR USA/PESO COLOMBIANO = 1869.470 a las 13:31 del 20/01/2011

    Por lo que hay una diferencia de casi 9 PESOS sólo por los cálculos intermedios con la moneda puente.

    Con el fichero que subí en el Post #4 se obtiene:

    DOLAR USA/PESO COLOMBIANO = 1.846,80 a las 09:06 del 21/01/2011[/i]

    Obtenido de esta página web que da 23 PESOS menos al cambio:

    http://www.xe.com/ucc/convert.cgi?Amount=1&From=USD&To=COP&image.x=48&image.y=14ℑ=Submit

    Por lo que lo primero es saber qué página Web es la que dará más garantías de que el cambio de divisas es el que queremos.

    Todo lo anterior lo digo con espíritu constructivo ya que hay mucha desinformación sobre el particular que perjudica a las empresas y a los profesionales si no se hacen los cálculos bien.

    Excel nos devolverá siempre sin equivocaciones el resultado del algoritmo que empleemos pero los programadores somos los responsables de usar el algoritmo adecuado en las condiciones adecuadas.

    Gracias por tus aportaciones logroastur, estoy convencido que las haces con las mejores intenciones.

  18. Hola merlyn333, hay muchos enlaces rotos en este foro desde hace unos días y ese es uno de ellos.

    En este otro se comentaba cómo convertir divisas:

    https://www.ayudaexcel.com/foro/f6/cambio-divisas-14892/

    Pero como también está roto, tendrás que conformarte con leerlo en la caché de Google:

    http://webcache.googleusercontent.com/search?q=cache:wgv1pUm92zUJ:www.ayudaexcel.com/foro/f6/cambio-divisas-14892/+divisas+site:ayudaexcel.com&cd=1&hl=es&ct=clnk&gl=es

    En tu caso, para obtener el valor del dolar en pesos colombianos puedes importar los datos de la página web:

    http://www.xe.com/ucc/convert.cgi?Amount=1&From=USD&To=COP&image.x=48&image.y=14ℑ=Submit

    Abre el ejemplo adjunto habilitando las conexiones de datos.

    La hoja Conversor extrae los datos desde Web pero hay que asegurarse en qué celda deja el valor buscado (¡puede cambiar!), de momento es en $E$68

    La hoja USD-Pesos es una copia literal en A1 y C1 de los datos buscados en la hoja anterior y de los valores convertidos a formato Moneda en A3 y C3.

    En la celda D3 (formato fecha) aparece la fecha y hora de la conversión de las divisas.

    USDaCOP.zip

  19. Re: Carta Gantt

    tomaschl, me alegra tener alumnos que aprenden rápido como tú, porque intentan resolver los problemas a su manera y, cuando no lo consiguen, piden ayuda.

    No hay que disculparse por la inexperiencia, ¡nadie nace sabio!, los que deberían disculparse son los expertos arrogantes que no traspasan sus conocimientos y se los quedan para sí mismos para mantener su estatus.

    =O(F$6=Festivos;DIASEM(F$6;2)=7)[/CODE]

    La operación lógica OR se hace con la función: O(valor_lógico1;valor_lógico2; ...)

    Esta fórmula resulta con valor verdadero si las fechas de la fila 6 comenzando en la columna F:

    - están en la lista de Festivos, por ser: [b]F$6=Festivos[/b]

    ó

    - son domingos de valor 7: [b]DIASEM(F$6;2)=7[/b].

    Observa que la función DIASEM(fecha;tipo) con tipo = 2, convierte la fecha en números del 1 (lunes) al 7 (domingo).

    [b][i]Desde aquí quiero agradecer la acogida recibida de los foreros a los que he respondido a sus consultas con 346 mensajes y he recibido nada menos que 151 agradecimientos en 100 posts.[/i][/b]

  20. Re: Carta Gantt

    tomaschl, he incluido en la hoja PINTADO AUTOMATICO, de tu Carta Ideal, las fórmulas propuestas y las celdas coloreadas con formato condicional.

    No olvides incluir los días festivos distintos de los domingos en la hoja Festivos

    Observa que la Fecha Termino difiere en tu hoja PINTADO A MANO en las filas 8 y 13 para la misma fecha de inicio y duración.

    Reconozco que algunas cosas son más fáciles en Excel 2010 pero como toda nueva versión necesita de tiempo de aprendizaje de sus nuevas funciones y características.

    NOTA: Cuando subas un archivo al foro pincha en el botón Done y aparecerá abajo con su número de visitas como lo ves en este mensaje. ¡No uses el botón Insert Inline!

    Antes casi no he visto tu enlace ni tu mensaje anterior.

    Por favor, no edites un mensaje viejo, escribe uno nuevo.

    Carta Ideal PW1.rar

×
×
  • Create New...

Important Information

Privacy Policy