[RESUELTO] Ordenar columna por ultimas dos vocales de texto

Discute sobre la aplicación de hojas de cálculo
Responder
PericoST
Mensajes: 2
Registrado: Lun Mar 07, 2022 9:32 am

[RESUELTO] Ordenar columna por ultimas dos vocales de texto

Mensaje por PericoST »

Buenos días, hace tiempo que sigo el foro para aclarar dudas y aprender cada día un poco más con lo que aprovecho para agradeceros a todos los foreros la gran ayuda recibida. Esta es la primera primera vez que participo en el mismo y lo hago para plantear un tema un tanto atípico al que llevo tiempo dándole vueltas a ver si algún experto se le ocurre una solución. No sé si calc es la herramienta idónea para esta tarea, y somos bastante novatos en el uso de la misma, pero lo tenemos ya bastante avanzado a falta de la cuestión que os traslado ahora.

Lo que nos interesa es ordenar la columna por las últimas dos vocales de cada celda o extraer esas dos vocales a otra columna. Entre las distintas estrategias que hemos planteado la más sencilla parece la siguiente, por favor que alguien me corrija si andamos muy descaminados:
1º sustituir los espacios, consonantes y otros caracteres por nada, con lo cual solo queda una sucesión de letras vocales en cada celda.
2º Invertir el orden de esas vocales
3º ordenar alfabéticamente la columna

Ahora bien, los problemas que me encuentro son los siguientes:
1º A la hora de eliminar las consonantes, estoy utilizando el comando buscar y reemplazar, pero me encuentro que no puedo reemplazar varios caracteres al mismo tiempo, con lo que se eterniza el proceso cada vez que queremos actualizar.
2º No tengo la menor idea de cómo invertir el orden de esas vocales
3º El tercer paso no plantea problemas

Muchas gracias de antemano, cualquier ayuda es más que bienvenida!!!!
Última edición por PericoST el Mié Mar 09, 2022 12:44 am, editado 1 vez en total.
OpenOffice 4.1.5 en Windows 10
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Ordenar columna por ultimas dos vocales de texto

Mensaje por Neftali R »

Buenos días,

Me parece que puedes hacer todo eso con las funciones nativas de LibreOffice, no sé si OpenOffice tenga la función "EXP.REG", creo que sí, pero no estoy seguro.

Para "1°", sustituir los espacios, consonantes y otros caracteres por nada, con lo cual solo queda una sucesión de letras vocales en cada celda.

Es relativamente fácil, solo usas la función EXP.REG así:

Código: Seleccionar todo

=EXP.REG(MINUSC(Celda con la información original (Ej: A1));"[b|c|d|f|g|h|j|k|l|m|n...| ]";"";"g")
MINUSC es para no tener que preocuparse de añadir letras mayúsculas a la lista que está entre los corchetes "[]", puedes añadir todos los caracteres que quieras reemplazar a esa lista.

Para "2°", Invertir el orden de esas vocales

Si quieres hacer lo la todas las vocales de la cadena, sería un poco complicado y tedioso, pero según leí, solo quieres hacerlo con las dos últimas, eso es más simple, lo puedes hacer con las funciones IZQUIERDA y DERECHA, de la siguiente manera.

Código: Seleccionar todo

=IZQUIERDA(DERECHA(Resultado de la función EXP.REG;2);1)&DERECHA(Resultado de la función EXP.REG)
Para "3°", ordenar alfabéticamente la columna.

Lo puedes hacer manualmente con el interfaz de ordenado o los filtros, o puedes ordenarlo en otra tabla con formulas, la verdad lo primero es mucho más fácil, pero si te interesa hacerlo con formulas, te dejo un archivo adjunto con un ejemplo.
Adjuntos
Ejemplo.ods
(24.33 KiB) Descargado 109 veces
LibreOffice 7.2.6.2 | Windows 7 Ultimate
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Ordenar columna por ultimas dos vocales de texto

Mensaje por FJCC-ES »

OpenOffice no incluye la función REGEX pero puede usar Buscar y Reemplazar para sacar las ultimas dos vocales de la celda.
Supongamos que las celdas con texto están in la columna A. Copie el texto a la columna B y seleccione las celdas en la columna B. En el diálogo de Buscar y Reemplazar, en la caja Buscar ponga

Código: Seleccionar todo

.*([aeiou])[^aeiou]*([aeiou])[^aeiou]*$
En la caja Reemplazar Por ponga

Código: Seleccionar todo

$2$1
Pulse Más Opciones y marca las cajas Solo En La Selección Actual y Expresiones Regulares. Pulse Reemplazar Todo.

Explicación:
. significa “cualquier carácter”
* significa “cero o más”. Por ejemplo, la combinación .* significa “cero o más de cualquier carácter”.
[aeiou] significa “una vocal”.
( ) define un grupo. Usaremos los grupos cuando reemplazamos el texto.
[^aeiou] significa “cualquier carácter que no es una vocal”
$ significa el fin del texto.

Así que

Código: Seleccionar todo

.*([aeiou])[^aeiou]*([aeiou])[^aeiou]*$
significa
cero o más de cualquier carácter,
una vocal y esta vocal es el primer grupo,
cero o más de cualquier carácter que no es una vocal,
una vocal y esta vocal es el segundo grupo,
cero o más de cualquier carácter que no es una vocal,
el fin del texto.

Reemplazamos este texto con el segundo grupo ($2) y el primer grupo ($1).
PericoST
Mensajes: 2
Registrado: Lun Mar 07, 2022 9:32 am

Re: [RESUELTO] Ordenar columna por ultimas dos vocales de te

Mensaje por PericoST »

Gracias por vuestra ayuda!, efectivamente tanto la funcion de buscar y reemplazar sirve perfectamfnte, si bien al final lo hemos combinado con las formulas para ordenar sugeridas por Neftali, al final mas sencillo que como lo estabamos planteando, edito el asunto como resuelto y nevamente agradeceros vuestra ayda!
OpenOffice 4.1.5 en Windows 10
Responder