viernes, junio 29, 2007

La Biblia en Excel

John Walkenbach publicó en su blog un cuaderno Excel que contiene toda la Biblia. Cada libro aparece en una hoja y cada versículo en una celda. Lo interesante en este uso de Excel es no sólo mostrar sus posibilidades casi ilimitadas, sino también el uso de funciones de texto y funciones matriciales.
Partiendo de la base que una buena parte de mis lectores no dominan el inglés, decidí hacer una adaptación al español.

La Biblia Excel en Español que publico aquí, comprende solamente los capítulos 1 al 9 del libro del Génesis.

Al igual que Walkenbach, empecé por buscar un archivo texto de la Biblia para importarlo a Excel. Después de descargar un archivo un tanto problemático (cada porción de texto tiene un formato distinto), logré importarlo a un cuaderno Excel usando algunas macros ad-hoc.

A diferencia de la versión en inglés, mi versión sólo contiene los primeros 9 capítulos del Génesis, cada capítulo en una hoja y cada versículo en una celda.

La primer hoja es el índice de dónde se puede acceder a las distintas hojas. Además contiene una serie de estadísticas por capítulo: número de versículos, número de letras, letras por versículo, número de palabras, palabras por versículo y concordancia (número de veces que una determinada palabra aparece en un capítulo).




Para elaborar las estadísticas usamos las siguientes fórmulas:

Versículos: =CONTARA(INDIRECTO("'"&B10&"'!A:A")). Usamos indirecto para crear una referencia a la hoja indicada usando el valor que aparece en la celda de la columna B de la fila correspondiente. En lugar de INIDRECTO podríamos usar una referencia explícita

Letras (Caracteres): ={SUMA(LARGO(INDIRECTO("'"&B10&"'!B1:B"&C10)))}. Esta es una fórmula matricial. LARGO suma el total de caracteres en cada celda del rango señalado por INDIRECTO, y SUMA en su forma matricial suma todos los valores obtenidos por LARGO.

Palabras: esta es la fórmula más elaborada
=CONTARA(INDIRECTO("'"&B10&"'!B1:B"&C10))+SUMAPRODUCTO(LARGO(ESPACIOS(INDIRECTO("'"&B10&"'!B1:B"&C10)))-LARGO(SUSTITUIR(ESPACIOS(INDIRECTO("'"&B10&"'!B1:B"&C10));" ";""))).

La primer función LARGO calcula la cantidad de caracteres que hay en la celda. La segunda función LARGO calcula la cantidad de caracteres después de haber sustraído los espacios entre las palabras.
La diferencia entre ambos resultados es la cantidad de palabras menos 1 (ya que no hay espacio antes de la primer palabra). Así que tenemos que agregar una unidad por cada versículo en el capítulo, lo que hacemos con la función CONTARA.

Finalmente tenemos la Concordancia, que lo que hace es contar cuantas veces aparece una palabra determinada en cada versículo. La fórmula es matricial:

=SUMA(LARGO(MAYUSC(INDIRECTO("'"&B10&"'!B1:B"&C10)))-LARGO(SUSTITUIR(MAYUSC(INDIRECTO("'"&B10&"'!B1:B"&C10));MAYUSC($H$7);"")))/LARGO($H$7)

La técnica es similar a la usada en la fórmula anterior. La primer función LARGO da el número de caracteres que hay en la celda. La segunda función LARGO calcula el número de caracteres después de haber extraído con SUSTITUIR la palabra que buscamos (celda $H$7). El resultado lo dividimos por la cantidad de caracteres de la palabra buscada, que calculamos con la última función LARGO en la fórmula.

Como se puede apreciar, Excel es muy flexible y ofrece muchas posibilidades en todo lo que respecta a cálculos vinculados con textos.



Technorati Tags:

