combine tables with FILTER

Google Sheets – Combine Data without Query | Different Worksheets

This post is written to accompany the YouTube video showing how to combine multiple tables of data in your Google Sheet without using the QUERY function.

Oftentimes, data that you want to analyze is spread across multiple sheets and multiple files. If you want to combine tables found on multiple worksheets and/or multiple worksheets, these four different techniques will help you join them together. Each technique results in different output. Choose the one that works best for you.

These methods are meant for data with like headers and data types.

Combine tables using UNIQUE
Four circumstances covered
  • Keep Original Order
    • Keep the order of the original data by stacking each list.
  • Sorted
    • Sort the resultant table by any column.
  • Duplicates removed
    • Remove any duplicate lines of data if you don’t want them in your sample.
  • No blank rows
    • Remove any blank rows from your new table.

Also, data from another file can be pulled into these formulas using the IMPORTRANGE function.

 Live examples in Sheets

Go to this spreadsheet for examples combining data.

Google Sheets – SUM or COUNT Values If Cells Have Notes


If you’re using Google Sheets and you have a list of amounts that you want to sum or count based on whether or not there are notes in the cells, there’s no built-in function to do it. However, there are a relatively easy set of steps to make your own functions to get it done. You’ll be able to COUNT based on cell notes and you’ll be able to SUM as well. Previously, we’ve made custom functions to COUNT or SUM by background color.

This video will walk you through the same steps described below.

Custom formulas in action

COUNT or SUM by note
Cells being counted and summed by notes

SUM if there are notes

If you look in the live spreadsheet, you will see the custom formulas being used for summing based on whether a cell has notes. This does not work for comments, only notes. The summing is done by a formula with the nice little name of SumIfNote which takes the inputs of your range, TRUE/FALSE for with/without notes, and a trigger to recalculate as explained in the associated video.

formula for SumIfNote
Formula used to sum if there are notes

COUNT if there are notes

CountIfNote returns a 3 (which you can see above) since there are three cells with notes.

CountIfNote Formula
Formula to count cells if they contain notes
Watch the video

Creating custom formulas

It is far easier to grab a copy of the linked sheet. How do we make these functions and any other custom function that you’re so inclined to write? First, go to Tools and you go to Script editor.. and to copy and paste code below.

* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
* @return {number}
* @customfunction

