Saltar al contenido

pegones1

Exceler C
  • Contador de contenido

    850
  • Unido

  • Última visita

  • Días con premio

    31

Todo se publica por pegones1

  1. ¿Has probado tu fórmula con textos de más de 100 caracteres? Como éste: 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 1111111111,2,3,4,5,6,7,8,9,10 Ya no sale el 2 en la segunda celda separada
  2. En mi fórmula sustituyo el separador por un salto de línea lo que para listas de números es genérico. He partido de que todos los casos de ejemplo no contenían strings en varias líneas. Es cierto que con strings conteniendo saltos de línea habría que sustituirlo por otro carácter o combinación de caracteres que no aparecieran en la cadena de texto. Para Excel 2007 y 2010 la fórmula es más sencilla: =SIERROR(MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";C$18));ENCONTRAR(" ";SUSTITUIR($A1&$B1;$B1;" ";C$18))-ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";C$18)));"") Y tu fórmula sería: =RECORTAR(MED(SUSTITUIR($A1;$B1;REPETIR(" ";100));(C$18-1)*100+1;100)) Siempre partiendo de que en el rango C18:Q18 hay números enteros (1,2,3,..) ¿Has probado tu fórmula con textos de más de 100 caracteres? Como éste: 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,2,3,4,5,6,7,8,9,10 Ya no sale el 2 en la segunda celda separada
  3. Estoy de acuerdo contigo en todo pero hay que tener en cuenta las limitaciones de estas fórmulas y, sobre todo, los límites de Excel para trabajar con strings: 32.767 caracteres en una celda. En tus fórmulas sustituyes cada carácter separador por 500 espacios en blanco, por lo que una cadena de texto como: 1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,,,,,,,,,,,,,,,,,31,,,,,,,,,,,,,,,,,,,,,,,,,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,132 produce error: #¡VALOR! al necesitar más espacio por celda a separar del disponible. Para abarcar más de 130 celdas a separar, puedes reducir el valor de sustitución 500 por uno más bajo. Para un valor de 100, llegarías a separar aproximadamente unas 650 celdas como máximo. ¿Por qué has empleado 500? Mi solución es genérica y no requiere trabajar con strings muy largas por lo que es más eficiente espacial y temporalmente, ya que extrae el texto justo que se debe separar en cada elemento.
  4. Normalmente el auxiliar de relleno no será necesario introducirlo en las celdas separadas vacías ya que se usa su valor por defecto (espacio en blanco " " o string nula ""). En este caso la fórmula del post #16 se simplifica bastante: =SIERROR(MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";C$18));ENCONTRAR(" ";SUSTITUIR($A1&$B1;$B1;" ";C$18))-ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";C$18)));"")[/CODE] En el caso más corriente de que el carácter separador sea la coma "," y sustituyendo la fila auxiliar por el número de celda a separar, resulta esta fórmula más simple: [CODE]=SIERROR(EXTRAE(A1;ENCONTRAR(" ";SUSTITUIR(","&A1;",";" ";2));ENCONTRAR(" ";SUSTITUIR(A1&",";",";" ";2))-ENCONTRAR(" ";SUSTITUIR(","&A1;",";" ";2)));"")[/CODE] Este ejemplo es para separar el elemento 2 de la cadena de texto de la celda A1. Solo falta sustituir 3 veces la cifra 2 por el elemento a separar y cambiar la celda A1 por la deseada. Con el consentimiento tácito de sailepaty, adjunto el fichero anterior sin la columna con el carácter auxiliar. NOTA: La función MED de Excel 2010 equivale a la función EXTRAE de versiones anteriores. SepararTextoAlfanumerico2010.zip
  5. Gracias fornelasa, la verdad es que con macros ya había un tema: Macro para separar texto y valores en Distintas columnas que Macro Antonio (hasta ayer conocido como Antoni Ayala) se encargó de resolver magistralmente, como siempre. Lo que intento con este tema es ir por el camino de las fórmulas para quienes no tengan o no gusten de habilitar las macros...
  6. Para que la fórmula anterior del Post #15 sea independiente del número de columnas (entre la celda en la que se está separando el texto y la primera de ellas) hace falta una fila auxiliar con números enteros consecutivos (1, 2, 3, ..) Si la fila auxiliar es la 18, la fórmula será: =SIERROR(MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";D$18));1)&MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";D$18))+1;ENCONTRAR(" ";SUSTITUIR($A1&$B1;$B1;" ";D$18))-ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";D$18))-1);$C1)[/CODE] La fila auxiliar hace las veces de argumento a la función: [b]DESCONCATENAR(Texto; Número de celda a separar)[/b] ¡OJO función virtual no implementada en Excel 2007 ni Excel 2010! Aunque la función completa sería algo así: [b]DESCONCATENAR(Texto; Número de celda a separar; [separador]; [Auxiliar de relleno])[/b] Siendo los valores opcionales por defecto: Separador = , (coma) Auxiliar de relleno = (espacio en blanco) SepararTextoAlfanumerico2007.zip
  7. sailepaty, veo que has captado la esencia de este tema, que no es otra que olvidarse de los algoritmos y usar las fórmulas de Excel para separar textos, como si existiese la función DESCONCATENAR en Excel ¡que no existe! Como todo (o casi todo) se puede hacer de diversas maneras y gracias a tus ideas, propongo otra solución con una única fórmula y sin tener que repetir 500 veces el espacio en blanco (por cierto, tu solución es muy ingeniosa ) =SIERROR(MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";COLUMNAS($D1:D1)));1)&MED($A1;ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";COLUMNAS($D1:D1)))+1;ENCONTRAR(" ";SUSTITUIR($A1&$B1;$B1;" ";COLUMNAS($D1:D1)))-ENCONTRAR(" ";SUSTITUIR($B1&$A1;$B1;" ";COLUMNAS($D1:D1)))-1);$C1)[/CODE] NOTA: Se ha incluido a propósito, entre cada 2 dobles comillas, un salto de linea generado con la combinación de teclas [Alt]+[intro] porque no está incluido entre los caracteres del texto a separar. Lo cierto es que se ha complicado bastante, para tener en cuenta la personalización del o los caracteres auxiliares, en caso de que la cadena resultante sea de longitud cero y ha obligado a llamar a la función SIERROR SepararTextoAlfanumerico2.zip
  8. fornelasa, la opción Texto en columnas de Excel, que expuse en el Post #4, no es interactiva y cada vez que se cambia el texto obliga a pasar por el Asistente para convertirlo...
  9. Concatenar texto alfanumérico es fácil pues existe la función CONCATENAR(texto1; [texto2]; ...) o también se puede utilizar el operador de cálculo símbolo (&) para unir elementos de texto. Lo que no existe es una función para DESCONCATENAR texto en varias celdas, aunque Excel lo resuelve como cuando importa datos externos. Si en la celda A1 se escribe el texto alfanumérico a separar, por ejemplo: 1,ab,33,cde,4444 Se borran las celdas B1:F1 y se selecciona la celda A1 En el menú Datos, hacer click en Texto en columnas Se abre un Asistente para convertir texto en columnas, como se explica en esta página de Microsoft. En el paso 1, elegir Delimitados En el paso 2, marcar solo la Coma como separador En el paso 3, cambiar el Destino a la celda B1 (normalmente machaca A1) y pulsar Finalizar. En el rango B1:F1 estará el texto alfanumérico separado. 1 ab 33 cde 4444 Para entenderlo mejor lee el artículo Separacion de texto en Excellentias.com
  10. Acabo de subir los archivos que se borraron al Hilo de Animaciones Post #46 sin problemas. ¿Qué hiciste este finde? ¡A ver cuánto dura, dura!
  11. Aquí está el fichero con la solución propuesta sin macros para separar texto alfanumérico en varias celdas: SepararTextoAlfanumerico.xls Lo he subido a mi SkyDrive porque sigo sin poder subir ficheros al foro. Espero que algún "Super-Merodeador" me lo pueda subir
  12. En VBA y en otros lenguajes de programación es fácil separar texto alfanumérico, pero no lo es tanto usando las fórmulas de Excel. Para preparar unos diagramas de Gantt en Excel necesitaba separar la lista de predecesores de una tarea representados como "6,10,24" y obtener los números separados por comas en otras celdas. Después de buscar una solución, he intentado mejorarla para que sea más general y he obtenido el siguiente resultado: En la columna B se define el tipo de separador: un carácter alfanumérico, por ejemplo la coma "," En la columna C se define el texto a incluir cuando no hay texto, por defecto es un espacio en blanco " " En el próximo mensaje enviaré el fichero Excel con la solución propuesta.
  13. Guanche me recuerda los 14 meses que pasé en Tenerife haciendo el servicio militar obligatorio y viviendo dos de los mejores carnavales que he visto en mi vida. Por las fotos que has subido debes ser un guanche del tipo racial cromañoide, yo soy mediterranoide. Me maravilla que además del sueco sepas de lenguas bereberes. Ya solo falta que seas chicharrero aunque personalmente prefiero a las canarionas ¡qué recuerdos!
  14. Me uno a las condolocencias por nuestro compañero Maamtur. El mes pasado estábamos celebrando su cumpleaños y Logroastur nos comentó se conocieron en el hospital, por lo que supongo que le dio a conocer el foro. Gracias por la huella que has dejado en este foro.
  15. Hola julibaga, Disculpa que no te respondiera al post #56 del "Hilo general de Animaciones" pero he estado 3 días sin línea telefónica ni ADSL por culpa de 2 cruces de lineas debido el primero a fallar el filtro original del modem de la central y el segundo al sustituido, además de sufrir 2 fallos masivos del operador de Internet durante 2 días (espero que en la factura me descuentes los 5 días sin servicio de este aciago mes de julio) Ahora mismo acabo de probar con Firefox 3.6.3, Explorer 8.0.6001.18602 y Chrome 5.0.375.99, después de limpiar caché y los historiales de navegación y sigo sin poder subir archivos. En los dos modos Enhanced Attachment Uploading off y on, aparece: attachment.php (GIF Imagen, 1x1 pixels) ¿Alguna sugerencia? Después de sufrir la desconexión de Internet por parte de la operadora del fijo y del ADSL, no puedo garantizar cual será el próximo problema para seguir foreando (acabo de adquirir un modem móvil pero la operadora del celular no sabe, no quiere o no puede activarlo) El móvil no es lo mío porque con vista cansada prefiero pantallas de 21" a 42" para navegar.
  16. re: [CERRADO]Cumpleaños de Pedro Wave (pegones1) Ahora que ya pasó mi cumple les cuento: En mi viida me metería en la cosina a cosinar un pavvo el día de mi cumplí-años!!! Pero como buen programador me gusta seguir los pasos y lo he celbrao siguendo los pazos de julio-vago con la motella de whisky hasta terbinarla. ¡¡¡Un brindis!!! ¡Arriba! ¡Abajo! ¡Al centro! ¡Pa dentro! Me falta dormir la "mona" y mañana será otro día con muchas - neuronas, pero antes tengo que resolver este poblema: Ya se que las regals son subir files pero una imagen vale si Es toy hecho un lío y necesito ayuda excel de forosotros los excelpertos para saber qué cocina función mete y saca tantos td's y tr's en esta joja???
  17. Hemos roto la racha, perdiendo el primer partido y ganando los otros seis, ¡¡¡España es campeón!!! Con 8 goles a favor y 2 en contra ¡¡¡ya somos campeones del mundo!!!
  18. No soy de los que dejan un tema inacabado por lo que retomo la Función RESIDUO ya que hay varias fórmulas que dan mejor solución a la función Resto que da Excel. =RESTO(n; d)[/CODE] Siendo: n = número d = divisor Fórmulas que dan el residuo o resto: [CODE]=n-d*ENTERO(n/d) =RESTO(RESTO(n;134217728*d);d)[/CODE] NOTA: Esta última está sacada de que la función RESTO() devuelve el valor de error #¡NUM! si se cumple la condición siguiente: [b]divisor * 134217728 <= número[/b] Lo mejor es que la función Mod en VBA da el resultado correcto: Ver artículo en inglés: Large Numbers in the MOD Function [CODE]Function DblMod(Dividend, Divisor) ' Declare two double precision variables Dim D1 As Double Dim D2 As Double ' Copy function arguments to local variables D1 = Dividend D2 = Divisor DblMod = D1 Mod D2 End Function[/CODE] Hay que tener en cuenta que la precisión numérica en VBA está mejor resuelta que en las fórmulas de Excel, si se usa la estructura del tipo de datos Decimal para obtener resultados exactos de hasta 29 dígitos. El tipo de valor Decimal representa números decimales comprendidos entre el [b]+79.228.162.514.264.337.593.543.950.335[/b] positivo y el [b]-79.228.162.514.264.337.593.543.950.335[/b] negativo.
  19. |-|0|_4 \/3.-2|_||_54|\| ¡que no son los chinos! ¡que son los japoneses! Los japoneses de los 80s imitaban a los americanos, pero no eran simples copias, sino que con sus sistemas de calidad total eran capaces de fabricar cualquier cosa mejorándola. Es una cuestión de Cómo transformar la educación a través de la gestión de la calidad total. En aquellos tiempos los japoneses fabricaron los mejores relojes y calculadoras a un precio de coste inferior a los países occidentales, y aún hoy en día diseñan los mejores robots industriales y comerciales del mundo, todo gracias a la cultura del esfuerzo en la educación de los jóvenes y a colocar en los puestos directivos a profesionales con gran experiencia (para dar el pelotazo en la era Web 2.0 ya están los gurús USA) Lo del botón rojo / teléfono rojo para los números negativos está copiado de la cultura anglosajona en la que, en los sectores de banca, contabilidad y comercio, los números positivos son representados de color negro y los números negativos en color rojo, entre paréntesis y ¡sin el signo menos! En Excel se puede cambiar el formato de los números negativos para que aparezcan en rojo: Change the way negative numbers are displayed
  20. Antoni, yo prefería ponerme un escudo para defenderme de las aspas de los molinos, como Don Quijote... A continuación transcribo parte de mi último artículo del blog que escribo sobre la Historia de los primeros displays alfanuméricos Recuerdo que mis padres me compraron en 1974 mi primera calculadora de bolsillo, una SHARP PC-1801 japonesa, con raíces cuadradas y funciones científicas, con un tamaño de 94x148x36mm / 3.7x5.8x1.4", un peso de 350 gramos y un consumo de 1,3 W suministrado por 5 pilas AA. Para visualizar los resultados dispone ¡sí dispone porque aún la tengo y funciona! de un pantalla de 8 dígitos numéricos, cada uno formado por un display de 7 segmentos del tipo LED rojo de 5mm/0.2", como se puede apreciar en la foto de la calculadora. Los displays LED de hace 40 años consumían mucho y fueron sustituidos por los displays LCD que consumían menos, siendo curioso que aunque no tienen nada que ver con la pantallas de TV planas actuales, la tecnología LED fue sustituida por la LCD durante la primera guerra de los displays, al revés que hoy en día. Como los displays de 7 segmentos estaban diseñados para representar números hexadecimales (0-9 y A-F), para representar caracteres alfanuméricos aparecieron displays de 14 segmentos y matrices de 4x7 y 5x7 LEDs, de los que no hablaré en este artículo porque son más sofisticados y aparecieron más tarde. Un juego conocido como ortografía de la calculadora, con displays de 7 segmentos, era escribir números y verlos colocando la calculadora al revés para formar frases con las letras del alfabeto, ya que el número 0 se convierte en la letra O, 1 en L, 2 en Z, 3 en E, 4 en h, 5 en S, 6 en G, 7 en T, 8 en B y 9 en P, siendo usada esta técnica como una jerga (Alfabeto 1337 - Leet speak) por la élite de los programadores geeks y los hackers telefónicos, para evitar la censura en los primeros chats (BBS) que existieron en el Internet de los años 80. Por si os interesa, he preparado un par de hojas de cálculo con displays de 7 segmentos para el Hilo general de Animaciones en Excel (enlace aquí)
  21. Hola Fleming, siempre hay que tener delante las especificaciones y límites de Excel. Expande las especificaciones de cálculos para: - Excel 2003 - Excel 2007 - Excel 2010 (en inglés) En todos los casos la precisión numérica es de 15 dígitos, como has podido comprobar, por lo que no es de las mejores pues existen otras aplicaciones de cálculo con mucha más precisión... ¡es una barrera que se pone MS por compatibilidad de versiones!
  22. @Verzulsan, adjunto otro ejemplo con divisor igual a 1 y a 0,0000000001 con las fórmulas: =RESTO(B2;1) =RESTO(B2;0,0000000001)[/CODE] y se comprueba que falla antes que para el divisor por 2 en todas las versiones de Excel... Parece ser que en Excel 2010 falla aproximadamente cuando: [b]num>=div*1125900000000[/b] y mucho antes en las versiones anteriores. Por ejemplo para: div = 0,0000000001 div*1125900000000 = 0,0000000001*1125900000000 = 112,59 [b]¡¡¡ Da fallo en el número 113 al ser mayor que 112,59 !!![/b] Como dice la ayuda Excel para la función RESTO, lo mejor es olvidarse de esta siniestra función y expresarla así: [CODE]En inglés: MOD(n, d) = n - d*INT(n/d) En español: RESTO(n; d)= n - d*ENTERO(n/d)[/CODE] que devuelven el valor correcto. [b]@Gerson[/b], después de ésto no creo que Microsoft sepa resolver este error garrafal, a no ser que metan en C# la función equivalente que sugieren en su ayuda RestoExcel3.zip
  23. Gerson me has pedido ayuda y te cuento mi experiencia con MOD (en inglés), la función RESTO. Es un bug de Excel documentado en Wikipedia por generaciones (quiero decir releases - versiones de Microsoft). Ni siquiera en Excel 2010 lo han solucionado: Changes in Excel 2010 Published: May 12, 2010 As part of the accuracy improvements, Excel accepts a larger range of input values. As a result, it will return a wider range of results for certain functions. For example, the MOD function is able to take larger input values. For more information about the improvements to the statistical functions, see Function Improvements in Microsoft Office Excel 2010 (http://go.microsoft.com/fwlink/?LinkId=186148). Traducción: Como parte de las mejoras de precisión, Excel acepta una gama más amplia de valores de entrada. Como resultado, devolverá una gama más amplia de los resultados de ciertas funciones. Por ejemplo, la función RESTO es capaz de tomar grandes valores de entrada. Para obtener más información acerca de las mejoras a las funciones estadísticas, vea Función mejoras en Microsoft Office Excel 2010 (http://go.microsoft.com/fwlink/?LinkId=186148). Eso sí han ampliado los valores para los que no se produce error hasta: [B]=RESTO(2251799999999;2)[/B][/CODE] [b]2251799999999[/b]=2^A41+2^A35+2^A34+2^A30+2^A27+2^A24+2^A23+2^A21+2^A20+2^A19+2^A18+2^A16+2^A13+2^A12+2^A10+2^A8+2^A7+2^A6+2^A5+2^A4+2^A3+2^A2+2^A1+1 [CODE][B]=RESTO(2251800000000;2)[/B][/CODE] da error #¡NUM! en Excel 2010. Los programadores de [b]Excel 2011[/b] me han prometido que aumentarán este valor En otras versiones el límite está en: 1125899999999 para Excel 2007 (la mitad menos 0,5) 134217728=2^27 para Excel 2003 y anteriores, ver aquí En otros foros de Excel se habla de estos límites. Adjunto ejemplo escrito en [b]Excel 2010 en Modo de compatibilidad[/b] con versiones anteriores, por lo que al abrirlo con distintas versiones de Excel generará errores en filas distintas. Siempre podremos usar la fórmula alternativa: [CODE]=B41-2*ENTERO(B41/2) =número-divisor*ENTERO(número/divisor)[/CODE] P.D.: Quiero comentarios con la versión de Excel que usáis y la fila dónde da error. RestoExcel.zip
  24. Cuando se trata de patentar códigos software, en mí hay una dicotomía entre lo que pienso como ingeniero de software y lo que le conviene a mi empresa para su negocio. Como programador trabajando para una cía, para poder incluir en mis programas un algoritmo o un código patentado o con copyright, debo pagar royalties / regalías, siendo justo que así sea para darle "al César lo que es del César" pero impide la colaboración y la divulgación técnico-científica y sobre todo, impide el progreso. Porque uno de los males de las patentes es la capacidad del que patenta el algoritmo de no codificarlo durante 20 años si no quiere, además de generar monopolios de las empresas fuertes sobre las pequeñas y débiles. Sabéis cuál es la compañía que más patenta: IBM Corporation con más de 40.000 patentes activas y casi 5.000 publicadas en 2009 Y no creáis que sólo patenta software sino que también se dedica a la industria de las armas de fuego (mira esta patente) En la imagen se puede ver un Sistema de Control de Autorización, o sea un diagrama de bloques (lo que pide la agencia de patentes para patentar una idea) sin los algoritmos ni los códigos. Si IBM o cualquier otro (sirviéndose de un simple diagrama y del pago de altas cuotas a la Oficina de Patentes USA) se ha convertido en el dueño y señor de cualquier algoritmo o programa que realice las funciones explicadas en el diagrama de bloques ¡No os suena a cuento chino! ¿Dónde está el gran programador que ha patentado un software? No os equivoquéis ¡solo se patenta la idea nunca la codificación de la idea! Para patentar no hacen falta programadores como nosotros, solo hacen falta analistas de software que sepan dibujar diagramas de bloques Lo dicho, durante años me ha tocado lidiar con IBM y otras multinacionales en software, telecomunicaciones y defensa y el mundo sería mejor sin tanta patente que pone barreras al desarrollo de nuevos códigos y productos y al despegue del I+D en los países hispanoparlantes.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.