¿Hay palabras que repites demasiado en tus textos?-4-Pasos iniciales en Excel

Photo by Jon Ottosson
Ya sabemos qué buscamos con este procedimiento: conocer la densidad de repetición de cada palabra de nuestros textos (en el primer artículo); ya establecimos su alcance y limitaciones (en el segundo) y desarrollamos una macro de Word que generaba un listado con los datos (en el tercero). Lo siguiente será tratarlos para hacerlos “digeribles”, de forma que consigamos que nos informen de lo que buscamos. Este post tratará de explicar cómo lo haremos. Para conseguirlo contamos con la herramienta ideal: Microsoft Excel.


Aquí están los pasos:

1. Para empezar, crearemos una macro en Excel (macro que no tenía previsto escribir inicialmente). Para ello, actuaremos de la misma manera que con la macro de Word de la entrada anterior:
  • Abre Excel, crea un documento en blanco y guárdalo con el nombre que estimes oportuno, cuidando de que el tipo de archivo sea "Libro de Excel habilitado para macros (*.xlsm)".
  • En el menú "Vista", pulsa la ficha «Macros», la que está más a la derecha.
  • En la casilla "Nombre de la macro" de la ventana que se ha abierto, escribe "Repeticiones" (sin las comillas, claro; en realidad valdría cualquier palabra o expresión, siempre que no dejes espacios entre las palabras y la utilices cada vez que hablemos de "Repeticiones").
  • Pulsa el botón "Crear".
  • Se abrirá una ventana con el editor de Visual Basic, en cuyo cuerpo principal aparecerá algo así:
Sub Repeticiones()

End Sub

  • Borra manualmente las dos líneas anteriores (desde el "Sub" del comienzo hasta el del final, ambos incluidos) y, mediante copiar y pegar, incluye el siguiente texto:
Sub Repeticiones()
Dim NumeroHojas As Integer
Dim HojaActiva As Integer
Dim FilaPrimera As Integer
Dim Fila As Integer
Dim FilaUltima As Integer
Application.DisplayAlerts = False
NumeroHojas = ActiveWorkbook.Worksheets.Count
For HojaActiva = 1 To NumeroHojas
    If Sheets(HojaActiva).Name = "TOTAL" Then Sheets(HojaActiva).Delete
