viernes, 30 de diciembre de 2022

Funciones Microsoft Excel - Año.

La función Año permite extraer el año de un número de serie de fecha correcto.

Esto implica que, en Microsoft Excel solo funciona entre el año 1900 y el 10000, dando el error #valor si se intenta usar una fecha fuera de ese rango.




jueves, 29 de diciembre de 2022

Funciones Microsoft Excel - Aleatorio.entre

Esta función es similar a aleatorio, también es una función volátil, por lo que tendremos que tener mucho cuidado con su uso.

La salida de esta función será un número entero entre los dos parámetros que le indiquemos.

Es sencillo crear decimales con ella simplemente dividiendo el resultado entre el valor adecuado. Por ejemplo si queremos simular precios con céntimos, necesitaremos dos decimales, por lo tanto dividiremos el valor entre 100.



miércoles, 28 de diciembre de 2022

Fechas anteriores a 1900 en Microsoft Excel y Libreoffice Calc

En Microsoft Excel no es posible tratar fechas anteriores al 01/01/1900 como tales, la única posibilidad es gestionarlas como cadenas de texto, perdiendo toda la capacidad de cálculo.

Sin embargo en Libreoffice Calc si que podemos tratar cualquier fecha, ya que es capaz de gestionar fechas asociadas a números negativos, y por lo tanto trabajar con fechas anteriores al 01/01/1900 sin problemas.




martes, 27 de diciembre de 2022

29/02/1900 el día que solo existe en Microsoft Excel

Desde la primera versión de Microsoft Excel, existe un error en las fechas que nunca ha sido corregido.

En Microsoft Excel, el año 1900 es bisiesto, y por lo tanto para este programa existe el día 29 de Febrero.

Sin embargo otras hojas de cálculo como Libreoffice Calc no tienen ese error.



lunes, 26 de diciembre de 2022

Funciones Microsoft Excel - Areas.

La función areas indica el número de rangos o celdas aisladas que forman parte de una referencia o rango con nombre.

Como curiosidad si no indicamos una única referencia, debemos indicar las referencias entre paréntesis.



lunes, 19 de diciembre de 2022

Funciones Microsoft Excel - Aleatorio.

La función aleatorio, es una función volátil que obtiene un número decimal entre 0 y 1.

Al tratarse de una función volátil se recalcula cada vez que se se produce un cambio en la hoja de cálculo.



domingo, 18 de diciembre de 2022

Funciones Microsoft Excel - Trigonometría.

La funciones trigonométricas (seno, coseno, tangente, secante, etc) nos permiten resolver los típicos casos de problemas trigonométricos en los que calcular ángulos y lados de triángulos.




miércoles, 14 de diciembre de 2022

Funciones Microsoft Excel - Dias.

La función Dias devuelve el número de días entre dos fechas.

Es una función que casi no se usa, ya que el mismo resultado se puede conseguir simplemente restando ambas fechas.




martes, 13 de diciembre de 2022

Evitando el uso de funciones volátiles en Microsoft Excel

Es posible evitar el uso de funciones volátiles como hoy() y ahora() mediante el uso de la adecuada combinación de teclas.


CTRL + ; --> muestra la fecha

CTRL + May + : --> muestra la hora



lunes, 12 de diciembre de 2022

Funciones Microsoft Excel - Hoy

La función Hoy devuelve la fecha actual.

Aunque aparentemente no cambie su valor, si que se trata de una función volátil, lo que significa que cada vez que se recalcula la hoja, se actualiza su valor, aunque este sea el mismo que ya aparecía en la celda.

Es muy típico usar esta fórmula en hojas de excel sin ser consciente de la carga de cálculo que esto supone para la hoja.

Este efecto se nota sobre todo en hojas de cálculo con gran cantidad de fórmulas.



domingo, 11 de diciembre de 2022

Función Ahora en Microsoft Excel

Funciones Microsoft Excel - Ahora.

La funcón ahora devuelve el la fecha y hora actual.

Es una función volátil, lo que significa que cada vez que se recalcula la hoja, se actualiza su valor.

Esto provoca el recálculo de todas las funciones que dependan de la celda en la que se inserte esta función.