11 comentarios:

  1. Hola, en primer debo de felicitarte por tan estupenda pagina de ayuda a los usuarios en el manjo del excel.
    Mi pregunta es sobre darle un color a una respuesta o a un resultado.
    Si decimos que la diferencia entre A2 y B2 me da por resultado en la celda C2 una cantidad menor a 10 y quiero que se marque con rojo, pero si es amayor que 10 y menor que 20 sea azul, si es mayor que veinte y menor que 40 sea verde y asi sucesivamente.
    Otra digamos que tengo 24 distritos cuya poblacion varia entre 1000 y 57000, si yo quiero diferenciar por ejemplo todos distritos donde la poblacion es menor a 10000 con color rojo y asi sucevimanete de diez en diez voy cambiando el color.

    Gracias por tu apoyo.

    ResponderBorrar
  2. Hola y gracias por las felicitaciones.
    En relación a tu consulta, puedes leer mis notas sobre Formato Condicional.

    ResponderBorrar
  3. Hola Jorge:

    Te agradezco que tomes de tu tiempo para ayudar a trabajar mejor con Excel ... tengo la siguiente situación: columna A tengo valores incrementadose en uno en la columna B tengo valores que son similares entre si, por ejemplo el uno se repite en varias celdas: la cosa es que necesito buscar dentro del rango que ser repite el uno el valor minimo de la columna A y el valor maximo de la misma columna.
    Gracias
    JOG

    ResponderBorrar
  4. Hola JOG
    Te sugiero que consultes en los distintos foros de Excel, como Exceluciones, donde aparecen cada tanto preguntas similares a la tuya.

    ResponderBorrar
  5. Hola nuevamente JOG
    me quedé pensando en tu problema y la solución me planteó algunos problemas interesantes que publicaré en la próxima entrada del blog.
    Mientras tanto te comento que existen, por lo menos dos soluciones. Una con columnas auxiliares, que comentaré en la entrada, y otra con una fórmula matricial.
    Suponiendo que los números repetidos están en el rango B2:B16, la fórmula matricial
    ={K.ESIMO.MENOR((B2:B16*(CONTAR.SI($B$2:$B$16;B2:B16)>1));CONTAR(SI((B2:B16*(CONTAR.SI($B$2:$B$16;B2:B16)>1))=0;1))+1)}
    te dará el mínimo de los números repetidos.
    Luego para ubicarlo en la columna de los valores únicos usamos una fórmula que combina DIRECCION y COINCIDIR.
    Todo esto estará explicado en la entrada.

    ResponderBorrar
  6. Hola JOG
    acabo de leer nuevamente tu consulta y me doy cuenta que no había interpretado tu pregunta.
    Acabo de publicar una entrada sobre el tema.
    La respuesta a tu consulta aparece al final de la nota.

    ResponderBorrar
  7. Solo quiero entregar mi felicitación por tu página. a todos mis cercanos que tenga duda de excel se la recomiendo.

    ResponderBorrar
  8. Hola, me interesa la Biblia en formato en Excel pero doy click a la liga y no me da resultado favorable, qué puedo hacer?
    Gracias por todo
    Saludos cordiales

    ResponderBorrar
  9. Hola Gustavo, acabo de actualizar el vínculo al archivo.

    ResponderBorrar
  10. Buenos días Sr. Jorge, y a todos.
    Debo decir, que soy un amante de Excel, y que fue ¨amor a primera vista¨.

    Me encanta la Lógica y más cuando puedo entenderla y utilizarla en mi diario vivir, sin importar el contexto.

    Mis más sinceras felicitaciones Sr. Jorge. Pienso ahora en el dicho que reza:¨El que NO sabe, es como el que NO ve¨. Desde mi punto de vista, Excel DEBE ser la piedra angular de todos los estudiantes y/o profesionales del área de las Ciencias Económicas y Administrativas.
    Aproximadamente 10 años atrás fui Analista Ventas, y en ese momento, Excel fue mi mejor amiga. Desde entonces, cada vez que nace una pregunta cualquiera, también me nace la pregunta, podre resolverla con Excel, y cómo?

    Bueno, basta de palabras. Voy a comenzar a leer todo, y claro lo diré hasta mis peores enemigos.


    Leandro Yépez
    República Dominicana
    @ssmartketingdr:Tiwtter

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.