How To Freeze A Row In Google Sheets

Freezing rows and/or columns is a useful and simple technique to lock rows (or columns) of your spreadsheet so that they remain in view even as you scroll down your datasets. You’re anchoring them in place.

Freeze Top Row Google Sheets

How To Freeze A Row In Google Sheets

Menu Method

Go to the menu: View > Freeze

Choose how many rows or columns you want to freeze:

How to lock a row in Google Sheets

Continue reading How To Freeze A Row In Google Sheets

How To Merge Cells In Google Sheets And When To Be Careful

In this tutorial, you’ll learn how to merge cells in Google Sheets, when to use merged cells in Google Sheets, the pros and cons of using merged cells, and finally, how to identify them with Apps Script.
Continue reading How To Merge Cells In Google Sheets And When To Be Careful

Alexa Rank Tracker in Google Sheets

Update May 2022:

Sadly, the Alexa service, on which this post is based, has been discontinued, so the techniques shown below no longer work. However, the Apps Script to save the data on a daily basis is still a valid technique, and so I leave this post up for that reason.

Alexa Ranking End of Service


Original Post:

This tutorial will show you how to create an Alexa Rank tracker in Google Sheets, using a couple of formulas and a few lines of code.

Alexa Rank is a third-party tool that measures how popular a website is. The lower your ranking, the higher your site traffic is.

For example, Google is ranked #1 and Facebook and Wikipedia also have very low rankings (and giant traffic). The full tool has a host of useful features, but I’ll show you how you can get a website’s Alexa Rank number and build an archive in your Google Sheet.

Here’s my website Alexa Rank over time:

Alexa Rank Tracker Chart in Google Sheets
(Click to enlarge)

I’ve been running this Sheet since December 2016, about 1 year after my website was created. In that period, my Alexa global ranking has dropped from 320,000 to 30,000, and my Alexa US ranking has dropped from 160,000 to 15,000.

Alexa Rank Tracker Import Formulas

The first step is to setup a small settings Sheet with the formulas to import the Alexa Rank tracking data.

Alexa Rank tracker settings Sheet

There are two columns: one for the global ranking figure and one for the US ranking figure.

Cells B2 and C2 are the same, containing the URL of the website in the Alexa Rank tracker: https://www.alexa.com/siteinfo/benlcollins.com

Import Formulas

In cell B3, enter this formula to import the global rank:

=VALUE(REGEXEXTRACT(JOIN("|",ARRAY_CONSTRAIN(IMPORTDATA(B2),30,1)),"global.(.+)\|us"))

In cell C3, enter this formula to import the US rank:

=VALUE(REGEXEXTRACT(JOIN("|",ARRAY_CONSTRAIN(IMPORTDATA(C2),30,1)),"us:.(.+)\|\}\|rating"))

These formulas work by importing the content of the Alexa site info for the given website, and them parsing it with a Google Sheets REGEX formula to extract the relevant numbers.

For more information on these formulas, and an alternative Alexa formula, have a look at this post: How to import social media statistics into Google Sheets: The Import Cookbook

Error Handling

On row 4, in cells B4 and C4 are two manually typed values for the ranking, which are just used as backup values in case the import formula fails (which has happened only a handful of times in the past few years).

Periodically, I’ll paste in the latest formula values as text on row 4, to keep the backup as current as possible.

On row 5, use the IFERROR function in Google Sheets to catch errors and use the backup values instead:

=IFERROR(B3,B4)

and

=IFERROR(C3,C4)

That’s it for the settings Sheet.

Archive Sheet

Add another blank Sheet to your Alexa Rank tracker Sheet, with 3 columns: date, global rank and US rank.

Call it alexa_rank.

Google Sheets blank archive

Apps Script Code To Save Alexa Rank Data

Open your script editor: Tools > Script editor

And add the following code:

function saveAlexaData() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName('alexa_rank');
  const settingsSheet = ss.getSheetByName('settings');
  
  // get the url, follower count and date from the first three cells
  const d = new Date();
  const global_count = settingsSheet.getRange(5,2).getValue();
  const us_count = settingsSheet.getRange(5,3).getValue();
  
  // append new ranking data to Sheet
  dataSheet.appendRow([d,global_count,us_count]);

  // format date string cell
  dataSheet.getRange(dataSheet.getLastRow(),1).setNumberFormat('MMM-YY');
}