Es recomendable reducir su uso en casos en los que existan muchas fórmulas en la hoja. En ocasiones es preferible indicar la fecha en una celda manualmente o mediante una macro VBA.




sábado, 10 de diciembre de 2022

Macro VBA con ChatGPT

Para comprobar el funcionamiento de la IA de OpenAI ChatGPT, le he pedido que cree una macro para Microsoft Excel que unifique en un único fichero los ficheros en formato Excel que se encuentren en una subcarpeta.

El enunciado exacto ha sido:

Crea una macro en VBA para Microsoft Excel que permita unificar todos los documentos Excel de una subcarpeta de la carpeta actual denominada archivosUnificar en un único fichero denominado unificado.xlsx

Y el resultado el que se muestra en este vídeo:









sábado, 26 de noviembre de 2022

Funciones Microsoft Excel - Abs.

La función abs devuelve el valor absoluto de un número, esto es si el número es positivo devuelve el mismo valor, y si es negativo el positivo equivalente.

Por ejemplo el valor absoluto de -5 es 5.

Esta función es útil cuando deseamos conocer la diferencia entre dos valores, pero no nos importa cual de los dos es mayor. De esta forma la diferencia entre 5 y 7 será la misma que entre 7 y 5, o lo que es lo mismo, el valor absoluto de 2 es igual al valor absoluto de -2.

En el ejemplo del vídeo se muestra como obtener la diferencia entre dos muestras de temperatura obtenidas en un experimento de laboratorio, sin importar cual de ambas es mayor.



Funciones de Excel

Como cualquier usuario de Microsoft Excel, debo reconocer que habitualmente uso una pequeña cantidad de funciones para mi trabajo diario, existiendo algunas que ni siquiera he usado ninguna vez.

Para ello me planteo realizar una serie de publicaciones en las que muestre, al menos, un ejemplo de cada una de las funciones de Microsoft Excel. 

En ocasiones acumularé diversas funciones similares e un solo ejemplo para simplificar el proceso.

Unificaré todos los posts bajo la etiqueta #funcionesExcelPildorasOfimaticas

Para abrir boca, en el siguiente enlace hay un listado de todas las funciones de Microsoft Excel.

https://support.microsoft.com/es-es/office/funciones-de-excel-por-orden-alfab%C3%A9tico-b3944572-255d-4efb-bb96-c6d90033e188



viernes, 25 de noviembre de 2022

Extraer la parte final de un código de artículo.

En ocasiones necesitamos extraer la parte final de un código de artículo.

Esto suele suceder cuando los primeros dígitos se corresponden con la familia y el resto con el código propiamente dicho del artículo.

Para ello es posible utilizar la funcion derecha en Microsoft Excel.4



martes, 15 de noviembre de 2022

Números que se convierten en letras

La función izquierda, permite extraer los primeros caracteres de una cadena de texto.

Pero también es aplicable a un número.

En cuyo caso, el número se transforma automáticamente en un texto.

En el ejemplo tenemos códigos de artículos, los cuales definen la familia de artículos con los dos primeros dígitos.



Al usar izquierda para extraerlos, en lugar de obtener un número, nos encontramos con un texto. Es importante tenerlo en cuenta ya que esto afectará tanto a la ordenación como a los posibles cálculos a realizar.

jueves, 3 de noviembre de 2022

Convertir a mayúsculas - Mayúsculas que si lo son.

Si usamos la opción de convertir a mayúsculas, realmente se cambia un caracter por otro (por ejemplo la a por la A).



Este cambio no tiene vuelta atrás. No es posible saber cuales de las letras eran minúsculas antes de la conversión.

miércoles, 2 de noviembre de 2022

Mayusculación - Mayúsculas que no lo son.

Libreoffice Writer permite aplicar un formato de carácter denominado mayúsculas mediante el cual las letras, sin dejar de comportarse como minúsculas se muestran como mayúsculas.




domingo, 25 de septiembre de 2022

Solicitar información al usuario mediante Pyautogui

Vamos a solicitar información al usuario y almacenarla en una variable para su uso posterior.

