Using Arrays To Update Table Columns
We are creating a lot of reports everyday and these reports contain a lot of data which is presented in various styles as per the requirements. The data that allows us to create the reports is usually referred as raw data and in most of the cases is stored in hidden sheets.
I am sure you all are aware of a feature called as Excel Tables OR Structured References in Excel. Excel Tables is (in my opinion) the best way to store your raw data and put Formulas in the columns where necessary, this way you eliminate the need of a Cell Based Reference formula (example =SUM(B4:B50) and replace them with =sum(YourTable[YourTableColumnName]).
Another good feature of the Excel Tables is you just need to put the formula in 1 cell and it is replicated for that column by Excel.
Sometimes these formulas take a lot of time to calculate when we have really huge data points. In this scenarios it is better to have hard-coded values instead of the formulas to gain on speed.
In this post we will learn about how we can make use of Array’s to quickly populate the excel columns with the desired results before publishing our reports and other documents.
Here is a demo of what I mean:

Below is the code that allows us to add a new column to our data table and then taking input from the Date Time column provides us with the Week Of column.
Sub UpdateWeek()
Dim myarray As Variant
Dim theRange As Range, startCellRow As Long
Dim tempStr As String
Dim myNewCol As ListColumn
‘If our column already exists then delete it
On Error Resume Next
Worksheets(“Data”).ListObjects(“cs”).ListColumns(“WeekOf”).Delete
‘adding our new column
Set myNewCol = Worksheets(“Data”).ListObjects(“cs”).ListColumns.Add
myNewCol.Name = “WeekOf”
‘Selecting the first cell of the column that contains our dates
Worksheets(“Data”).ListObjects(“cs”).ListColumns(“Date Time”).Range.Cells(2).Select
‘building a temporary Range address, this will be used to upload the entire range into the array
tempStr = ActiveCell.Address
startCellRow = ActiveCell.Row
tempStr = tempStr & “:$” & Mid(Sheets(“Data”).ListObjects(“cs”).ListColumns(“Date Time”).Range.Cells(2).Address, 2, 1) & “$”
tempStr = tempStr & LastRowInOneColumn(Mid(Sheets(“Data”).ListObjects(“cs”).ListColumns(“Date Time”).Range.Cells(2).Address, 2, 1))
‘loading the range into the array
myarray = Range(tempStr).Value
‘Looping through the array and converting each element to the relevant Week format
For i = LBound(myarray) To UBound(myarray)
myarray(i, 1) = Format(myarray(i, 1) – Weekday(myarray(i, 1), vbMonday) + 1, “ddd dd-mmm”)
Next
‘Setting the range address for our output column
Set theRange = Range(Cells(startCellRow, Worksheets(“Data”).ListObjects(“cs”).ListColumns(“WeekOf”).Range.Column), Cells(UBound(myarray) + (startCellRow – 1), Worksheets(“Data”).ListObjects(“cs”).ListColumns(“WeekOf”).Range.Column))
‘storing the values from our array to the WeekOf Column
theRange.Value = myarray
End Sub
Let’s Understand the code
We first delete the column if it is already existing to make sure we always get the new values as output. This is done by the below line of code.
Worksheets("Data").ListObjects("cs").ListColumns("WeekOf").Delete
Once we have deleted the column, we add it again as a blank column and change the name to “Week Of”.
Set myNewCol = Worksheets("Data").ListObjects("cs").ListColumns.Add
myNewCol.Name = "WeekOf"
After this we need to select the first cell of the column that contains the Date Time.
Worksheets("Data").ListObjects("cs").ListColumns("Date Time").Range.Cells(2).Select
Once we have selected the first cell of you Date Time column we then make use of the LastRowInOneColumn function to get the last row and create a range address. We use this range address to assign all the values contained in the Date Time column to an array.
tempStr = ActiveCell.Address
startCellRow = ActiveCell.Row
tempStr = tempStr & ":$" & Mid(Sheets("Data").ListObjects("cs").ListColumns("Date Time").Range.Cells(2).Address, 2, 1) & "$"
tempStr = tempStr & LastRowInOneColumn(Mid(Sheets(“Data”).ListObjects(“cs”).ListColumns(“Date Time”).Range.Cells(2).Address, 2, 1))
‘loading the range into the array
myarray = Range(tempStr).Value
Once we have loaded all the Date Time values into an array, we do a simple For loop to change the value in the array to the relevant Week Of
For i = LBound(myarray) To UBound(myarray)
myarray(i, 1) = Format(myarray(i, 1) - Weekday(myarray(i, 1), vbMonday) + 1, "ddd dd-mmm")
Next
We perform this operation on the same element and store the modified value in itself.
Once we have all these done, we need to define the Output range, that is where we need to the Week Of values to be stored. This is done by using the Range and Cell functions.
Set theRange = Range(Cells(startCellRow, Worksheets("Data").ListObjects("cs").ListColumns("WeekOf").Range.Column), Cells(UBound(myarray) + (startCellRow - 1), Worksheets("Data").ListObjects("cs").ListColumns("WeekOf").Range.Column))
'storing the values from our array to the WeekOf Column
theRange.Value = myarray
And lastly we assign all the values stored in the array to the new range address we have create above.
Download Demo File
Click here to download the demo file & use it to understand this technique.
What about you? Do you use them often? Please share your experiences, techniques & ideas using comments.
If you are new to VBA, Excel macros, go thru these links to learn more.
Join our VBA Classes
If you want to learn how to develop applications like these and more, please consider joining our VBA Classes. It is a step-by-step program designed to teach you all concepts of VBA so that you can automate & simplify your work.
Click here to learn more about VBA Classes & join us.
About Vijay
Vijay (many of you know him from VBA Classes), joined chandoo.org full-time this February. He will be writing more often on using VBA, data analysis on our blog. Also, Vijay will be helping us with consulting & training programs. You can email Vijay at sharma.vijay1 @ gmail.com. If you like this post, say thanks to Vijay.

















26 Responses to “FIFA Worldcup Excel Spreadsheets [Roundup]”
Nice roundup! Do you know of any one-page spreadsheets which will be updated by an administrator after each game? Would be nice to be able to print out the latest results whenever I feel like checking them as I probably won't be following closely every day.
I actually haven't tried any of the above ones yet, but I thought I'd mention this one that I found which makes a nice one-page form you can fill in dynamically. http://exceltemplate.net/sports/world-cup-2010-schedule-and-scoresheet/
I would like to recommend you these one: http://www.anotagol.com/
You can choose your interface language (english, spanish, italian, portuguese, german or french) and your country for the timezone of match. I like it very much.
An awesome online world cup calendar in flash.
http://www.marca.com/deporte/futbol/mundial/sudafrica-2010/calendario-english.html
Got one more tracker in excel (one page)
http://cid-b09e57e6e960505c.office.live.com/browse.aspx/.Public
[...] Passend zu gerade laufenden Fußball-WM gibt es auf Chandoo.org alles wissenswerte über Excel-Anwendungen für den Fußball-Fan. [...]
Great!!!
I strongly recommend this :
http://www.en.excel-soccer-2010.de/downloads
Chandoo how you found this ...
@Rohit.. really beautiful file. I missed it during my research. Now, I recommend it. 🙂
Hi Chandoo - thanks for the recommandation 🙂 - Regards
[...] Excel, then print it on the other side of your Match Schedule from step 2 above. There are several other Excel spreadsheet templates you can download, but this is probably the only one-page version you can find; plus, it [...]
Does anybody know how to re-create this(?): http://www.marca.com/deporte/futbol/mundial/sudafrica-2010/calendario-english.html
...or do you know where a template can be found? I am DYING to have something like this on my site. When I found it, I had been looking for the longest time for a circular calendar. I found a couple that weren't adequate. Then I stumbled upon this one and my eyes nearly popped out of my head. If anyone can lead me in the right direction, I would be eternally grateful!
Thanks in advance!
Robert
@Robert...
Doing something like that is a lot of work. You can probably get it done with some hired help from a flash developer.
@Robert, the World Cup flash in the Spanish Marca newspaper is impresive, but not much as my own animated spreadsheet with the Goals of 2010 World Cup South Africa in Excel that I just published into my blog:
http://pedrowave.blogspot.com/2010/06/goals-of-2010-world-cup-south-africa-in.html
Download from here:
http://cid-6b219f16da7128e3.office.live.com/view.aspx/.Public/Goals%20South%20Africa%20Animated.xlsx
And start to enter the goals of the rest of matches.
Has anyone seen, or made, a Spreadsheet where you can record the scorers and see a 'top scorers' chart. Would be a nice enhancement
@Neil... checkout this one http://www.inflexionary.com/sports/world-cup-2010-excel
it uses macros to fetch scores from web (and provides very comprehensive analysis too)
@All.. Thanks for the comments. I have updated the post with few more links now.
Hi,
Check this dashboards too:
http://dashboards.org/world-cup-dashboards-and-visualizations/
😉
[...] Here is a collection of FIFA World Cup Spreadsheets if you are more in to that sort of thing. | [...]
[...] Cup fever is here!In FIFA Worldcup Excel Spreadsheets Roundup, Chandoo has some links to useful World Cup tracking workbooks. Only one of them (the first one) [...]
[...] World Cup fever is here!In FIFA Worldcup Excel Spreadsheets Roundup, Chandoo has some links to useful World Cup tracking workbooks. Only one of them (the first one) [...]
Hey, you missed ours! It has everything you need and more, but not a whole pile of silly extras (National Anthems, etc). I'll be making another one for the 2014 world cup. We had over 4000 hits on it!
@Michael Harwood.
Where is it then? You should have posted a link
Sie sollten an einem Wettbewerb teil zu nehmen für einen der besten Blogs im Web. Ich werde empfehlen Sie diese Seite!
Google translation: You should take part in a contest for one of the best blogs on the web. I will recommend this site!
[...] and welcome to the forum, Maybe these similar spreadsheets might give you a few initial ideas: FIFA Worldcup Excel Spreadsheets [Roundup] | Chandoo.org - Learn Microsoft Excel Online If you have specific areas / formulae / layout choices for parts of your spreadsheet that you are [...]
Calling all football fans around the globe! The biggest football festival will kick off on the 12th June 2014 and everyone is placing their bets of who will have the honour of lifting the golden trophy.
Use our free interactive Excel templatel to predict the World cup finalists ! No macros !
http://www.spreadsheet1.com/world-cup-2014-free-excel-prediction-template.html
I also made a Worldcup-tracker, with MS Access, which can also generate reports in Excel
e.g. a match-schedule with locations on y-axis and dates on x-axis, see:
http://worktimesheet2014.blogspot.com.es/2014/05/excel-with-match-schedule-for-2014-fifa.html
and:
http://worktimesheet2014.blogspot.com.es/2014/05/match-access-app-to-track-world-cup.html
where can i find raw data in excel file format of fifa world cups (1930-2014)
@Vivek
Have a read of: http://chandoo.org/forum/threads/goal-of-world-cup.17637/
The location is mentioned in Somendra's comments
Free XLSX Prediction Spreadsheet for World Cup 2018 Russia!
https://www.spreadsheet1.com/fifa-world-cup-2018-russia-free-prediction-templates-for-excel.html