«Apellido1 Apellido2, Nombre»: procesando cadenas de texto con la hoja de cálculo

Los programas de hoja de cálculo, como LibreOffice, Numbers o Excel, cuentan con funciones que van más allá del cálculo numérico con operaciones básicas y otras fórmulas más complejas. Podemos simular funciones de bases de datos, definir funciones lógicas, realizar conversiones entre unidades de medida o procesar fechas. De este último tipo, incluso podemos encontrar aplicaciones de lo más extrañas, como conocer el día en el que cae el Domingo de Pascua. Todas ellas vienen «de serie». El usuario, por su cuenta, puede definir sus propias funciones. Y este es el tema que ocupa esta entrada.

Personalmente, no hay curso en el que no me encuentre con el problema de analizar una lista de nombres (de alumnos, lógicamente). Los listados que exportan algunas bases de datos nunca tienen el formato adecuado para los programas que necesitan importarlos. Uno se plantea siempre si merece la pena modificarlos manualmente. Pensándolo un par de veces, está claro: mejor procesar los datos con algún programa. El tiempo invertido compensará; y quizá podamos reutilizar el «programita» en años posteriores.

En cualquier caso nos enfrentamos al problema de procesar cadenas de texto. Podríamos programar unas pocas líneas de código en cualquier lenguaje de script y ejecutarlo; pero es una opción demasiado técnica. También podemos optar por utilizar un programa de hoja de cálculo, que incorporan funciones para el tratamiento de texto. Con paciencia y en varios pasos, podemos lograr la conversión que necesitamos.
El problema que se presenta año tras año es el mismo: llega un listado de nombres de personas con este formato.

Apellido1 Apellido2, Nombre

Apellidos y nombre en la misma columna de una hoja de cálculo. Y uno sencillamente necesita los apellidos en una columna y el nombre en otra. Probablemente exista alguna función (muy escondida supongo) que esté diseñada precisamente para este propósito. Sin embargo, una solución más entretenida puede ser combinar funciones de texto ya definidas en la hoja de cálculo. De hecho, puede ser un modo interesante de introducir el concepto de función a los alumnos. Puede ser incluso ser un primer paso en el mundo de la programación.

Volvamos al problema. Para separar apellidos de nombre bastaría con combinar adecuadamente las funciones de texto IZQUIERDA, ENCONTRAR, DERECHA y LARGO. Suponiendo que el nombre completo está almacenado en la celda A1, en la celda contigua (B1) definimos la siguiente fórmula, que nos devolverá los apellidos de la persona:

=IZQUIERDA(A1;ENCONTRAR(",";A1)-1)

En otra celda (C1) definimos esta fórmula, que nos devolverá el nombre de la persona:

=DERECHA(A1;LARGO(A1)-ENCONTRAR(",";A1)-1)

ScriptEs cierto que si necesitamos aplicar esta conversión varias veces en el mismo documento de hoja de cálculo, la definición de las funciones puede resultar un poco tedioso. En este caso, el usuario podría definir su propia función programando una «macro»; un conjunto de instrucciones que hacen exactamente lo mismo que la combinación de funciones anterior. En el programa de hoja de cálculo se accede a esta opción a través del menú: «Herramientas – Macros – Organizar macros». Quizá dedique futuras entradas a este tema. De momento, si alguno ha definido alguna vez (o ha copiado y pegado) alguna macro, un posible fragmento de código sería el siguiente:

REM * Funciones LosApellidos & ElNombre *
Function LosApellidos(NombreCompleto As String)
Dim Apellidos As String
Dim Pos As Integer
Pos = InStr(NombreCompleto,",")-1
Apellidos = Left(NombreCompleto, Pos)
LosApellidos = Apellidos
End Function
Function ElNombre(NombreCompleto As String)
Dim Nombre As String
Dim Pos As Integer
Dim LNC As Integer
lNC = Len(NombreCompleto)
lAP = Len(LosApellidos(NombreCompleto))
Pos = lNC-lAP-2
Nombre = Right(NombreCompleto, Pos)
ElNombre = Nombre
End Function

Con esta definición, suponiendo que el nombre completo de la persona está almacenado en A1, bastaría con utilizar las funciones de este modo en cualquier celda.

Para obtener los apellidos:

=LosApellidos(A1)

Y para obtener el nombre:

=ElNombre(A1)