En este caso solamente la vamos a mostrar por pantalla con un alert.



En el vídeo se ve el proceso completo:








sábado, 24 de septiembre de 2022

Mensaje de alerta con Pyautogui

 

A la hora de automatizar tareas existen diveros enfoques a tomar.

Hoy he decidido probar una librería de Python que permite simular tanto entradas de teclado como movimientos de ratón.

Entre las disponibles me he decidido por pyautoguy, principalmente porque permite una característica muy interesante, puede localizar una imagen en pantalla.

Para comenzar vamos a ver como mostrar un mensaje de alerta en pantalla.


En el vídeo, podéis ver la ejecución de esta línea de código.







viernes, 9 de septiembre de 2022

Distinguiendo ceros de Os

En ocasiones es dificil distinguir el número cero de la letra o mayúscula.

Hoy os traigo un truco muy sencillo para distinguirlas usando Microsoft Word.




jueves, 14 de julio de 2022

No todo lo que parece un número sirve para sumar

 En Microsoft Excel no todo lo que aparentemente es un número se trata como tal, y por lo tanto, no siempre obtenemos los resultados esperados.



Un ejemplo interesante son los números almacenados como textos, que se pueden reconocer por un pequeño triángulo verde en la esquina superior izquierda de la celda.

Sin embargo cuando son muchas las filas, la mejor forma de comprobar si existen valores que no son sumados es comprobar la información de la barra de estado.

En ella podremos observar dos datos:

Recuento, es el número de celdas con datos.

Recuento numérico, es el número de celdas con números, estas son las celdas que podrían ser sumadas.


En el ejemplo en la primera columna, podemos comprobar que ambos valores son iguales, y por lo tanto todas las celdas incluyen datos numéricos.

En la segunda columna, existe una celda que almacena un número como texto, y eso provoca una diferencia en ambos datos.

Tanto la suma rápida como la función SUMA, ignorarán las celdas con textos. Podemos verlo como que su valor numérico es cero.

miércoles, 13 de julio de 2022

Suma rápida en Microsoft Excel

 En ocasiones es preciso conocer puntualmente el valor de la suma de un rango de celdas, una columna completa o una fila.


Se puede hacer usando la función suma, pero es mucho más rápido seleccionar las celdas a sumar, y comprobar el valor de la suma en la barra de estado.



Esta característica es común a todas las hojas de cálculo, como LibreOffice Calc o Google Sheets.




martes, 12 de julio de 2022

Sumando rangos no contiguos en Microsoft Excel

La función suma se puede usar de forma similar al operador suma, sumando celdas independientes entre sí.



El operador + solo puede sumar celdas independientes.



La función suma puede hacer lo mismo.





Sin embargo la ventaja de la función suma, es que cada uno de sus parámetros puede ser una celda o un rango.






Esto la convierte en una de las funciones más versátiles de Microsoft Excel.

lunes, 11 de julio de 2022

Introducción a la función SUMA en Microsoft Excel

A tenor del resultado de la última encuesta que he realizado en Linkedin, la cual indicaba que la mayoría de los usuarios usaban Microsoft Excel para el análisis de datos, y muy pocos a la realización de cálculos, he decidido aportar mi granito de arena explicando diversos usos de las funciones más habituales en las hojas de cálculo.

Quizá la función más usada sea la función SUMA la cual nos permite, entre otras cosas, realizar la suma de un rango de dato numéricos.

En el caso de que alguno de los datos no sea un número o una celda vacía, generará un error.

En el vídeo os muestro su uso más básico.


El aspecto de la función es el siguiente:



Y si usamos el asistente de funciones se nos muestra la información que se vé a continuación.




miércoles, 29 de junio de 2022

¿En qué idioma están las funciones de Microsoft Excel?

Microsoft Excel tiene la peculiaridad de que solamente admite el nombre de las funciones en el idioma en el que se ha instalado.

Esto implica que para cada idioma existe un nombre distinto para la misma fórmula.

Por ejemplo la función que en castellano se llama SUMA, en francés se llama SOMME y en inglés SUM.




Además no depende del fichero de excel, sinó del ejecutable. Esto quiere decir que si envías tu fichero de excel a un compañero que tiene el programa en francés, el verá la función en su idioma.

