Función que devuelve sólo los números de una celda en LibreOffice

Elastix tiene una opción llamada address book en donde puedes buscar, agregar contactos y con sólo presionar un botón se puede marcar el teléfono directamente. Básicamente hace una conferencia, porque marca tu extensión y también el número telefónico de tu contacto.
Me pasaron una hoja de cálculo con más de 400 contactos, para importar tal cantidad de datos es necesario un archivo .csv con al menos 3 campos, nombre, apellidos y claro el número telefónico.

El problema es que el campo con el número telefónico estaba muy “contaminado”, demasiadas letras de más que probablemente el conmutador no iba a entender. Además necesitaba saber que números telefónicos eran válidos por su longitud. Por ejemplo un número local consta de 7 dígitos, pero una larga distancia nacional es de 12. Eso me ayudaría a detectar visualmente algunos problemas con los números.

Pero para lograrlo necesitaba una función que extrajerá sólo los números, sin guiones, sin paréntesis, sin anotaciones.

Afortunadamente encontré una función que hace algo muy similar en Extract a number from a text string, sólo que esta función también regresa algunos símbolos como el punto o signos de operación, afortunadamente es muy fácil de ajustar modificando la línea.

Numbers_And_Signs = "0123456789 .+-*/"

Con esto en mente hice mi propia función que sólo extrae números.

Function Only_Numbers(Text_From_Cell as string) as string
Numbers_And_Signs = "0123456789"
n = len(Text_From_Cell)
Only_Numbers = ""
For i = 1 to n
ActChar = Mid(Text_From_Cell,i,1)
if Instr(Numbers_And_Signs,ActChar)<>0 then Only_Numbers = Only_Numbers + ActChar
next i
end function

Ejemplos de la función only_numbers

Ejemplos de la función only_numbers | función solo numeros libreoffice
Ejemplos de la función only_numbers

Como pueden ver, la función hace un barrido del contenido de la celda que recibe la función, busca y filtra lo que ustedes quieran en la cadena Numbers_And_Signs, no sólo es útil para extraer números, de hecho les puede servir para filtrar cualquier conjunto de letras, números o símbolos que deseen.

Si no saben como agregar una función les recomiendo que lean Función para convertir de número a cantidad con letra en LibreOffice Calc. En ese artículo se explica muy bien como agregar una función en LibreOffice.

Iconos planos (flat icons) para LibreOffice en Manjaro

Gracias al buen amigo Yoyo Fernandez que publicó este artículo sobre como instalar este juego de iconos monocromáticos para Libre Office en Manjaro.

Iconos Monocromáticos en LibreOffice

Realmente se ven muy bien y es muy sencillo de instalar.

Se inicia cualquier programa de LibreOffice, puede ser Calc o Writer, se va al menú Herramientas, y luego clic en Opciones, en la sección que dice Ver hay que cambiar el estilo de los iconos de Tango (automático) a Cristal.

Luego en una terminal:

cd /tmp && wget https://github.com/hotice/myfiles/raw/master/images_flat.zip

y una vez que descargue el archivo:

sudo cp images_flat.zip /usr/lib/libreoffice/share/config/images_crystal.zip

Cerramos los programas de LibreOffice y al volverlos a abrir.. ¡Tadaaaan! aparecerán con el nuevo estilo de iconos planos y monocromáticos.

Función para convertir de número a cantidad con letra en LibreOffice Calc

administrando macros en libreoffice

Estuve buscando una función para convertir una cantidad de un número a su equivalente con letra en LibreOffice. Para Excel existen varias pero para Calc son un poco más difíciles de encontrar.

Luego me acordé del proyecto Factura Libre que ya incluye una función para hacerlo. Sólo necesitaba buscar el código y pegarlo en un proyecto nuevo.

Primero deben de descargar el código de la función Numeros_letras.

Ahora hay que copiar todo este código a una macro nueva en Calc.

Vamos al menú Herramientas >> Macros >> Organizar macros >> LibreOffice Basic…

Menú Macros

Seleccionamos la hoja de cálculo actual, presionamos el botón Nuevo y le ponemos un nombre a nuestro módulo.

Agregando un módulo nuevo de LibreOffice Basic

Luego en la ventana que aparece pegamos el código de la función.

Pegando el código de la función - LibreOffice Basic

La función tiene 5 parámetros.

  • Numero = Valor que deseamos convertir en texto
  • Moneda = es el nombre de la moneda a mostrar
  • Fraccion_Letras = Verdadero para que la fraccion de la moneda tambien la convierta a letras
  • Fraccion = Es el nombre de la fraccion de la moneda
  • Texto_Inicial = Cualquier texto que quieras al principio del resultado
  • Texto_Final = Cualquier texto que quieras al final del resultado
  • Estilo = Formato de salida 1 = MAYÚSCULAS, 2 = minúsculas , 3 = Tipo Titulo

Los valores negativos los convierte a positivos. El valor minimo es 0, el valor maximo es 9,999,999,999,999.99

Si lo desean pueden descargar esta hoja de cálculo que muestra como se usa la función Número a letras.ods.

Número a Letras.ods - LibreOffice

Muchas Gracias a Mauricio Baeza por liberar este código bajo la licencia GPL.