-
Contador de contenido
11884 -
Unido
-
Última visita
-
Días con premio
910
Todo se publica por Antoni
-
[CERRADO] Conocimiento de cómputo en general.
tema contestó a Antoni en Julibaga Cafeteria Ayuda Excel
Hola: Me lo han contado: -¿Servicio técnico? -Si, digamé. -Ayer me instalaron el ordenador, ¿Puedo abrir la ventana de la oficina? -Pues claro que puede abrirla. ¿Porqué? -Es que me han dicho que hay muchos virus. Vivido en primera persona: -¿Donde pongo el CD que me has enviado?, es que no encuentro donde meterlo. -En la torre verás una ranura, dale al botoncito de la derecha y aparecerá el soporte para colocar el CD. -¡Ah! en el posavasos. -
[CERRADO] Conocimiento de cómputo en general.
tema contestó a Antoni en Julibaga Cafeteria Ayuda Excel
¡¡¡ Sensacional logroastur !!! -
Que pasaría si no existieran las funciones de cadena
tema contestó a Antoni en Antoni Ideas y aportes
Hola a todos: Hoy en que pasaría si no existiera,..... la función: Find Dim Celda, Desde As Long, Hasta As Long, Fila As Long, x As Integer Sub Buscar(Valor) 'Solo admitimos selecciones de 1 Area y 1 Columna If Selection.Areas.Count > 1 Or _ Selection.Columns.Count > 1 Then Exit Sub 'Inicializamos variables Desde = 100000 Hasta = 0 'Buscamos 1ª celda y última celda For Each Celda In Selection If Celda.Row > Hasta Then Hasta = Celda.Row If Celda.Row < Desde Then Desde = Celda.Row Next 'Busqueda dicotómica While Hasta - Desde > 1 Fila = Desde + Int((Hasta - Desde) / 2) If ActiveSheet.Cells(Fila, ActiveCell.Column) = Valor Then ActiveSheet.Cells(Fila, ActiveCell.Column).Select Exit Sub End If If ActiveSheet.Cells(Fila, ActiveCell.Column) < Valor Then Desde = Fila Else Hasta = Fila End If Wend End Sub [/CODE] Este procedimiento busca un valor en una rango de celdas seleccionado, [b]ORDENADO DE MENOR A MAYOR[/b]. Proporciona solamente una coincidencia, seleccionando la celda. En caso de muchas coincidencias, no se puede garantizar cual será el seleccionado. Sea cual sea la cantidad de celdas del rango, se garantiza que el numero de iteraciones hasta conseguir o no la coincidencia, será menor de [b]Logaritmo en base 2 del numero de celdas que contenga el rango + 1[/b], así por ejemplo, una búsqueda entre 12.000 celdas se realizará en un máximo de 20 iteraciones. Salu2. Antoni. -
Hola a todos: ¡ Pegones ! No me acordaba de lo del aterrizaje de cabezales, era espectacular, disco y cabezales a tomar por.......ja,ja,... ¡ Que tiempos !,... las guerras se hacian con lanza todavía.... Un abrazo. Antoni.
-
Que pasaría si no existieran las funciones de cadena
tema contestó a Antoni en Antoni Ideas y aportes
Muy bueno, a este paso llegamos al lenguaje máquina en unos días, ja,ja Salu2. -
Que pasaría si no existieran las funciones de cadena
tema contestó a Antoni en Antoni Ideas y aportes
El merito es de Never, que fue quien me indicó como. ¡ Ah ! mucha suerte para hoy, que si ganais, nos ahorramos 15 millones de euros en primas a los jugadores. Salu2. 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.