function SumIfNote(sumRange, note, refresh) {
  var ss=SpreadsheetApp.getActive();
  var aSheet= ss.getActiveSheet();
  var sRange = aSheet.getRange(sumRange);
  var values = sRange.getValues();
  var sumResult=0;
  var rangeRow = sRange.getRow();
  var rangeColumn = sRange.getColumn();
  for(i=rangeRow; i<rangeRow+sRange.getNumRows(); i++) {
    for(j=rangeColumn; j<rangeColumn+sRange.getNumColumns(); j++) {
      if((aSheet.getRange(i, j, 1, 1).getNote() != "") == note) {
        sumResult += values[i-rangeRow][j-rangeColumn];
  return sumResult;

function CountIfNote(sumRange, note, refresh) {
  var ss=SpreadsheetApp.getActive();
  var aSheet= ss.getActiveSheet();
  var sRange = aSheet.getRange(sumRange);
  var values = sRange.getValues();
  var countResult=0;
  var rangeRow = sRange.getRow();
  var rangeColumn = sRange.getColumn();
  for(i=rangeRow; i<rangeRow+sRange.getNumRows(); i++) {
    for(j=rangeColumn; j<rangeColumn+sRange.getNumColumns(); j++) {
      if((aSheet.getRange(i, j, 1, 1).getNote() != "") == note) {
        countResult += 1;
  return countResult;

Script editor

After you go to Tools then Script editor, you come up with a blank screen. But if you don’t, do a new script file. Paste the code into the blank window. Repeat for each code section above and name them countColoredCells and sumColoredCells. For each file, the script editor puts the “.gs” at the end of the file name, indicating that it is a Google Script. After making these two, save them, return to your spreadsheet, and type in the formulas. It should work for you. See the video and linked sheet for further clarification.

 Live examples in Sheets

Go to the linked sheet for examples of counting cells by notes that you can study and use anywhere you would like.

Google Sheets – Use Slicers to Filter a Pivot Table on the Fly

To sort your spreadsheet data in a powerful and organized way, we can add Pivot Tables to isolate specific data, then Slicers to further sort those tables. These filters can sort data in a different way than the built-in pivot table filters and provide additional options for your data sets.

For this example, we will keep the source sheet as is and display the filtered list. The starting data is a typical spreadsheet we will utilize in two pivot tables.


Original Data

Create your Pivot Table

To create the first Pivot Table, go to Data, then Pivot Table.

Using menu to get to Data then Pivot Table

We will use the source as the entire table, including headers. We will show the sales by item and an additional Pivot Table to sort by item and date. Use the OmniPivot add-on to use more than one Data range.

Selecting the source data

Select “Existing Sheet” and drop the table into G2 by clicking the box to the right, then selecting G2.

Choosing to use the existing sheet

We’ll sort this by the sales quantity by item description. Next to Rows in the Pivot Table Editor, click Add, and select Item Description.

Choosing item description for Columns

The Value will be “Quantity Sold.”  We want this to be summed, so we will leave this drop-down with the SUM value. This creates a simple table that sums the sales by item description.

Choosing qty as the value

Create Another Pivot Table

To create the second Pivot Table, once again select Data then Pivot Table. We’ll use this table as a source and put this in G13. We’ll leave space because pivot tables expand and contract depending on what you do with them.

Creating a second pivot table
Second pivot table

First, we’ll add a row for the dates using the same method above, then right-click and group the dates. Go to “Create Pivot Date Group” and click “Month” for this example. We’ll do quantity again as the Value to populate the total sales for the items. 

Create Pivot Date Group
Date Group

This means we’ll need to add items to this second Pivot Table, so we’ll drop in another row by clicking the Add button next to Row, and selecting Item Description.

adding item description row

These two different tables are showing the same data in different ways – one by item description and one by item description and date.

Filter – First Method

The first way to filter these Pivot Tables is to create normal filters that will act on both of these pivot tables as long as they are in the same sheet and working on the same data. Left-click on the Pivot Table, then go to the bottom of the editor to add a filter – let’s say to filter Item Description.

Pivot Table Filter Options

If you left-click on the status, you can either filter by condition or by values (which will be the same in the slicer). We’re going to take “garden hose” out.

Filter options

Filters are specific to one pivot table. You won’t see this being filtered unless you look at the options in the editor.  If we remove the filter, Garden Hoses will come back to the table. This means that no one will be able to see that this data is being filtered unless they look at the editor. This also only applies to one Pivot Table.

After the filter is applied

New Filter Option – Slicers

Instead of filters, we’re going to use Slicers and see how they operate differently. Go to Data then Slicer.

Data slicer

Now it’s asking for the data range. Click the original table, not the pivot table, for the data range. We’re going to slice the source data.

Select data range

Drag the slicer over to the right. Since we’ve already selected the range, it automatically populates in the Slicer options. We’re going to skip the column for now, and we’re going to make sure that the checkbox is selected so that it applies to Pivot Tables.

Clicking checkmark to apply to pivot tables

In addition, you can further customize the slicer by choosing different colors, fonts, etc. Let’s leave it the way it is.

Customization options

Let’s filter by item description. We can only do one column right now – if we need more, we’ll need to make additional Slicers.

Selecting Item Description for the column

The first thing we’re going to notice is that the Slicer is already here for everyone to see. There are the same options to filter by conditions and values when you click it. We’re going to do the same thing again and filter out Garden Hose. Start by clicking the Filter icon on the left.

Slicer filter

Add Another Slicer

The data still exists but is hidden. If we want to filter by date, we will have to add an additional Slicer. All the Slicers on one sheet have to work with the same ranges. Additionally, they are sheet specific, so they will only filter the data on the original sheet.

The changes we have been making will only work in our user profile with our sheet, so if you want these settings to apply to additional users, you need to edit the slicer and pick “Set Current Filters as Default” – that way they will see the same filters that you have.

Slicer filter

Let’s continue filtering by date. We’re going to select date once again, and “Filter by Condition.” We only want it if it’s after August 1st, 2019. This table only has July values on it.

Filter by condition

Choosing a date range

Before I click “okay” we can see that this table has July values in it. When we update it, it will only have august.

Two filters

Now the sheet has both Slicer filters applied.

4 Ways to Find the Top or Bottom Values Using Google Sheets

In this example, we will be looking at four different methods for sorting a table of data in Google Sheets. All of the examples are from this Google Sheet. We will review simple sorting, filter creation, utilizing the SMALL and LARGE functions, and using the SORTN function. These techniques can also be found in this this video on the Prolific Oaktree YouTube channel.

Sorting Data

The first technique is simply to sort the data in a sheet utilizing the menu options, then deleting what information we don’t want. This is a very rudimentary and simple method, but it unfortunately ends with us losing data (that we might need later).

First, begin by selecting the data that you want to sort, then go to “Data” in the top menu, and navigate to “Sort Range.” We specifically want to sort row C.

Sort range options

Click the “Data has a header row” box, and click the dropdown menu to “Run Time.”

Has header row

Now that the data is sorted, you can manipulate it as you see fit, including deleting or moving the data you do not need. This technique, however, puts the data out of order and makes you lose the rest of the data.

sorted table

Creating Filters

The second method of manipulating data is to select the data again, go to the Data menu again, and this time, instead of choosing sort, we will create a filter.

create a filter menu option

Filters can sort but have much more functionality. For this example, we will sort by Throw Distance to get the top three throwers. Click the dropdown at the right side of the header.

filter dropdown button

This dropdown organizes the data for you. You can sort it in various ways.

filter dropdown button

Hit Clear and then choose the longest three by scrolling down to the end and putting checkmarks on the last three values.

filter values

You can use functions in this menu for additional sorting capabilities. For this example, we will simply use the final three pieces of data. Since there are ties, the sorter decides to show all of these entries as well. The final sorted list is still in its original order.


The advantage of using Filters is that the data still exists and is still able to be interacted with. This means you won’t have to worry about missing data.

The LARGE and SMALL functions

The following two methods are much more powerful ways to manipulate and view your data that draw from the data without directly affecting it. We have created another area of the sheet where we can manipulate the data separately from the original list itself. Here, we will go over the LARGE and SMALL functions within Google Sheets.

What the LARGE function does is return the largest number in a chosen dataset. In this picture, we can see “$D$3:$D$21” which tells the function to look at the data collected from D3 through D21.

range of LARGE function

From here, we tell the function how to rank the data it finds. We can simply type in “1” or any other number depending on our needs, but in this case, we will refer to “H3,” which is the cell that contains our ‘Rank 1’.

LARGE function

We did this as a cell reference to H3 so I could drag the LARGE function down to do 2, 3, and 4.

Using ‘$’ on the range function in the formula tells the function, “Don’t shift this range down when I drag this formula down.” It’s a fixed reference for a range.

Rank 2 has the same formula, but by dragging it down, it is now looking for the second-largest value, and so on.

selecting the range

The SMALL function is simply the opposite of the LARGE function, and in the example here, it is picking the fastest run time and sorts to the slowest run time.

SMALL function

These functions don’t interact with any other row but also don’t affect the dataset itself.

SORTN Function

Native to Google Sheets and not found in Excel, the SORTN function is a powerful function that you can utilize to maximally sort to your desired preferences.


Start by highlighting all the data in your Sheet. This function will auto-populate all the fields, but you only have to type it once. Every variable is broken up with commas.

Highlighting range for SORTN

The function asks of these options: how many do you want me to return? We’ll put six. In the upper left corner of the screen, we can manually input 6 with another comma.

Data returned from SORTN

After 6, it asks what we would like to do with ties. For now, let’s choose 0.

SORTN tie value

The next variable is the column we are going to look at. This number is the number of columns from the left where the data resides. If we want to sort by throw distance, for example, it is the third column from the left, so we will enter 3.

Column value of SORTN

Then we will select FALSE for “how to sort”. Then we hit Enter.

SORTN how to sort values

We have now picked up the longest six throw distances and it picked up names and jersey numbers, while leaving all the original data. Additionally, any changes to the original data will get automatically populated in the new function’s list.

Result of SORTN

Every situation is different, but now you have four options to consider. Let’s hope you can find the one that’s best for you!

 Live examples in Sheets

Go to this spreadsheet for examples of methods to find the top or bottom values that you can study and use anywhere you would like.

Collect Data into Google Sheets | Forms, Quizzes, Surveys

By effectively utilizing Google Forms, you can sort, manipulate, and track a detailed database of information gathered from a number of sources. This tutorial will show you how to create a Google Form, how to send it to as many people as you would like, and how to manipulate the data afterward in Google Sheets. This tutorial is also in a video on YouTube.

Creating the Form

Begin by opening the main dashboard of Google Drive, and by clicking the “new” button and selecting “Form.” You can also right-click the dashboard, navigate the cursor to “More,” and create a new form.

create a new form

The form menu will appear, and you can begin filling in the questions you would like to be answered. Add a title to your form, then fill in the questions below.

Give your form a title

For our example, we will be taking the names, emails, and other information from the recipient.

Question Types

The first type of question will be Short answer – the first field, ‘First Name’, has a selection box to the right. This allows the report creator to decide how the recipient will answer the question. You may choose between various options, but most reports utilize common question types like short answer or multiple choice.

Short answer question type

The ‘First Name’ field will be left as a short answer, but we will also make it a required field. Making a field required will place a red asterisk next to the question for the recipient, and they will not be able to submit the form without answering this question. This option is toggled on the bottom right of the question box. We will do the same process with the next two fields, ‘Last Name’ and ‘Email Address.’

Name fields

To ensure the recipients enter valid dates, we will choose the “Date” option in the question type selection box. This ensures that the data we receive from the form recipients will be uniform and in a valid format. The specific date format (whether month/day/year, day/month/year, or other variation) can be modified as well.

date field question type

We will use the multiple-choice option for questions with a specific answer out of a list. This will create the “What time should we contact you?” field, allowing recipients to answer with three options. The number of choices can be added with the “Add Option” button or subtracted with the “X” button on the right side.

Multiple choice question type

Additionally, multiple-choice questions can have multiple answers. The “Do you own a car?” field will use a check-mark multiple-choice option, which allows users to select as many options as are applicable.

Check mark

Sending the Form

With a paid G Suite account, you have the option of clicking a box at the top of the “Send Form” window to automatically collect email addresses within your organization. Otherwise, there are multiple ways to send the form to recipients.

If you contact me here or email me at, you will receive a code for 20% off of your first year of G-Suite. If you sign up for G Suite using this link and apply the code during checkout, the discount will be applied.

Option to collect email addresses

You can email a notice to your list about the form. This notifies the users about the form itself, and you can also choose to include the form itself inside the email so that recipients can immediately fill it out upon receiving the notice.

Include the form in the email

Google Forms can also produce a link you can send via various forms. This gives your users a clickable option that doesn’t use their email (for sending through text messages, for instance).

Send form as link

Lastly, you can embed the form as HTML directly into your website. This option keeps the form on your webpage so your users don’t have to leave.

embed the form in html

Analyzing the Data

To analyze the responses received, return to the form’s main page and click the “Responses” tab next to the “Questions” tab. This allows you to graph the data received from the form.

See responses to form

The database, which holds all the raw data you have received, is visible on the upper right side of this menu.

Option to review responses in Sheets

Now that you have the data in Google Sheets, you can manually sort and analyze everything at a glance!

View entries in Sheets