Podéis encontrar algunos detalles sobre estas funciones en la wiki de reciente creación que comenté hace unos días.

Wiki | Funciones de texto con hoja de cálculo

Geometría y hoja de cálculo: del lenguaje matemático al informático

Durante el curso 2010/2011 compartí una serie de materiales sobre Hoja de Cálculo, concretamente 4 fichas de teoría con ejemplos sobre (I) el entorno de OpenOffice Calc y operaciones básicas, (II) sobre el uso de funciones, (III) sobre la reutilización de fórmulas, y (IV) sobre la toma de decisiones utilizando la funciones condicionales y operadores lógicos.

También publiqué varias entradas con materiales y ejercicios de geometría, en particular sobre áreas de figuras planas. En la mayoría de ellas hacía referencia al programa GeoGebra, como en la actividad de «La estrella».

Este año combino los dos temas para proponer una primera actividad de hoja de cálculo. Con el objetivo de practicar las operaciones básicas con hoja de cálculo, he preparado un ejercicio que consiste en transformar fórmulas de cálculo de áreas de figuras planas de lenguaje matemático a lenguaje informático de una hoja de cálculo.

Las fórmulas de geometría plana contienen todos los tipos de operadores básicos (suma, resta, multipliación, división y potencia) que conviene conocer en una hoja de cálculo. Y además de repasar las fórmulas reales, transformar funciones de un lenguaje puramente matemático a otro lenguaje con otra sintaxis, permite revisar conceptos como el uso de los paréntesis o las reglas de precedencia de operadores.

Imagen | Basada en la fotografía de Claus Rebler
Actividad | Geometría con Hoja de Cálculo (PDF)
En Tiching | Geometría con Hoja de Cálculo

Planificación de Unidades Didácticas: calendario 2011/12

Este post bien podría haberse titulado «Organizando el curso escolar 2011/12»,  puesto que la plantilla que comparto puede servir tanto para profesores como estudiantes. Se trata de un único documento que muestra el calendario escolar, con espacio para programar el desarrollo de las clases de una asignatura y con posibilidad de hacer la planificación para varios grupos.

Bien pensado, la plantilla puede servir para organizar cualquier aspecto del curso escolar. Puede ser de utilidad para profesores, para planificar las clases que componen un curso completo, como para alumnos, como diario de seguimiento de la asignatura, en el que apuntar las fechas de exámenes, entregas de trabajos o cualquier otra anotación sobre el desarrollo de sus clases.

El documento es similar en aspecto a los calendarios compactos de los que hablé hace unos días. La diferencia principal es que esta plantilla permite planificar día a día. Algunas de las características son:

  • El calendario cubre el año escolar, de septiembre de 2011 a julio de 2012, estos dos meses completos, ya que en cada centro escolar y dependiendo de la etapa, el inicio del curso es diferente. No muestra los días no lectivos, que dependiendo del centro educativo, ciudad, comunidad autónoma o país, lógicamente son distintos.
  • La planificación se puede hacer día a día, pudiendo indicar el título de la clase o un resumen de los contenidos que se imparten ese día (columna «Sesión»).
  • No aparecen los fines de semana (S,D). Para simplificar la plantilla se han omitido los fines de semana, aunque en algún centro de formación es posible que se impartan clases en fin de semana.
  • Podemos agrupar (visualmente) las sesiones de una misma unidad didáctica, con la columna UD (utilizando la función de «combinar celdas» de la hoja de cálculo).
  • Aparecen cada uno de los días entre semana (en número), con la etiqueta L,M,X,J o V según el día de la semana. La etiqueta facilita la programación; si la asignatura se imparte por ejemplo martes y jueves, basta con recorrer la plantilla e ir marcando los días M y J.
  • Permite organizar la misma asignatura para grupos distintos A,B,C,D: líneas distintas, particiones del grupo en clase, etc.
  • La plantilla dispone de un contador en la parte superior de cada grupo, donde podemos ir viendo el número total de sesiones planificadas al año. Con está función podemos comprobar en todo momento que el número de sesiones programadas es el mismo para todos los grupos. Ya sabemos que cuando hay días festivos de por medio, siempre hay que ajustar la distribución de sesiones para cada grupo.

En definitiva, una sencilla plantilla que puede facilitar la (no sé si bien llamada) «temporalización» de las unidades didácticas en las programaciones de cada una de nuestras asignaturas.

