Jump to content

pegones1

Members
  • Content Count

    753
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by pegones1

  1. Recapitulando Fleming, el argumento n, con el número de meses, puede ser un número absoluto mayor que 12 y no hace falta restringirlo a ABS(n) < 12. FIN.MES(fecha_inicial;meses) Meses es el número de meses anteriores o posteriores al argumento fecha_inicial. Si B6 = 23/02/2008 =FIN.MES(B6;24) = 28/02/2010 O sea, dos años despúes (24 meses después) y lo mismo ocurre con los números negativos.
  2. Gracias never por tu aclaración. Sólo apuntar que ya dije que los argumentos permiten expresiones aritméticas, lo que se sobreentiende como operaciones con números positivos y negativos. Leyendo la documentación del argumento día de la día Obligatorio. Número entero positivo o negativo que representa el día del mes, de 1 a 31. Si el día es menor que 1, día resta la magnitud de la cantidad de días, más uno, del primer día del mes especificado. A buen entendedor sobran palabras de lo que pasará si día = 0. Creo que compartiréis conmigo que la verdad es que muchos argumentos de funcion
  3. Estoy con sailepaty que dónde esté una fórmula nativa que se quiten las UDFs. Gerson, siempre se puede llamar desde una UDF a una fórmula nativa. La que te pasé en el post #4 para calcular el último día del mes fué ésta: diasmes = VBA.Day(VBA.DateSerial(Year(fecha), Month(fecha)+1, 0))[/CODE] que se convierte fácilmente en una fórmula para todas las versiones de Excel: [CODE]=DIA(FECHA(AÑO(A1);MES(A1)+1;0))[/CODE] Y se obtiene [b]el día anterior al primer día del mes siguiente[/b], ¡como tú querías! La Función FECHA(año; mes; día) permite expresiones aritméticas y la posibilidad no muy d
  4. Hola Gerson, el problema es que EoMonth no está disponible por defecto en Excel 2003. Viene de serie en 2007 y 2010. Me limito a buscar en el foro y encuentro que tú mismo te has respondido: https://www.ayudaexcel.com/foro/f7/contar-solo-dias-laborales-excel-2003-a-7198/#post32666 Para activar el complemento: Ve a Tools->Add-Ins y marca Analysis ToolPak y presiona OK / Ve a Herramientas->Complementos y marca Paquete de herramientas de análisis y presiona aceptar. Puedes obtener el último día del mes de esta otra manera para cualquier versión de Excel pero con la limitación de que fe
  5. Gerson, tu fórmula y la UDF generan error #¡VALOR! cuando en las celdas no hay fechas. =SI(A2="";"No es fecha valida";DIA(FIN.MES(FECHA(AÑO(A2);MES(A2);1);0)))[/CODE] Una forma de asegurar que las fechas son válidas y que la celda tiene formato de fecha es ésta que devuelve un 0 en caso contrario: [CODE]=SI(O(A2<1;A2>2958466;IZQUIERDA(CELDA("format";A2);1)<>"D");0;DIA(FIN.MES(A2;0)))[/CODE] Esta fórmula chequea si el número decimal que representa la fecha está entre las fechas aceptadas por Excel, del 1-01-1900 00:00:00 al 31-12-9999 23:59:59 (más o menos) Además comprueba que
  6. Gracias Gerson, pero no estaría completo si no explicara que he seguido el patrón de los angloparlantes, siguiendo con la sugerencia de sailepaty, ya que: .Pattern = "\d+(\.\d+)?" ' separa números decimales con el signo "." (en inglés) .Pattern = "\d+(\,\d+)?" ' separa números decimales con el signo "," (en español) .Pattern = "-?\d+(\,\d+)?" ' separa números decimales positivos y negativos con el signo "," (en español)[/CODE] Realmente prefiero el último patrón de Regular Expression Syntax (Scripting) ya que si: A1 = ABCD[b]-12,34[/b]EF[b]5,67[/b]GH =GetNum(A1;1) = [b]-12,34[/b
  7. Hola sailepaty fíjate que la función es SoloNumeros y su resultado OnlyNumbers lo que seguro que pasa por manejar dos idiomas. Todas las soluciones aportadas obtienen todos los números juntos de la cadena, por ejemplo para: A1 = ABCD1234EF567GH =SoloNumeros(A1) = 1234567 Con lo que aparecen concatenados los dos números. Function GetNum(ByVal txt As String, ByVal ref As Long) As Double With CreateObject("VBScript.RegExp") .Global = True If ref > 0 Then .Pattern = "\d+(\.\d+)?" GetNum = .Execute(txt)(ref - 1) Else .
  8. Gracias rugarte y me alegra que te sirva mi aporte. Ahora lo subo para consultas con 2 tablas y, como verás, se pueden crear distintos formatos de las sentencias SQL: SELECT Departamentos.dept_name AS "Departamento", COUNT(*) AS "Total Empleados" FROM Departamentos Departamentos, Empleados Empleados WHERE Departamentos.dept_id = Empleados.dept_id GROUP BY Departamentos.dept_name[/CODE] [CODE]SELECT `Empleados$`.emp_fname, `Empleados$`.emp_lname, `Empleados$`.birth_date, `Empleados$`.phone FROM `Empleados$` `Empleados$` WHERE (`Empleados$`.sex='F') ORDER BY `Empleados$`.birth_date[/C
  9. decano1889, para ver las macros abre VBA con Alt + F11 con lo que verás el código: Private Sub Control_Imagen_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _ ByVal X As Single, ByVal Y As Single) Dim PosX As Long, PosY As Long Dim Herramienta As String With ActiveCell PosX = X - Cells(.Row, 10) / 2 ' Posición X del centro del círculo If PosX < 1 Then PosX = 1 PosY = Y - Cells(.Row, 11) / 2 ' Posición Y del centro del círculo If PosY < 1 Then PosY = 1 Select Case .Colu
  10. Partiendo de la gran idea de Ioyama, me he atrevido a mejorarla para no tener que crear tantos círculos como objetos se van a marcar. Cuando la celda activa esté en el rango H2:I100, haciendo click sobre una herramienta de la imagen se escribirá su posición X - Y. En el adjunto sólo es necesario un círculo que se mueve a la posición X - Y de una herramienta cuando se seleccione una celda en el rango G2:G100. Falta rellenar la lista de las más de 30 herramientas de la imagen que, por cierto, he tenido que degradarla a 16 colores para poder subir el archivo zip. Nota: Como ejercicio propongo
  11. Hola restre, prueba el fichero adjunto con las celdas en formato hora "HH:MM" ya que la función PROMEDIO no funciona con formato texto como "6 H y 20 M" sino con números decimales con formato hora, como 0,2638888889 que equivale a 6:20 (6 horas y 20 minutos). La fórmula empleada para calcular el Tiempo Total en la columna J es: =10/24*(DIAS.LAB(H2;I2)-1)+RESTO(I2;1)-RESTO(H2;1)[/CODE] Para no sumar horas de días festivos, se debería incluir una lista con las fechas festivas en otra hoja y darle el nombre Festivos, cambiando la fórmula por: [CODE]=10/24*(DIAS.LAB(H2;I2;Festivos)-1)+RESTO(
  12. Adjunto ejemplo para consultar datos en Excel con el lenguaje SQL. La tabla de datos está en la hoja Datos y los resultados van a parar a la hoja Resultados. En las celdas de la columna A de la hoja Principal: 1º) se escriben las sentencias SQL, 2º) se selecciona una y 3º) se hace click en el botón SQL. La tabla se referencia como [Datos$] en cada sentencia. Ejemplo de sentencia: SELECT manager_id, emp_fname, emp_lname, salary FROM [Datos$] WHERE status='T' ORDER BY salary DESC[/CODE] Espero que esto sea lo que quería greg_dorian. SentenciaSQL.zip
  13. re: [sOLUCIONADO] Vincular una celda a una cotizacion bursatil Pedro, en las hojas "TEL" y "TEF" conecto con MSN Dinero para las cotizaciones de Telefónica. Están preparadas las conexiones para acceder cuando se abre el archivo y cada 60 minutos. La forma de actualizar en Excel 2003, si no recuerdo mal, es en la barra de herramientas de datos externos pinchar en Actualizar o Ctrl + Alt + F5 Espero que se ajuste a lo que quieres y puedas ajustarlo a tu gusto. ConsultaWebTeleDinero.zip
  14. Gerson, como ví que NICOTUC y tú estábais atascados y al ser un tema de fechas me apeteció ayudar a catoncia, así como a mí me ayudan en otros foros en inglés, de los que Chandoo.org - Learn Microsoft Excel Online - Excel Tips, Tricks, Charting Tutorials, Download Excel Templates, Excel Formulas and More... es uno de mis preferidos, como ya debes saber. Un abrazo a tod@s.
  15. Eso quiere decir que te ha servido mi respuesta y ¿está [sOLUCIONADO]? Si es así, añade [sOLUCIONADO] al nombre del tema por delante: [sOLUCIONADO] Comparacion de Fechas Y un moderador cerrará el tema cuando lo lea.
  16. Hola Macro, gracias por tus macros. El caso más sencillo de sumar días saltándose los sábados, domingos y festivos se puede resolver con la propia función WorkDay de Excel por si alguno no lo sabe: SumarDias = WorksheetFunction.WorkDay(Fecha, Dias - 1, Sheets("Festivos").Range("A:A"))[/CODE] Los otros casos los has expresado muy bien.
  17. Hola catoncia, prueba el adjunto y me cuentas si te sirve. Tu problema es el clásico solapamiento de fechas que es más fácil de resolver comprobando si no se solapan que si se solapan. Sean 2 rangos de fechas: x-y , a-b No se solapan si es cierto alguno de estos dos casos: y < a ó b < x Las fórmulas están explicadas en inglés aquí: Check if two ranges of dates overlap [Excel Formulas] | Chandoo.org - Learn Microsoft Excel Online @Gerson, el formato condicional que he aplicado es tan simple como que la celda no contiene espacios en blanco. Si te sirve de ayuda agradécenoslo pulsa
  18. Hola Hernán, tu último ejemplo ¿no debería finalizar un día antes? El problema es que en la columna O sumas días completos con días de 9 horas, por lo que he añadido una nueva columna P con el número decimal de días de 9 horas, en la que uso Y5 ya que ahí metes las Horas/Día (9 horas), con la fórmula: =ENTERO(O5)+RESIDUO(O5;1)*Y5/24[/CODE] Observa que hago referencia a la columna P en la fórmula que calcula la fecha final: [CODE]=SI(RESIDUO(M5+P5;1)>16/24;M5+P5+15/24;M5+P5)+ELEGIR(DÍASEM(SI(RESIDUO(M5+P5;1)>16/24;M5+P5+15/24;M5+P5);2);0;0;0;0;0;SI(V5="X";1;2);SI(W5="X";0;1))[/CODE]
  19. Never, te permito todas las correcciones que me propongas porque son acertadas. Mi problema es que muchas veces acabo editando código en la nube, sin pararme a chequearlo. Entre nosotros, me gusta averiguar si quienes se bajan los programas acaban usándolos y el feedback con correcciones es una manera de averiguarlo. Ya he cambiado el código en el post anterior. Gracias por tu retroalimentación. En la siguiente página: Karl E. Peterson's Classic VB Code: Assoc se explican todas las posibilidades de la API AssocQueryString de las cuales, el ejecutable asociado a una extensión es la más u
  20. Gracias Never por tus constantes muestras de afecto y apoyo. No te preocupes por la memoria mientras podamos usar las memorias digitales. Y ¡ahora que recuerdo! en lugar de usar la función FindExecutable que da muchos problemas (mira este pdf) al buscar extensiones de más de 3 caracteres (¡no encuentra la aplicación que abra ficheros Access! por ejemplo con la extensión .accdb de 5 caracteres) prefiero usar: que con sólo indicarle la extensión del archivo muestra el Path del programa que lo abrirá. Option Explicit 'Notas nvr y pegones1: 'Se esta considerando que el archivo pdf que dese
  21. Never, gracias por la traducción pero está de más el texto en inglés cuando se puede hacer referencia al link exacto: Resumiendo, para ser compatibles con los sistemas de archivo FAT32 que no soportan nombre largos, el tamaño máximo es de 260 caracteres (incluido el carácter nulo del final) para la dirección y el nombre del fichero. Los sistemas de archivos NTFS soportan nombres largos de hasta 32.767 caracteres habitualmente usados con funciones API en versión Unicode, para la programación internacional en idiomas con caracteres que necesitan más de un byte. Traducción de la nota de es
  22. Hola Edwin, como te ha comentado neverdelimon1, el problema son los paréntesis y el mío escribir sin testear. Los argumentos se escriben entre paréntesis cuando se va a usar el resultado devuelto, como en este ejemplo que usa los 3 argumentos de la función: lEncontrado = FindExecutable(NombreDelArchivo, Ruta, RutaEXE)[/CODE] La siguiente llamada no devuelve resultado y se pone sin paréntesis: [CODE]Shell strAux, vbMaximizedFocus[/CODE] Veámoslo con MsgBox: [CODE]lAux = MsgBox errorMessage, vbYesNoCancel 'INCORRECTO lAux = MsgBox(errorMessage, vbYesNoCancel) 'CORRECTO MsgBox errorMes
  23. Josapu, prueba tu código con esta página: PAGINAS SALMON ON-LINE La original son los frames que no contienen los objetos necesarios.
  24. Never, muy bueno tu código pero hecho de menos comprobar el caso en que no se tenga instalado Acrobat Reader, o un programa que abra archivos con la extensión pdf, para que no provoque FileNotFoundException por ejecutar una Shell vacía. Con tu permiso, he modificado el código con la devolución de errores de FindExecutable y asegurando que RutaEXE no es vacío (debe contener por ejemplo: AcroRd32.exe o Acrobat.exe u otro lector de pdfs) Option Explicit 'Notas nvr: 'Se esta considerando que el archivo pdf que deseas abrir se ecuentra guardado en la misma ruta donde tienes guardado el archiv
  25. Al abrir PDFs, hay otros argumentos que pueden interesar a Edwin y que se pueden leer en el siguiente archivo: http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=6&zoom=200,50,100 Abierto por la página 6 con zoom de 200 y scroll horizontal de 50 y vertical de 100: #page=6&zoom=200,50,100
×
×
  • Create New...

Important Information

Privacy Policy