I help organizations make the switch from Microsoft Excel to Google Sheets through workshops, webinars and online courses.
I’m a Google Developer Expert specializing in Google Sheets. I’ve taught spreadsheet workshops and courses for the past four years.
There are a lot of myths surrounding Goog…
By far the biggest challenge of my life continues to be the balance of being a good husband and father whilst running my own business and keeping fit. It’s hard to not feel like you’re failing on all these fronts, despite going full tilt all the time. All one can do is keep trying!
This reminds me of aabout the changes moving from one child to two.
I recently revisited a timetable solution that I developed to support schools with creating a basic timetable based on core data of:
One of the problems that was uncovered was that the system we were trying to feed the information into would not accept staff codes for staff who were not yet active in the system. My initial answer was to find each of these staff members in the final output and delete their codes. The question that was raised was whether this could occur at the beginning of the process by leaving the codes associated with inactive staff blank in the list.
This created a problem where the blank cells were not being recognised and were subsequently not being generated in the output. I found if I added a blank space then my original formulas would work. I therefore added an IF formula to replace any blank cells with a blank character CHAR(32). This meant I replaced:
ARRAYFORMULA(JOIN(",",(IF(ISBLANK('Basic Classes'!$C3:C103),CHAR(32),('Basic Classes'!$C3:C103))))
The issue with this though is that there would never be 100 classes. However, I wanted to create a flexible solution, therefore put in a range that would suffice all contexts. By replacing blanks with
CHAR(32), this meant every timetable created had 100 teachers. This would not work.
To work around this, I created a series of dynamic ranges using your example of named ranges. I entered this formula in a cell and referenced it to create a named range. To get the right range I used the form list (Column B) as a reference as this is a required cell in my data collection:
"'Basic Classes'!$C3:C"&COUNTUNIQUE('Basic Classes'!$B$3:B)+2
The final formula was:
This meant that the blank cells were only replaced for classes without teachers.
Here is a copy of the spreadsheet if you are interested.
Working analog clock built with a single formula in Google Sheets, involving the NOW, SPARKLINE, SEQUENCE & other functions
Learn to do Automation with Apps Script in this premium, online video training course.
Also on: Read Write Collect
Thought I would place my vote for the ‘education’ course. Although all of your courses provide insight and opportunities within education, I feel that there is real scope for an explicit education offering. Although there are some great offerings in regards to introductions (including your own), I think that a course which collated a range of educational scenarios would be a real benefit.
A free, introductory course teaching Google Apps Script from scratch
I have read a number of posts:
- Collins’ Beginner guide to APIs with Google Sheets & Google Apps Script
- Alice Keeler’s First Step – You Can Code Google Apps Script
- Jeff Everhart Add Custom Menus to Google Docs, Sheets & Forms
I look forward to this new offering. I always enjoy the way in which Collins’ breaks things down with his courses.
Come and learn how to use Pivot Tables in Google Sheets. This webinar will last for approximately 1 hour. All the example datasets will be made available to registered users.
This article describes 18 best practices for working with data in Google Sheets, including examples and screenshots to illustrate each concept in action.
This tutorial will help take you from an absolute beginner, or basic user, of Google Sheets through to a confident, competent, intermediate-level user.
Google Sheets is a hugely powerful tool, for everything from digital mark…