Enlaces | Plantilla en varios formatos: OpenOffice (.odt) | Excel (.xls) | PDF

Curso de Hoja de Cálculo (IV): Tomando decisiones

«Tomando decisiones» es la cuarta de las entregas del curso de Hoja de Cálculo. Con ella se cierra una primera serie de fichas que intentan resumir los contenidos impartidos hasta ahora en clase sobre este tema: el entorno de hoja de cálculo y las operaciones básicas, la utilidad de las funciones, el buen aprovechamiento de las fórmulas y el uso de funciones lógicas y condicionales. Podríamos decir que las 4 fichas presentan las herramientas básicas para plantear un gran número de problemas con la hoja de cálculo.

¿Qué son las funciones condicionales? En ciertas situaciones puede ser necesario hacer que un resultado dependa de alguna condición. Supongamos que queremos reflejar el siguiente problema en la hoja de cálculo:

“Los alumnos han hecho dos exámenes y sólo se hace media si en ambos la nota es mayor que 4”.

En este caso, la única condición para realizar la media es que la nota de los dos exámenes supere el valor 4. Representar este problema con una fórmula matemática podría ser demasiado complejo. Es por ello que se introducen las funciones condicionales, que bien definidas permiten tomar decisiones sobre los datos. En concreto, en el programa Calc disponemos de la función SI.

La función SI tiene la siguiente forma:

=SI(prueba-lógica; valor-si-V; valor-si-F)

  • prueba lógica: es la condición; se trata de una expresión con dos posibles respuestas: verdadero o falso. Por ejemplo: A1>5
  • valor-si-V: el valor que muestra la celda si la prueba lógica es verdadera.
  • valor-si-F: el valor que muestra la celda si la prueba lógica es falsa.

¿Y cómo se aplica la función SI? Por ejemplo: queremos mostrar el texto «Aprobado» o «Suspenso» dependiendo de la nota de un examen. Si la nota del examen está en la celda B2, basta con definir la siguiente fórmula en la celda que debe mostrar el texto:

=SI(B2>=5;"Aprobado","Suspenso")

La Ficha 04 lista los operadores lógicos disponibles para definir correctamente la prueba lógica de la función SI. También ofrece un par de ejemplos de uso de las funciones lógicas O e Y, que permiten combinar varias condiciones (varios operadores lógicos) en una sola expresión.

Por ejemplo, si suponemos que en las celdas E1 y E2 tenemos las notas de dos exámenes, podríamos resolver el problema planteado al inicio de este artículo:

“Los alumnos han hecho dos exámenes y sólo se hace media si en ambos la nota es mayor que 4”.

con la siguiente combinación de operadores lógicos y funciones condicional (SI), lógica (Y) y de media aritmética (PROMEDIO):

=SI(Y(E1>=4;E2>=4);PROMEDIO(E1:E2);”No”)

Sobre Hoja de Cálculo todavía hay mucho que contar. Bien mejorando los apuntes ya publicados, o bien incorporando nuevas fichas, pronto compartiré más contenidos sobre el tema.

Enlaces: Ficha 01 | Ficha 02 | Ficha 03 | Ficha 04

Curso de Hoja de Cálculo (III): Cómo reutilizar fórmulas

Especialmente en áreas como la estadística, es muy habitual tener que realizar la misma operación sobre cientos o miles de líneas de datos, como ocurre por ejemplo con las encuestas, donde tenemos muchas respuestas que debemos procesar del mismo modo, utilizando la misma fórmula. En estos casos, lo más lógico es dejar que sea el ordenador el que realice estos cálculos y para ello debemos saber cómo generalizar un problema. La tercera entrega del Curso de Hoja de Cálculo detalla la función que permite copiar y pegar fórmulas en una hoja de cálculo, precisamente para evitar reescribirlas para cada caso particular.

La Ficha 04 que publico esta semana pretende explicar el uso del símbolo $ para «fijar una celda» cuando se reutiliza una fórmula con la función de copiar y pegar. En algunos casos la hoja de cálculo no consigue interpretar correctamente la fórmula que queremos duplicar. Un ejemplo habitual es cuando, por ejemplo, queremos dividir varias celdas consecutivas de una columna entre el mismo valor.

Enlaces: Ficha 01 | Ficha 02 | Ficha 03

Curso de Hoja de Cálculo (II): Funciones