Esto puede provocar dificultades a la hora de trabajar con versiones en distintos idiomas.

Sin embargo más curioso es que si introducimos la función mediante programación en VBA, tendremos que usar el nombre de la función en inglés.

Por ejemplo, el equivalente a =SUMA(A1:A7) 




es ActiveCell.FormulaR1C1 = "=SUM(R[-7]C:R[-1]C)"




Por internet se pueden encontrar webs con listas de traducciones de los nombres de funciones, por ejemplo:

http://cherbe.free.fr/traduc_fonctions_xl97.html

martes, 28 de junio de 2022

Seleccionar un dia de cada quincena en Microsoft Excel

 Muestro otro uso del ejemplo de la columna auxiliar para filtrar datos.

En este caso en un calendario, filtraremos un día de cada 14.


Puede ser usado por ejemplo para controlar el progreso de una tarea.

lunes, 27 de junio de 2022

Seleccionar solamente filas pares en Microsoft Excel

En ocasiones es necesario seleccionar sólo algunas filas en nuestra hoja de cálculo de Microsoft Excel.

Hoy muestro como seleccionar sólo las filas pares, pero este método es aplicable a cualquier cantidad de líneas.

El truco consiste en crear una columna auxiliar con los números del 1 al máximo deseado, y luego filtrar las líneas a eliminar.



En este caso creamos una columna compuesta por los números 1 y 2, para luego filtrar y eliminar todas las filas correspondientes a un número uno.

viernes, 24 de junio de 2022

Crear una columna con una serie de números repetidos en Microsoft Excel

Uno de los trucos que utilizo habitualmente con Microsoft Excel, es la creación de una columna adicional que me permita seleccionar parte de los datos.

Para ello, en ocasiones creo una columna con una serie de números, o textos que se repiten cíclicamente.

El truco consiste en crear la primera copia de la serie, y en la siguiente fila, indicar una referencia relativa a la primera celda de la serie.


Esto nos permite crear listados de números, días de la semana o meses, por ejemplo.

jueves, 23 de junio de 2022

Mantener un orden desconocido en Microsoft Excel

En ocasiones recibimos hojas de cálculo tratadas por otras personas, en las que el orden de las líneas no corresponde a ningún criterio conocido.

Esto puede deberse a que la persona que preparó la hoja de cálculo eliminó las columnas que se usaron para crear el orden, o incluso que ese orden nunca existió, por ejemplo si se trata de datos introducidos manualmente.


Si deseamos reordenar estas líneas y poder regresar posteriormente al orden original, la solución es tan sencilla como crear una columna auxiliar en la que indicaremos números en orden ascendente, para representar el orden original. Esto nos permite volver a ordenar por esta columna y recuperar el orden original.




miércoles, 22 de junio de 2022

Desordenar líneas en un archivo de texto mediante Microsoft Excel

En Microsoft Excel también es posible desordenar las líneas, aunque no existe una forma directa de hacerlo.

En realidad lo que vamos a hacer es, primero crear una lista de números aleatórios en una columna auxiliar, para después ordenar por esta línea.

Es un proceso más lento que el que vimos ayer con Notepad++, y está limitado por el máximo de líneas que soporte la versión del formato que usemos. 

Para el formato *.xls unas 65.000 líneas, y para el *.xlsx algo más de un millón. 



Pueden parecer muchas líneas, pero en ocasiones, las exportaciones de bases de datos incluyen muchas más líneas.

martes, 21 de junio de 2022

Desordenar líneas en un archivo de texto

Muchas herramientas permiten ordenar líneas ya sea numéricamente o alfanuméricamente.

Pero en ocasiones lo que interesa es desordenarlas, o lo que es lo mismo ordenarlas de forma aleatoria. Por ejemplo para analizar una muestra representativa de los datos de un fichero.

Aunque es posible hacerlo con una hoja de cálculo como Microsoft Excel, hoy os muestro como hacerlo con el editor de texto gratuito Notepad++.

Esta herramienta presenta la ventaja de no estar limitada al millón de líneas que permite gestionar como máximo Excel.



