Feb 14, 2022 02:32 PM
I teach a class where students have to share information in a daily form. They get credit for the number of days they submit a form, not for the total number of forms submitted. The form feeds a Daily Submissions table, which is linked to a Students table.
Because I didn’t see something equivalent to Sheets/Excel COUNTUNIQUE
in Airtable, I created a Pivot Table app in the Daily Submissions to calculate Days Shared.
I’m trying to figure out whether I can pull the number of Days Shared from the Pivot Table app back into a field corresponding to that student in a table of students, so I can share a view of table that includes Days Shared.
If that’s not possible, is there a way to count the unique days in a table without a pivot table? There is a Lookup field in the Students table that collects all the days, including duplicates, but I don’t know how to dedupe that.
Or do I need to do create an interface that displays the Pivot Table app data?
Thanks for your help!
Solved! Go to Solution.
Feb 15, 2022 02:42 PM
So instead of a lookup, you’ll want to use a rollup field with ARRAYUNIQUE(values)
. This will dedupe the list. By default, the array will be joined with (what looks like ) ,
, but we want something unique for the next step, so we’ll use ARRAYJOIN
with an emoji, such as 🧾
. This gives the final formula of:
ARRAYJOIN(ARRAYUNIQUE(values),"🧾")
Once we have that field set up, we’re going to use a formula field and two Excel tricks.
Excel trick #1: To count the number of items in a list, count the commas (instead of the items), and then add one (to account for the first item that doesn’t have a comma before it). In this case, we’re going to be using the emoji as a separator instead of a comma. There are other methods, but this works within the limitations of arrays and formulas in Airtable.
Excel trick #2: To count the instances of a character within a single string, substitute that character with nothing and comparing the length of the new string against the original.
Here’s what that looks like:
IF(
{Unique Quiz Dates},
1 +
LEN({Unique Quiz Dates})
- LEN(
SUBSTITUTE({Unique Quiz Dates}, "🧾", "")
),
0
)
Here’s a base demonstrating the rollup and formula fields:
Feb 15, 2022 02:42 PM
So instead of a lookup, you’ll want to use a rollup field with ARRAYUNIQUE(values)
. This will dedupe the list. By default, the array will be joined with (what looks like ) ,
, but we want something unique for the next step, so we’ll use ARRAYJOIN
with an emoji, such as 🧾
. This gives the final formula of:
ARRAYJOIN(ARRAYUNIQUE(values),"🧾")
Once we have that field set up, we’re going to use a formula field and two Excel tricks.
Excel trick #1: To count the number of items in a list, count the commas (instead of the items), and then add one (to account for the first item that doesn’t have a comma before it). In this case, we’re going to be using the emoji as a separator instead of a comma. There are other methods, but this works within the limitations of arrays and formulas in Airtable.
Excel trick #2: To count the instances of a character within a single string, substitute that character with nothing and comparing the length of the new string against the original.
Here’s what that looks like:
IF(
{Unique Quiz Dates},
1 +
LEN({Unique Quiz Dates})
- LEN(
SUBSTITUTE({Unique Quiz Dates}, "🧾", "")
),
0
)
Here’s a base demonstrating the rollup and formula fields:
Feb 16, 2022 07:37 PM
Wow @Andy_Lin1 thank you so much for your help and the example base, that did it! And I love the Excel counting tricks.
I’ve still got some timezone debugging to do, but thrilled to have your help in solving this.