Terminamos 2010 con una introducción a la hoja de cálculo OpenOffice Calc explicando los elementos básicos del entorno de hoja de cálculo, los tipos de datos que se pueden manejar y el uso de los operadores básicos (suma, resta, multiplicación y división). En esta segunda entrega, se introduce el uso de funciones que principalmente van a permitir simplificar algunos cálculos.

Las operaciones básicas estudiadas en la Ficha 01 se suelen utilizar para realizar cálculos sencillos con unos pocos datos. Si queremos sumar los valores de las celdas A1, A2 y A3, simplemente escribimos la siguiente fórmula:

=A1+A2+A3

Pero, ¿qué sucede si la cantidad de números de la expresión es muy grande?

=A1+A2+A3+A4+A5+ … + A678

Una de las ventajas del uso de funciones es precisamente simplificar este tipo de cálculos largos. Para este caso particular, sería más conveniente utilizar la función SUMA.

=SUMA(A1:A678)

Intervalos y conjuntos de celdas

En el ejemplo de función SUMA, aparece entre paréntesis el valor A1:A678, dos celdas separadas por el signo “dos puntos” (:). Se trata de una forma abreviada para indicar que la operación se realiza sobre un intervalo de celdas. El ejemplo:

=SUMA(A1:A678)

indica que se efectúa la suma de todos los valores desde la celda A1 hasta la celda A678 (siempre en celdas consecutivas).

Sin embargo, los datos sobre los que se opera no siempre aparecen de forma consecutiva en la hoja de cálculo. ¿Cómo podemos sumar entonces tres valores que están en las celdas A1, B3 y C9, sin recurrir el operador de suma (+)? Para ello podemos seguir utilizando la función SUMA e indicar un conjunto de celdas con el signo “punto y coma” (;).

=SUMA(A1;B3;C9)

que sería equivalente a escribir:

=A1+B3+C9

La ficha en formato PDF resume estos contenidos y añade la explicación de «Opciones de función» y muestra el uso de otra funciones conocidas (PROMEDIO, M.C.D, M.C.M, MÁX, MÍN, etc.).

Enlaces: Ficha 01 | Ficha 02

Curso de Hoja de Cálculo (I). Entorno y operaciones básicas

Con esta entrada empieza una serie de artículos en forma de Curso de Hoja de Cálculo. En cada una de las entregas publicaré algunos materiales resumidos en una ficha.  El material se ha elaborado para complementar los contenidos de estadística en educación secundaria y, por tanto, la mayoría de ejemplos se plantean para resolver problemas matemáticos de este nivel.

Durante este curso utilizaré OpenOffice Calc como software para desarrollar las explicaciones y ejemplos de Hoja de Cálculo, aunque es muy probable que en una segunda edición del curso (con mejora de los materiales) opte por pasar definitivamente a LibreOffice. Para conocer los motivos, puedes leer más sobre la noticia OpenOffice/LibreOffice en GenBeta o en Barrapunto.

Empezamos conociendo los aspectos básicos de una hoja de cálculo.

La hoja de cálculo es un programa que permite manipular datos numéricos y alfanuméricos. Con él podemos realizar desde operaciones básicas hasta complejos cálculos estadísticos. En una hoja de cálculo, todos los datos se organizan en filas (representadas por números; 1, 2, 3, …) y columnas (representadas por letras: A, B, C, …), ocupando cada valor un celda determinada (A1, B2, C2, …).

En general, en cada celda se pueden introducir valores de tres tipos: números, fórmulas y texto:

  1. Los números son los datos de entrada, aquella información sobre la que queremos realizar cálculos. Ejemplo: las notas de dos exámenes: 6,5 y 8.
  2. Las fórmulas son expresiones matemáticas que permiten obtener nuevos datos a partir de los números que aparecen en otras celdas. Ejemplo: la fórmula del promedio. Para el caso que muestra la figura, la suma de las notas divida por 2)
  3. El texto permite describir y organizar mejor la información numérica y las fórmulas. Ejemplo: etiquetas junto a los datos: Examen 1, Examen 2, Media.

Aunque veremos que existen métodos más sencillos (llamados funciones) para calcular una media aritmética, convendrá en primer lugar aprender a realizar este tipo de cálculos con los operadores básicos, que incluyen la suma, la resta, la multiplicación, la división, la potenciación y la raíz cuadrada.

Enlaces: Descargar OpenOffice.org | Ficha 01 de Hoja de Cálculo