lunes, 20 de junio de 2022

Convertir ISBN en EAN

 En el mundo del libro es muy habitual trabajar con dos códificaciones equivalentes.

Por un lado el ISBN (International Standard Book Number), que identifica a cada libro de forma única, mediante 13 dígitos numéricos separados por guiones.

Por el otro se usa el código EAN (European Article Number), que se corresponde con lo mismo 13 dígitos, pero sin separador, y que usualmente se muestra como un código de barras para facilitar la lectura mecánica de los códigos.

En este ejemplo muestro como eliminar los guiones de un ISBN, mediante la hoja de cálculo Microsoft Excel y transformarlos en un código EAN 13.

 


 

martes, 22 de marzo de 2022

Modificar distintas celdas mediante el uso del bucle while en VBA para Microsoft Excel

Podemos movernos por las celdas de Microsoft Excel modificando los valores de la función Cells mediante un bucle while en VBA.

En lugar de utilizar la variable contador del bucle while para modificar el valor de la celda, la usaremos para indicar celdas distintas.



A continuación muestro el código usado. 



El resultado de la ejecución de los bucles es el que se muestra a continuación.



Este es el código listo para copiar.


Sub bucleWhile()


Dim contador

contador = 1


While (contador < 10)

    Cells(contador, contador).Value = contador

'    Range("c4").Value = contador

    contador = contador + 1

Wend


End Sub






lunes, 21 de marzo de 2022

Introducción al uso del bucle while en VBA para Microsoft Excel

Hoy introducimos el bucle más sencillo en lenguaje VBA.

El bucle while permite repetir instrucciones mientras se cumpla una condición.

Esto hace que sea muy sencillo repetir una instrucción un número de veces usando como condición que el valor de una variable sea menor que uno dado.

Eso sí, recordad modificar el valor de la variable, o crearéis vuestro primer bucle infinito.






El código usado es el siguiente


El resultado es tan rápido que parece que solo se ha ejecutado la última instrucción. Sin embargo se ha ejecutado 99 veces.


Es importante darse cuenta de que cuando la variable alcanza el valor de 100 la condición ya no se cumple y el bucle finaliza.




Aquí lo podéis copiar


Sub bucleWhile()


Dim contador

contador = 1


while (contador <100)

    Cells(1, 1).Value = contador

    contador = contador + 1

Wend


End Sub




Es posible modificar el código añadiendo un retardo para ver como se ejecuta el código.

En la imagen una  pausa de 5 segundos en cada  iteración del bucle.



viernes, 18 de marzo de 2022

Estableciendo una pausa entre intrucciones mediante VBA para Microsoft Excel.

Estableciendo una pausa entre instrucciones mediante VBA para Microsoft Excel. 

El tercer elemento que necesitaremos para entender los bucles es la posibilidad de reproducirlo a cámara lenta.

Para ello lo que haremos es establecer una pausa entre las instrucciones.



El código usado en el ejemplo es el siguiente:



Primero mediante la instrucción Now se puede obtener la fecha y la hora actual.


Este es el aspecto que tiene.


TimeValue nos permite transformar una cadena de texto en un valor tipo fecha hora.


Mediante un MsgBox vemos su aspecto.



Si unimos estas dos instrucciones, podemos conseguir que mediante un condicional, no se ejecute la siguiente instrucción hasta que pase una cantidad de tiempo que sumemos al momento actual.

Suele sumarse un número de segundos a Now.

En el ejemplo sumamos 5 segundos  TimeValue("00:00:05")



Se muestra un primer mensaje, y tras pulsar el botón Aceptar ....

Tras cinco angustiosos segundos de espera, se ejecuta la siguiente instrucción, mostrando el segundo mensaje.


Usaremos esta técnica para poder ver como se van ejecutando  cada segundo las instrucciones en los bucles, ya que de forma contraria podría parecer que se ejecutan en un único paso.


Aquí tenéis el código VBA completo por si lo queréis copiar:


Option Explicit

Sub establecerPausa()

'con Now obtenemos la fecha y hora actual

MsgBox (Now)


'TimeValue permite transformar una cadena de texto en un valor Time de VBA

