-
Contador de contenido
11886 -
Unido
-
Última visita
-
Días con premio
912
Todo se publica por Antoni
-
Que pasaría si no existieran las funciones de cadena
tema contestó a Antoni en Antoni Ideas y aportes
Hola DRAMIDOM: Llegarás, no te preocupes, si sabemos mas no es por listos, si no por viejos, o porqué empezamos antes. Saludos. Antoni. -
Que pasaría si no existieran las funciones de cadena
tema contestó a Antoni en Antoni Ideas y aportes
Hola Gerson: La forma de llamar a la función dentro de una macro, sería: Longitud = xLen(Texto)[/CODE] Pero el aporte no está pensado para ser usado, si no para ilustrar lo que nos ahorramos de escribir con la función LEN de VBA, que por supuesto, será infinitamente mas simple y mas rápida. Salu2. Antoni. -
Hola a todos, hoy: LA FICHA PERFORADA Aunque muchos de vosotros no os lo vais a creer, hubo un tiempo en que los lápices de memoria USB no existian, tampoco existian el DVD, el CD, los diskettes de 3 ½”, los de 5 ¼”, ni siquiera los de 8 “, ni el casette. Solo existía la ficha perforada. La ficha perforada constaba de 12 filas, denominadas zonas, y 80 columnas. Cada celda, podía o no estar perforada, con lo cual solo podiamos representar 2 valores, On-Off, 0-1, Si-no, etc. Una ficha perforada, era capaz de almacenar hasta un máximo de 80 caracteres, a razón de 1 por columna. El “alfabeto” de los PC´s es el ASCII (American Standard Code for Information Interchange), sin embrago en los años 60 y en los ordenadores “grandes” se utilizaba el EBCDIC (Extended Binary Coded Decimal Interchange Code). ¿Porqué?, la verdad, no lo se, y para lo que nos ocupa, no creo que sea relevante. Ambos códigos contienen 256 caracteres, cantidad que se obtiene de 2 elevado a 8, correspondientes a todas la posibilidades existentes de combinación de 8 bits, o lo que es lo mismo, 1 byte. Los caracteres van numerados de 0 a 255. La gran diferencia entre ellos, desde el punto de vista práctico, es que mientras ASCII enumera las letras después que los números, EBCDIC, lo hace al revés, por lo que si ves un informe clasificado puedes averiguar con que "alfabeto" trabaja el ordenador donde se ha realizado el informe. De los 256 caracteres del ASCII o EBCDIC, normalmente solemos usar los equivalentes a nuestros caracteres graficos, es decir, letras, numeros y signos de puntuación y cálculo. Hemos dicho ya que cada columna estaba compuesta por 12 zonas (filas), las zonas iban numéradas de la siguiente forma: Fila 1 Zona 12 Fila 2 Zona 11 Fila 3 Zona 10 o Zona 0 Fila 4 Zona 1 Fila 5 Zona 2 Fila 6 Zona 3 Fila 7 Zona 4 Fila 8 Zona 5 Fila 9 Zona 6 Fila 10 Zona 7 Fila 11 Zona 8 Fila 12 Zona 9[/CODE] Los números, se identificaban por una perforación en la zona que indica su número. Las letras de la A a la I, se identificaban por 2 perforaciones, una en la zona 12 y otra de la zona 1 a la zona 9 respectivamente. Las letras de la J a la R, se identificaban por 2 perforaciones, una en la zona 11 y otra de la zona 1 a la zona 9 respectivamente. Las letras de la S a la Z, se identificaban por 2 perforaciones, una en la zona 0 y otra de la zona 1 a la zona 9 respectivamente. El resto de caracteres gráficos de uso habitual consistía en dos o tres perforaciones en las zonas numéricas. Las letras minúsculas y vocales acentuadas, no se utilizaban, ya que las impresoras de la época solo imprimían en mayúscula, aunque tenían su carácter correspondiente. Al conjunto de perforaciones necesarias se le conoce como código [b]Hollerith[/b], en honor a [b]Herman Hollerith[/b], primer informático, que allá por 1884 inventó la [b]tabuladora.[/b] Ni que decir tiene, que una ficha una vez utilizada, no se podía reutilizar. Las fichas venian en cajas de 2.000, y su coste era de 12.-€. Hasta la próxima. Salu2. Antoni. [color=blue]Muchas de las definiciones y afirmaciones, pueden carecer del rigor de certeza total, ya que muchas ellas provienen exclusivamente de la memoria, y ya sabemos que es la memoria a ciertas edades, por lo que será bienvenida cualquier corrección que creais pertinente.[/color]
-
Hola a todos: Estoy siguiendo una serie, no recuerdo bien, pero creo que en National Geographic, que se titula,"La Tierra sin nosotros", en la que se relata como sería el mundo si desapareciera la raza humana, pues bien, yo os propongo lo siguiente: Que pasaría, si de repente, en nuestras macros, no pudieramos utilizar las funciones de cadena. Como sería una "simple instrucción" tal que: Libro = Mid(Right(Fichero, Len(Fichero) - Len(ThisWorkbook.Path) + 1)) [/CODE] En primer lugar, desde dentro hacia fuera, necesitamos averiguar la longitud de Fichero y de ThisWorkbook.Path. He desarrollado esta función, con la inestimable colaboración de [b]neverdelimon1[/b], para hallar la longitud de un texto, no pretendo que sea, ni la única, ni la mejor, ni la mas rápida, por lo que se agradece de antemano cualquier modificación. [b][size=4]FUNCION LEN[/size][/b] [CODE]Function xLen(Texto As Variant) On Error GoTo Salida Dim Cadena() As Byte, UboundCadena As Integer 'Obtenemos la longitud del texto '------------------------------- Cadena = Texto While UboundCadena = UboundCadena If Cadena(UboundCadena) > 0 Then xLen = xLen + 1 UboundCadena = UboundCadena + 1 Wend Salida: End Function [/CODE] Algunos os preguntareis, ¿Y para que?, pues en primer lugar, por pura diversión y en segundo lugar, para que los que empiezan ahora, que no han tenido la suerte de tener que empezar a programar desde abajo, vean que en cada instrucción de un lenguaje de alto nivel, se esconde un montón de código que es transparente para ellos. Os animo a que participeis y envieis vuestras versiones de Left, Right, Mid, Split, Replace,........ ¡ Ah ! Recordad que no podeis usar ninguna función de cadena en vuestras aportaciones (excepto Chr y similares). Salu2 a to2222222222 to 22222222. Antoni.
-
Hola Lucas: Me he quedado sin palabras, impresionante, tanto en contenido, como en presentación, como en sencillez. Se ha ganado un sitio en mi baul. Salu2. Antoni.
-
Hola a todos: En uno de sus comentarios, Pedro (pegones1), ha hecho que recordara con nostalgia mis primeros tiempos de contacto con la informatica. Por este motivo abro este hilo para todos aquellos que como Pedro, o yo, llevan unos añitos en esta profesión, y quieran aportar sus recuerdos y experiencias. Aquí empieza mi cuento: Cuando empecé, a los ordenadores se les llamaba IBM's, porqué al igual que la CocaCola, nadie conocía otra cosa. Mi primer ordenador, bueno no era mio, fue un IBM 360/30 como el de la foto: En primer lugar, a mano izquierda está la CPU, con la increíble memoria para la época, de 32 Kbytes. Abajo a mano derecha, la consola, única forma de conectarse con el "monstruo", las pantallas todavía no existían, en aquel tiempo (1966) los bancos y cajas de ahorros, apuntaban las operaciones a mano en la libreta, no existian los cajeros, y solo podías ir a tu oficina. Pues bien, la consola era una simple máquina de escribir eléctrica, que de cuando en cuando, te soltaba un churro de caracteres, muchas de las veces inteligibles, al que debías contestar tirando del manual que existía a tal efecto. Cuando el IBM te pedía una respuesta, sus lucecitas se quedaban en Stand-by, y era incapaz de hacer otra cosa hasta que no le contestabas, ya que era "monotasking". En el centro, 4 flamantes unidades de disco de 5 Mbytes cada una. En cada disco, que era removible, es decir que se podía sustituir por otro, dada su poca capacidad, apenas se podían almacenar un par o tres de fichero con la información mínima. Su utilización, requería la firma del director del departamento, y cada día se le suministraba un directorio de todos los discos para su seguimiento. Al fondo, la lectora/perforadora de fichas perforadas, única entrada externa de datos al sistema, con una velocidad de 300 fichas por minuto, daba una velocidad de transferencia de 24 Kb por minuto. Al fondo a la derecha, se adivina la impresora, que era de martillos,es decir que, una cadena metálica que contenía 3 juegos de caracteres, todos ellos en mayúscula, giraba a gran velocidad, y unos martillos diminutos golpeaban el carácter a imprimir. Pues con este mecanismo de tecnología punta, alcanzaba las 600 líneas por minuto, velocidad que hoy día, todavía conserva su "dignidad". El papel que utilizaba se medía en pulgadas, era continuo y normalmente iba en cajas de 2.000 hojas. Y por último, las 4 unidades de cinta mágnetica, unidades de "gran capacidad", se utilizaban para guardar la mayoría de información. Todo este "complejo" ocupaba una superficie de unos 80 metros cuadrados, con temperatura y humedad constante, albergaba una pequeña sala de mantenimiento donde residía permanentemente un técnico de IBM, y en ella se almacenaban los repuestos mas usuales y los manuales técnicos. Esta maravilla costaba 6.000.-€ al mes de alquiler. Por hoy ya está bien, otro día mas. Salu2 a todos, en especial a los viejos dinosaurios como yo. Antoni.
-
Hola: Buceando he encontrado este link: http://hojamat.es/sindecimales/aritmetica/propuestas/proparit.htm#el1089 Sobre el tema que nos ocupa, dice Las constantes de Kaprekarr En 1949 este matemático indio estudió la rutina u operación que lleva su nombre. A partir de cualquier número de cuatro cifras N no todas iguales formó dos números distintos: N' formado por las mismas cifras en orden decreciente y N'' formado mediante una ordenación creciente. A la diferencia K(N) = N' - N'' la llamaremos Función de Kaprekar de N. Así K(2543) = 5432 - 2345 = 3087. Esta función puede iterarse, y formar K(K(N)), K(K(K(N))), etc. En el ejemplo K(K(2543)) = K(3087) = 7803 -3087 = 4716. Estas definiciones se extienden a número cualquiera de cifras, aunque Kaprekar sólo estudió el caso de cuatro. Si se itera la función de Kaprekar puede llegarse al número cero, a una constante o a un ciclo. Este resultado depende del número de cifras y del valor de N. En el caso de terminar en una constante, esto se produce porque K(N)=N. Esto ocurre con el número 495 en el caso de tres cifras y con 6174 en el caso de cuatro (en sistema de numeración decimal), a los que se les llama constantes de Kaprekar para ese número de cifras. Para dos cifras no existen constantes, pero se producen ciclos, como 9 , 81, 63, 27, 45, 9. Para cinco cifras no existen números invariantes respecto a la función K, pero sí se producen ciclos. Con seis existen dos: 549945 y 631764. Bajaros el archivo kaprekar.slx desde la página, es interesante. Salu2. Antoni.
-
Hola: Relacionado con el tema: https://www.ayudaexcel.com/foro/showthread.php?t=12427 Salu2. Antoni.
-
¡¡¡ Muchas Felicidades !!!
-
Hola: Con permiso de Potter, me he permitido la libertad de traducir los comentarios y estructurar un poquito su aporte: He cambiado el color "Blanco" por el color "SinColor", y aclarar que, la celda activa quedará rellenada de color verde y que se eliminará cualquier color que pudiera haber en la fila de la celda activa inmediatamente anterior a la actual celda activa: Dim FilaAnterior As Long Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) ' Rellenamos la celda activa de color verde ActiveCell.Interior.Color = vbGreen ' Si es la primera vez, guardamos la fila de la celda activa como fila anterior If FilaAnterior = Empty Then FilaAnterior = ActiveCell.Row ' Si no es la primera vez, eliminamos el color de relleno de la fila anterior ' si la celda activa está en otra fila que la fila anterior ElseIf Not FilaAnterior = ActiveCell.Row Then Rows(FilaAnterior).Interior.ColorIndex = xlNone End If ' Guardamos la fila de la celda activa como fila anterior FilaAnterior = ActiveCell.Row End Sub [/CODE] y también funcionaría así: [CODE] Dim FilaAnterior As Long Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) On Error Resume Next ActiveCell.Interior.Color = vbGreen If Not FilaAnterior = ActiveCell.Row Then Rows(FilaAnterior).Interior.ColorIndex = xlNone FilaAnterior = ActiveCell.Row End Sub [/CODE] Salu2. Antoni.
-
Hola: Jamás hubiera imaginado que esto iba a dar tanto juego. Para Fleming: A ver como pones tu solución en una macro. Para Mauricio: Definitivamente, tu solución es la mejor. Para Versulzan: No te quepa duda que tu "solución" la ha usado alguien. Para todos: Hay una solución que te va a llevar 0 segundos: Procura que la hoja la copie otro,...,ja,ja,ja... Gracias a todos por el entusiasmo, y dado el éxito de este aporte, mañana enviaré otro: "Como rellenar una celda de color verde" Hasta la próxima y saludos a todos. Antoni.
-
Hola Verzulsan: Vamos a centrarnos. Evidentemente que hay que decirle la hoja que quieres copiar. "MiHoja", es solo un ejemplo. Me despistó tu comentario acerca de "renombrar la hoja", y con el defecto de no leer atentamente, entendí que te referías a darle nombre a la hoja de destino. La hoja destino se genera como "Hojan", siendo n el Nº de hoja que le toque. Si quiere darle nombre a la hoja destino. ActiveSheet.Name = "MiHojaNueva"[/CODE]
-
Mauricio, tu siempre tan atento.
-
Hola: Procedimiento de "Guardar como" con comprobación de existencia del archivo a guardar. Private Sub GuardarComo(Directorio As Variant, Libro As Variant) Dim Objeto_Archivos As Object Dim Lista_Archivos As Object Dim Archivos As Object Dim Archivo As Object Dim Encontrado As Boolean Set Objeto_Archivos = CreateObject("Scripting.FileSystemObject") Set Lista_Archivos = Objeto_Archivos.GetFolder(Directorio) Set Archivos = Lista_Archivos.Files For Each Archivo In Archivos If Archivo.Name = Libro Then Encontrado = True Next If Encontrado = True Then MsgBox "El archivo: " & Libro & " ya existe en este directorio.", vbInformation, Directorio Else ActiveWorkbook.SaveAs Directorio & "\" & Libro End If End Sub[/CODE] la forma de ejecutar el procedimiento: [b] [CODE]GuardarComo "C\MiDirectorio", "MiLibro.xls"[/CODE] [/b] Salu2. Antoni
-
Entretenimiento: Curiosidad sobre los colores en excel
tema contestó a Antoni en verzulsan Ideas y aportes
Hola "mj", pasame "el par de bucles", que me faltan para completar la colección,...ja,ja,... Es un placer poder contar con tus aportaciones. Salu2. Antoni. -
Entretenimiento: Curiosidad sobre los colores en excel
tema contestó a Antoni en verzulsan Ideas y aportes
Hola Verzulsan: Suspendiste Física, pero debiste suspender Algebra, porqué son 256x256x256 posibles valores, en 3 bytes, con un total de 24 bits ja..ja..ja.. Espero que no te molestes por la broma, pero estamos con un tema distendido y se presta a ello. Un abrazo. Antoni. -
Entretenimiento: Curiosidad sobre los colores en excel
tema contestó a Antoni en verzulsan Ideas y aportes
Hola: Realmente veo que te aburres tanto como yo, también paso mucho tiempo investigando el sexo de los ángeles, pero ya casi estoy seguro de que sexo son, ja..ja..ja.. Dos cosas, una, ya se ver los mensajes privados ¿ Recibiste la contestación a tu último mensaje ? y dos, en una de las frases dices 16777216 se corresponde con el máximo direccionamiento que se puede hacer con 3 bytes, 2 elevado a 24, o lo que es lo mismo 16 elevado a 3, en hexadecimal desde 000000 a FFFFFF. Por eso con Excel 2003 no se puede pasar de ese número de celdas, porque utiliza 3 bytes para su direccionamiento.Si independizamos los 3 bytes como 00,00,00 obtendremos la configuración RGB (RedGreenBlue) del color negro y con FF,FF,FF la del color blanco. (Forma en la que las propiedades Blackcolor y Forecolor de los controles en un formulario aparecen en el proyecto VBA). Como tu ya has comprobado, la variación de cada byte de 0 a 255 (Hexadecimal 00 a FF) se corresponde con las tonalidades de los colores base Rojo, Verde y Azul. Pues eso es todo, tenía ganas de intervenir y no sabía como. Por cierto, lo del vídeo es alucinante, espero que algún matemático o estadístico experto en distribuciones/dispersiones nos de una explicación sobre el tema. Salu2 a to2 to2............. Antoni.