Next
NumeroHojas = ActiveWorkbook.Worksheets.Count
Sheets(NumeroHojas).Select
Sheets.Add
Sheets(NumeroHojas).Move After:=Sheets(NumeroHojas + 1)
Sheets(NumeroHojas + 1).Select
Sheets(NumeroHojas + 1).Name = "TOTAL"
For HojaActiva = 1 To NumeroHojas
    Sheets(HojaActiva).Select
    Range("A1").Select
    Range("A1").Activate
    ActiveWorkbook.Worksheets(HojaActiva).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(HojaActiva).Sort.SortFields.Add Key:=Range("B1:B100000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets(HojaActiva).Sort.SortFields.Add Key:=Range("A1:A100000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(HojaActiva).Sort
        .SetRange Range("A1:B100000")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    FilaPrimera = 1
    Fila = FilaPrimera
    Cells(Fila, 1).Select
    Do While Not Cells(Fila, 1) < 1
        Fila = Fila + 1
        Cells(Fila, 1).Select
    Loop
    FilaUltima = Fila
    If FilaUltima > 1 Then
        Range(Cells(1, 1), Cells(FilaUltima - 1, 2)).Select
    End If
    Sheets("TOTAL").Select
    Range("A1").Select
    Range("A1").Activate
    FilaPrimera = 1
    Fila = FilaPrimera
    Cells(Fila, 1).Select
    Do While Not Cells(Fila, 1) < 1
        Fila = Fila + 1
        Cells(Fila, 1).Select
    Loop
    FilaUltima = Fila
    Sheets(HojaActiva).Select
    Selection.Copy
    Sheets("TOTAL").Select
    Cells(Fila, 1).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
Next
Sheets("TOTAL").Select
Range("A1").Select
ActiveWorkbook.Worksheets("TOTAL").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TOTAL").Sort.SortFields.Add Key:=Range("B1:B100000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("TOTAL").Sort.SortFields.Add Key:=Range("A1:A100000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("TOTAL").Sort
    .SetRange Range("A1:B100000")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Columns("A:A").Select
Selection.Cut
Columns("C:C").Select
ActiveSheet.Paste
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Rows("1:4").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Select
ActiveCell.FormulaR1C1 = "nº de palabras"
Range("A2").Select
ActiveCell.FormulaR1C1 = "nº de páginas"
Range("B2").Select
ActiveCell.FormulaR1C1 = 200
Range("A3").Select
ActiveCell.FormulaR1C1 = "palabras x página"
Range("A4").Select
ActiveCell.FormulaR1C1 = "palabras x resalte"
Range("B4").Select
ActiveCell.FormulaR1C1 = 50
Columns("A:A").EntireColumn.AutoFit
Range("C4").Select
ActiveCell.FormulaR1C1 = "página nº"
Range("D4").Select
ActiveCell.FormulaR1C1 = "difª nº pal."
Range("B1").Select
ActiveCell.FormulaR1C1 = "=MAX(R[4]C:R[99999]C)"
Range("B3").Select
ActiveCell.FormulaR1C1 = "=+R[-2]C/R[-1]C"
Range("C5").Select
ActiveCell.FormulaR1C1 = "=RC[-1]/R3C2"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=+IF(RC1=R[-1]C1,RC[-2]-R[-1]C[-2],"""")"
Rows("5:5").Select
ActiveWindow.FreezePanes = True
Range("A1:B1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A2:B2").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A3:B3").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A4:B4").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = 1
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("B2").Select
ActiveCell.Interior.ColorIndex = 6
Range("B4").Select
ActiveCell.Interior.ColorIndex = 6
Columns("A:D").Select
Selection.NumberFormat = "#,##0"
FilaPrimera = 1
Fila = FilaPrimera
Cells(Fila, 1).Select
Do While Not Cells(Fila, 1) < 1
    Fila = Fila + 1
    Cells(Fila, 1).Select
Loop
FilaUltima = Fila
Range("C5").Select
Selection.Copy
Range(Cells(5, 3), Cells(FilaUltima - 1, 3)).Select
ActiveSheet.Paste
Range("D6").Select
Application.CutCopyMode = False
Selection.Copy
Range(Cells(5, 4), Cells(FilaUltima - 1, 4)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Cells.FormatConditions.Delete
Range(Cells(6, 4), Cells(FilaUltima - 1, 4)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$D6<=$B$4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
    .ColorIndex = 2
    .Bold = True
    .Italic = False
End With
With Selection.FormatConditions(1).Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlSolid
    .ColorIndex = 26
End With
Selection.FormatConditions(1).StopIfTrue = False
Sheets("TOTAL").Select
Range("B2").Select
Range("B2").Activate
Application.DisplayAlerts = True
MsgBox ("HE TERMINADO")
End Sub

(Sí, lo sé, esta macro ya son palabras mayores, pero respira porque para utilizarla no tienes que hacer más que lo que has hecho: copiar y pegar).
  • Acabas de crear una macro llamada "Repeticiones". Pulsa el icono de guardar para no perder lo hecho y cierra el editor de Visual Basic. Para que puedas reutilizarla en el futuro con cuantos documentos quieras, graba el archivo de Excel con el nombre que deseas, pero procura que sea uno acorde con su finalidad, para que puedas reconocerlo. En esas ocasiones bastará con que abras el fichero y continúes desde el siguiente paso 2.

2. Volcaremos en un único documento de Excel los datos de los diferentes archivos de procedencia en Word.
  • Inicia Word, abre el primero de los documentos que creaste siguiendo el artículo anterior ("Análisis-1" en nuestro caso), selecciona el contenido íntegro (a mano o mediante el comando Edición-Seleccionar todo) y cópialo.
  • Vuelve a la hoja de cálculo vacía de Excel en la que está guardada la macro "Repeticiones". Coloca el cursor en la celda "A1" de la primera pestaña en blanco y pega lo seleccionado en el documento de Word.
  • Repite los dos pasos anteriores en pestañas diferentes de Excel para cada uno de los documentos de Word resultantes del análisis en las que hayas tenido que trocear el texto original.
  • Cierra Word y deja abierto Excel.
  • Renombra las pestañas del documento de Excel. Puedes poner 1-2-3-4, A-B-C-D, o cualquier otro nombre. Solo está "prohibido" llamar a alguna de ellas "TOTAL", ya que lo utilizará la macro. Es importante que los datos que aparezcan en las pestañas sean solo los que procedan del documento que pretendes analizar.
  • Guarda por seguridad el fichero de Excel, pero no lo cierres aún.

3. Ejecutaremos la macro "Repeticiones" sobre el documento de Excel.
  • Sitúate en una de las pestañas del archivo de Excel, no importa cuál.
  • En el menú "Vista", pulsa la ficha «Macros», la que está más a la derecha.
  • En la ventana que se ha abierto, selecciona la macro que has creado ("Repeticiones") y presiona la tecla "Ejecutar".
  • La macro se habrá puesto a trabajar y, mientras lo hace, durante unos segundos/minutos, en función de la longitud del texto, el ordenador parecerá bloqueado. Es correcto. Ten paciencia y no utilices el teclado ni el ratón.
  • Una vez aparezca en el centro de la pantalla el mensaje "HE TERMINADO", pulsa el botón "Aceptar".
  • Guarda el documento creado con el nombre que desees.

La pestaña que estás viendo del fichero Excel, la llamada "TOTAL", ya tiene dispuesta para su análisis toda la información que necesitas para evaluar la densidad de las palabras que has utilizado en tu texto. Puedes empezar por tu cuenta a investigar cómo hacerlo o esperar a la siguiente entrega de esta serie de artículos.

Por supuesto, estaré encantado de escuchar tus comentarios y/o recomendaciones.


Ah, y si te ha gustado este artículo no te cortes y recomiéndalo en las redes sociales.

No hay comentarios:

Publicar un comentario

Redes sociales