'TimeValue ("00:00:01") representa 1 segundo

MsgBox (TimeValue("00:00:01"))



'Application.Wait estable una pausa en el código hasta la fecha y hora indicadas

'Application.Wait(TimeValue("31/12/2999 00:00:00"))

'solo se ejecuratá el día de fin de año del año 2999


'Por lo tanto, si al momento actual Now le sumamos un segundo,

'estaremos creando una pausa

'en este caso vamos a establecer una pausa de 5 segundos


MsgBox ("Mensaje Uno.")


If Application.Wait(Now + TimeValue("00:00:05")) Then

    MsgBox ("Mensaje Dos.")

End If

    

End Sub

martes, 15 de marzo de 2022

Modificando color de fondo en celdas mediante VBA para Microsoft Excel

Hoy os muestro como cambiar el color de fondo (background) de una celda en una celda de Microsoft Excel mediante VBA.



Estas instrucciones serán muy útiles a la hora de usarlas en bucles, ya que harán muy visual la ejecución del bucle.

Para ello usaremos la instrucción Cells(n, m).Interior.Color, a la que asignaremos el color deseado.

Para definir el color usaremos el método RGB(rrr, ggg, bbb), que a partir de los valores de los tres colores primarios da como resultado el color elegido.

Podéis encontrar información sobre los componentes RGB en la wikipedia, por ejemplo en la siguiente url https://es.wikipedia.org/wiki/RGB

En este caso he usado el selector de color de Microsoft Paint para mostraros el color que se va a obtener.


El código usado en el ejemplo es el siguiente:


Y el resultado el que se muestra a continuación:



El código usado en el ejemplo es el siguiente (para copiar y pegar):


Option Explicit

Sub cambiarColorFondoCelda()

    Cells(4, 2).Interior.Color = RGB(0, 255, 255)

End Sub


lunes, 14 de marzo de 2022

Escribiendo en celdas mediante VBA para Microsoft Excel

Hoy os muestro como escribir un número o un texto en una celda de Microsoft Excel mediante VBA.

Estas instrucciones serán muy útiles a la hora de usarlas en bucles, para repetir el proceso.




El código usado en el ejemplo es el siguiente:


Y el resultado el siguiente. Los valores numéricos se asignan directamente o mediante variables, mientras que los textos se indican entre comillas.



Por si lo queréis copiar.

Option Explicit

Sub escribirEnCelda()

        Cells(2, 3).Value = 6

        Cells(3, 2).Value = "Hola"

End Sub


miércoles, 9 de marzo de 2022

Uso de Case 1,2,3 en VBA para Microsoft Excel

Para finalizar la introducción a la instrucción Selct Case en VBA, veremos la posibilidad de crear un Case que se aplique a varios casos aislados.

Para ello pondremos en el Case, separados por comas los valores para los que deseemos ejecutar las instrucciones.


La instrucción que usaremos es esta:



El  código completo del programa:



Option Explicit

Sub condicional()

    

    'Declaramos una variable numerica

    Dim dia As Integer

    Dim dato As Integer

    dato = Range("B2").Value

    Select Case dato

        Case 1, 3, 5, 7:

            MsgBox ("Dia impar")

        Case 2, 4, 6:

            MsgBox ("Dia par")

        Case Else:

            MsgBox ("Dato incorrecto introduzca un numero del uno al siete")

    End Select

End Sub


miércoles, 2 de marzo de 2022

Uso de Case N To M en VBA para Microsoft Excel

En un Select Case de VBA para Microsoft Excel es posible crear un Case que se ejecute entre dos valores, para ello usaremos la instrucción Select M To N.

Esto permite crear en una única instrucción una respuesta a varios valores de la variable de control.



La línea de código que hemos modificado es la siguiente:


El código completo es el siguiente:



El resultado es el mismo que el código que veíamos ayer con menos líneas.




El código completo a conticuación:

Option Explicit

