Assuming the data is small enough to fit in one column on a worksheet, I'd copy all columns into one column and create a simple pivot table to count each value for me.
To run it frequently, I'd create a VBA Macro, not a VB Script. The below procedure will do the whole thing automatically in Excel 2010. (Some of the pivot table code might be different in earlier versions of Excel.)
Sub CreateSummary()
' This macro assumes there is nothing else below the data being summarized
' and that there are no empty cells in any of the columns of data.
Const FIELDNAME As String = "FreeText"
Dim v As Variant
Dim sht As Worksheet, rTop As Range, r As Range
Dim pc As PivotCache, pt As PivotTable
Set v = Application.InputBox("Select first cell of table to be summarized." _
, "Create Summary", Type:=8)
If TypeName(v) = "Range" Then
Set rTop = v
Else
Exit Sub
End If
Set sht = rTop.Parent
' create new summary worksheet
sht.Copy
ActiveSheet.Name = sht.Name & " Summary"
Set sht = ActiveSheet
Set rTop = sht.Range(rTop.Address)
' add header
rTop.Rows.EntireRow.Insert
With rTop.Offset(-1)
.Value = FIELDNAME
.Font.Bold = True
.BorderAround XlLineStyle.xlContinuous
End With
' Grab data from other columns and move it to first column
Application.ScreenUpdating = False
Application.StatusBar = "Converting table to one column ..."
Set r = rTop.Offset(0, 1)
Do While r.Value <> ""
sht.Range(r, r.SpecialCells(xlCellTypeLastCell)).Cut
rTop.End(xlDown).Offset(1).Select
sht.Paste
Set r = r.Offset(0, 1)
Application.StatusBar = Application.StatusBar & "."
DoEvents
Loop
rTop.Select
Application.ScreenUpdating = True
' create PivotTable
Application.ScreenUpdating = False
Application.StatusBar = "Creating pivot table..."
Set r = Range(rTop.Offset(-1), rTop.End(xlDown))
With ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=r.Address)
With .CreatePivotTable(TableDestination:=rTop.Offset(-1, 2))
.AddDataField .PivotFields(FIELDNAME), "Count", xlCount
.AddFields FIELDNAME, , , True
End With
End With
Application.ScreenUpdating = True
Application.StatusBar = False
Set r = Nothing
Set rTop = Nothing
Set sht = Nothing
MsgBox "Done creating summary."
End Sub