Save and Run this script.

(You’ll be prompted to grant the script permission to access your Sheet files the first time you run it.)

It adds a row of data with the date and ranking data to your Sheet.

Run again if you want to see it add new data (but you’ll want to delete this row to avoid duplication).

Trigger To Run Code Automatically

Now let’s set it up to run on a daily basis.

Under the Triggers option in the left hand sidebar menu, create a new trigger.

Set it to time-driven and run it once a day.

The formulas reflect the value of the Alexa Rank at the current time. The script saves a copy of those ranking values at that point in time. Once the script has been running for a while, you’ll have an archive of historic data.

Alexa Rank tracker Google Sheet archive

Chart To Display Ranking Trend

The final step is to highlight your table of ranking data and Insert > Chart

Format it as you wish.

Voilà! You can now see your Alexa Rank over time.

Alexa Rank Tracker Chart in Google Sheets
(Click to enlarge)

Further Reading

Using Google Sheets as a basic web scraper

How to import social media statistics into Google Sheets: The Import Cookbook

How To Create A Grid Chart In Google Sheets

Earlier this year, The Washington Post told a story about the effects of Coronavirus on the US workforce, and illustrated the story with grid charts.

Grid charts can show you the breakdown of the whole into constituent parts, to allow at-a-glance understanding of the big picture.

In this post, I’ll show you how to create a Grid Chart in Google Sheets.

💡 This was tip #128 of my weekly Google Sheets newsletter. Join over 35k+ others and receive the Google Sheets Tips newsletter for exclusive tips, tricks and Google Sheets news.

Grid Chart

Here’s a fictitious grid chart example in Google Sheets, showing how students fared in an exam:

Grid Chart in Google Sheets

Changing the percentages in the cells above the chart will automatically adjust the chart colors to match.

How to create a grid chart in Google Sheets

1. Enter a % value in cell A1 e.g. 73%

2. Underneath, in cell A3, enter this SEQUENCE formula:

=SEQUENCE(10,10)

This outputs a 10 by 10 grid of ascending numbers from 1 to 100.

3. Next, adjust the column widths (and row heights) so that the cells are square.

4. Wrap the sequence function with an IF statement and ArrayFormula to check whether the value in a given cell is greater than the threshold percentage:

=ArrayFormula(IF(SEQUENCE(10,10)>A1*100,2,1))

Your output now will look like this:

Grid Chart in Google Sheets

5. Highlight the 10 by 10 grid and add two conditional formatting rules:

  • Green cell background if the value “Is equal to 1”
  • Grey cell background if the value “Is equal to 2”

Conditional Formatting in Google Sheets

6. With the 10 by 10 grid highlighted, add thick white borders to separate the grids. Turn off the gridlines for the Sheet too, for an even cleaner look.

7. Keeping the grid highlighted, change the number format to a custom number format with the emoji symbol: 👤

Format > Number > More formats > Custom number format, then paste in the emmoji: 👤

Custom Number Rule in Google Sheets

This changes all the values to 👤, regardless of whether it’s a 1 or a 2.

8. Finally, center-align the values horizontally and vertically:

Grid Chart in Google Sheets

Nice!

When you change the % value, the chart will adjust automatically for you.

3-Color Grid Chart

Grid Chart in Google Sheets

To create the 3-color chart shown above, add an additional percentage value and modify the formula to compare against both percentage figures using two IF statements, e.g.:

=ArrayFormula(IF(SEQUENCE(10,10)<=A1*100,1,IF(SEQUENCE(10,10)<=((A2+A1)*100),2,3)))

In the second conditional test, you’ll notice I need to add percentage 1 and 2 together, to get the cumulative value at that point in time.

You also need to add an extra conditional formatting rule for the cells that have the value 3.

Google Sheets Grid Chart Template

Click here to open the Google Sheets Grid Chart template.

This will open a view-only version of the template. Feel free to make your own copy: File > Make a copy

(If you’re unable to open this file it may be because it’s from an outside organization, and my G Suite domain is not whitelisted at your organization. You may be able to ask your G Suite administrator about this.

In the meantime, feel free to open in an incognito window to view it.)