Sub condicional()

    'Declaramos una variable numerica

    Dim dia As Integer

    Dim dato As Integer

    

    dato = Range("B2").Value

    Select Case dato

        Case 1 To 5:

            MsgBox ("Dia laborable")

        Case 6 To 7:

            MsgBox ("Fin de semana")

        Case Else:

            MsgBox ("Dato incorrecto introduzca un numero del uno al siete")

    End Select

End Sub




martes, 1 de marzo de 2022

Uso de Case Else en VBA para Microsoft Excel

En un Select Case de VBA para Microsoft Excel es posible crear un Case que se ejecute cuanto no se cumplan las condiciones de ninguno de los anteriores.




La instrucción concreta es la siguiente.




Esto sustituye en nuestro ejemplo con una sola instrucción a tres condicionales en nuestro ejemplo original.

Este es el código completo del ejemplo.





Sub condicional()

    'Declaramos una variable numerica

    Dim dia As Integer

    Dim dato As String

    

    dato = Range("B2").Value

    

    Select Case dato

        Case 1:

            MsgBox ("lunes")

            

        Case 2:

            MsgBox ("martes")

            

        Case 3:

            MsgBox ("miercoles")

            

        Case 4:

            MsgBox ("jueves")

            

        Case 5:

            MsgBox ("viernes")

            

        Case 6:

            MsgBox ("sabado")

            

        Case 7:

            MsgBox ("domingo")

        Case Else:

            MsgBox ("Dato incorrecto introduzca un numero del uno al siete")

            

    End Select

    

End Sub


sábado, 26 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 3) usando lenguaje M

Para mejorar el proceso de importación a través de Power Query podemos hacer uso del lenguaje M. que aumenta las posibilidades que nos ofrece el entorno gráfico.

Por ejemplo, mediante una única instrucción Splitter.SplitTextByPositions, podemos separar todas las columnas que deseemos.



Nota:

Esta instrucción es la misma que utiliza el entorno gráfico, pero solo nos permite indicar una única división.


= Table.SplitColumn(Origen,"Column1",Splitter.SplitTextByPositions({0, 18}, false),{"Column1.1", "Column1.2"})

En el primer caso, se generan gran cantidad de pasos en la importación, en la imagen vemos los pasos para obtener 3 columnas.

Este es el aspecto del editor gráfico.



Utilizando la instrucción enditada en lenguaje M, podemos reducir todos esos pasos a solo uno.


Siendo el resultado una tabla con todos los campos del fichero plano divididos en columnas.



Aquí os dejo la instrucción completa para dividir en columnas el fichero SINLI LIBROS v8 mediante lenguaje M.

= Table.SplitColumn(Origen,"Column1",Splitter.SplitTextByPositions({0, 18, 35, 52, 69, 86, 101, 181, 261, 411, 413, 421, 461, 463, 466, 468, 474, 478, 482, 486, 506, 586, 587, 589, 599, 609, 614, 615, 655, 665, 669, 670, 820, 970, 975, 1125, 1128, 1131, 1137, 1140, 1141, 1156, 1236, 1316, 1352, 1607, 1610, 1660, 1668, 1676, 1875, 3000}, false),{"EAN ", "ISBN Con guiones Facturación ", "ISBN Con guiones Obra completa ", "ISBN Con guiones Tomo ", "ISBN Con guiones Fascículo ", "Referencia ", "Título completo ", "Subtítulo ", "Autor/es Apellidos Nombre ", "País de publicación ", "Editorial Código ISBN completado con ceros a la", "Editorial Nombre ", "Encuadernación ", "Lengua de publicación Código ", "Número de edición ", "Fecha de publicación Mes año ", "Número de páginas ", "Ancho en mm. ", "Alto en mm. ", "Tema Materia CDUmás de una separada ;", "Descriptores palabras clave ", "Situación en catálogo ", "Tipo de producto ", "PVP sin IVA en EUROS sin puntuación", "PV con IVA en EUROS sin puntuación", "Porcentaje de IVA 416... ", "Tipo de precio * Si el tipo de precio es “L” el precio sin IVA será el precio de cesión y el Precio con IVA será el precio de cesión más el IVA correspondiente a él.", "Colección ", "Nº de colección ", "Nº de volumen ", "Imagen de portada y/u otras ** El nombre del fichero a d j u nt o co n la /la s imágenes será el EAN13", "Ilustrador cubierta Apellidos Nombre", "Ilustrador interior Apellidos Nombre", "Nº de ilustraciones en Color ", "Traductor Apellidos Nombre ", "Idioma Original ", "Grosor en milímetros ", "Peso en gramos ", "Audiencia ", "Nivel de lectura ", "Solo para texto: Nivel Infantil- Primaria-Eso Bachillerato-FP- Universitaria", "Solo para texto: Curso. ", "Solo para texto: Asignatura ", "Solo para texto: Comunidad Autónoma", "Resumen ", "Tipo de versión de materia IBIC ", "Tema Materia IBIC más de una separada ;", "Fecha puesta en venta/lanzamiento ", "Fecha disponibilidad de existencias ", "Dirección URL ", "Resumen o sinopsis ampliados"})

jueves, 24 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 2)

En este caso importaremos el fichero SINLI pero para ello usaremos el componente Power Query de Microsoft Excel.



Este componente nos va a permitir tratar el fichero e importar solo partes de él o crear campos adicionales a partir de lo existentes.


miércoles, 23 de febrero de 2022

Importando fichero SINLI LIBROS a Microsoft Excel (versión 1)

Hoy os traigo el proceso completo para importar las líneas de detalle de un fichero SINLI LIBROS en su versión 8, a Microsoft Excel.

Este formato es el se usa habitualmente para enviar la información del catálogo desde los editores a distribuidores y libreros.


La ventaja es que una vez preparado se puede reutilizar con facilidad.

viernes, 18 de febrero de 2022

Ejemplo de fichero SINLI

Hoy os traigo un ejemplo real de un fichero SINLI.

En la imagen se muestra el encabezado y la primera línea de detalle.

Las especificaciones son las siguientes.

Cada uno de los datos se puede localizar por su distancia al principio de la línea.

El siguiente paso es importarlo a Microsoft Excel.

jueves, 17 de febrero de 2022

Importación de catálogo de libros en formato SINLI a Microsoft Excel parte 2 saltarse el encabezado

¿Alguna vez os habéis parado a pensar que en una hoja de cálculo es posible indicar la primera fila desde la que importar datos de un fichero externo, pero no la última?


Esta característica está pensada para importar ficheros que incluyen algún tipo de cabecera, como es el caso de los formatos SINLI.

Lo único que tendremos que hacer es indicar la primera línea que queremos importar a Microsoft Excel desde el fichero de texto plano.



Este es un comportamiento estándar de todas las hojas de cálculo.

Apoyándonos en esta característica, podremos cargar directamente las líneas de detalle a nuestra hoja de cálculo.

miércoles, 16 de febrero de 2022

Importación de catálogo de libros en formato SINLI a Microsoft Excel

El estándar SINLI es un conjunto de protocolos enfocados a la cadena de venta y distribución del libro.

A diferencia del estándar EDI el cual es genérico, este es mucho más sencillo, ya que se centra solamente en el mundo del libro.

Se compone de diversos ficheros en texto plano que permiten el intercambio de información entre ordenadores.

Cada mensaje tiene su propio formato asociado.

La última versión de los formatos se puede consultar en la siguiente dirección:

http://www.fande.es/sinli_indicedocumentos.html

Los ficheros SINLI, a diferencia de los ficheros en formato CSV, los cuales tienen la misma estructura en todas sus líneas, se componen de una sección de encabezado y otra de líneas de detalle.

El encabezado tiene la siguiente estructura, pero a la hora de importar a Microsoft Excel, la vamos a ignorar.

En cuanto a las líneas de detalle tienen todas la misma estructura, tratándose de datos de ancho fijo, llagando cada línea a poder alcanzar más de 3000 caracteres 


A la hora de importar estos datos a Excel, lo haremos desde la opción Datos o directamente al abrir el fichero.

Indicaremos para ello la posición indicada en la columna Acumulado del documento que define el estándar.


Este es un trabajo árduo por lo que recomiendo crear un fichero al que podamos importar nuestros datos y luego reutilizarlo, evitando tener que definir las posiciones cada vez que deseemos importar datos.