Combine all unique values within a group | Excel Power Query 04

Let’s assume that we are in the future and we sell space­ships. We want to find out what class of a space­ship each coun­try has bought bas­ing on our table of unique space­ship classes. 

Com­bine all unique val­ues with­in group | Excel Pow­er Query 04

With Pow­er Query, this task is very sim­ple. We have to select our main table, then go to the Data tab and choose the From Table/Range com­mand in order to export our data from Excel to Pow­er Query (Fig. 1).


Fig. 1 Exporting data to Power Query
Fig. 1 Export­ing data to Pow­er Query

Since we are inter­est­ed which coun­try has bought which space­ship, we want to group our data by the coun­try. We have to select the Coun­try col­umn and go to the Home tab (1) and choose the Group By com­mand (2). In the win­dow, we need to choose the Advanced option (3) because we want to add more aggre­ga­tion. I want to count how many ships each coun­try has bought as well as know the space­ship class names. Since there isn’t any prop­er oper­a­tion, let’s choose the Sum option (4), which we will mod­i­fy lat­er in the code. In the col­umn bar, we’re choos­ing the Ship class (5). As a final step, let’s write a new name, which is going to be ‘Unique ship class­es’ (6) (Fig. 2)

Data grouping
Fig. 2 Data grouping 

In the new table, there are some errors in the last col­umn, because we want­ed to sum up text, which is impos­si­ble. It means that we need to mod­i­fy our code. We need to go to the View (1) tab and tick the For­mu­la bar check­box (2). We can see that the for­mu­la uses the List.Sum func­tion (3) (Fig. 3)

Formula bar
Fig. 3 For­mu­la bar

What we want to do is com­bine all val­ues, so let’s change the List.Sum into the Text.Combine func­tion (1). We also need to add a sep­a­ra­tor, which will be a com­ma and a space (2) (Fig. 4)

Code modification
Fig. 4 Code modification

Now, we can see that Pow­er Query has changed its cal­cu­la­tions. All ship class­es are com­bined. How­ev­er, as I said before, we need only unique val­ues with­out repeats. We just need to add one func­tion, which is the List.Distinct func­tion. (Fig. 5)

List.Distinct function
Fig. 5 List.Distinct function

Now, we can see there are no repeats. We can go to the Home tab (1) and to the Close & Load com­mand (2) and the Close & Load to option (3) (Fig. 6)

Going back to Excel
Fig. 6 Going back to Excel

In Excel, we have to remem­ber to select the Table (1) and Exist­ing work­sheet (2) radio but­tons. Then choose a tar­get cell (Fig. 7)

Data importing
Fig. 7 Data importing

As we can see, we have count­ed how many ships each coun­try has bought as well as the prod­uct class (Fig. 8)

 The final table
Fig. 8 The final table

https://www.youtube.com/watch?v=A0fWOeDUXNA

List of file names from a folder | Excel Power Query 05

Today, we want to find all file names from a folder.

List of file names from a fold­er | Excel Pow­er Query 05

Let’s see our fold­er. We have dif­fer­ent kinds of files and even a sub­fold­er. There is also an emp­ty fold­er called Emp­ty, which must stay emp­ty. Our task is to find all files con­nect­ed to Excel, which means that we will need to do some fil­ter­ing (Fig. 1)

Folder content
Fig. 1 Fold­er content

We know the path, so we can copy it, then go to Excel, and then use Pow­er Query, which is the sim­plest solu­tion I know. We need to go the Data tab (1), then to the Get Data com­mand (2), then to the From File (3) and From Folder (4) options (Fig. 2)

From Folder option
Fig. 2 From Fold­er option

In the new win­dow, we can find our fold­er, for exam­ple, by the nav­i­ga­tion bar, where we can paste the whole path and press Open (Fig. 3) 

Navigation bar
Fig. 3 Nav­i­ga­tion bar

We can see that Pow­er Query has pre­pared a whole batch of infor­ma­tion from the giv­en fold­er, as well as from the Sub­fold­er for us. We don’t see the Emp­ty fold­er, because there aren’t any files. In our sit­u­a­tion, it’s fine for us. Then, we need to click on the Trans­form Data but­ton (Fig. 4)

 Information prepared by Power Query
Fig. 4 Infor­ma­tion pre­pared by Pow­er Query

The Trans­form Data option gives us the chance to add some fil­ter­ing to get the data we are inter­est­ed in. In the win­dow that appeared, we can see that we can fil­ter the infor­ma­tion by the Fold­er Path (1). If we are inter­est­ed only in the main fold­er, we can check only the main fold­er (2) (Fig. 5)

Filtering by the Folder Path
Fig. 5 Fil­ter­ing by the Fold­er Path

How­ev­er, we want all fold­ers, togeth­er with the Sub­fold­er, so let’s close this fil­ter­ing and go to the Exten­sion fil­ter­ing. Since we are inter­est­ed in Excel files, we are look­ing for the ones with an .xls exten­sion. Remem­ber that Pow­er Query is case sen­si­tive, so if we have some sus­pi­cions that there may be some upper case let­ters, we have to trans­form our Exten­sion col­umn. We need to go to the Trans­form tab, then to the for­mat com­mand and the low­er­case option (Fig. 6)

Lowercase option
Fig. 6 Low­er­case option

Now, we can fil­ter this col­umn by Text Fil­ters and the Begins with option (Fig. 7)

Begins with option
Fig. 7 Begins with option

We want the text to begin with .xls, which should get all exten­sions con­nect­ed with Excel (Fig. 8)

.xls extension
Fig. 8 .xls extension

We can see that we have our cho­sen exten­sions as well as the file names also with exten­sions. This is the infor­ma­tion that we need­ed, so let’s right click on the Name bar, and select the Remove Oth­er Columns option (Fig. 9)

Remove Other Column option
Fig. 9 Remove Oth­er Col­umn option

We are left only with one col­umn, where we have file names with exten­sions. Some­times, we don’t need any exten­sions. In those cas­es, we can add one more step to Pow­er Query. We have to select the col­umn, then go to the Trans­form tab, then to the Extract com­mand and the Text Before Delim­iter option (Fig. 10)

Text Before Delimiter option
Fig. 10 Text Before Delim­iter option

Our delim­iter is just a dot, so let’s write it (Fig. 11)

Delimiter
Fig. 11 Delimiter 

Now, we have only file names with­out exten­sions. How­ev­er, let’s say that I still want those exten­sions. In such a case I need to delete this step (Fig. 12)

Deleting the last filtering
Fig. 12 Delet­ing the last filtering

Now, I go to the Home tab, click on the Close & Load com­mand, then the Close & Load to option (Fig. 13)

Going back to Excel
Fig. 13 Going back to Excel

Let’s choose the tar­get cell and select the Table radio but­ton (Fig. 14)

Data importing
Fig. 14 Data importing

Here’s the final result (Fig. 15)

 Final table
Fig. 15 Final table

https://www.youtube.com/watch?v=Dey4PzGj46A

Advanced Filters and between condition

Today, we want to learn how advanced fil­ters work in Excel, espe­cial­ly between conditions. 

Advanced Fil­ters and between condition

Let’s start. When we have our dataset, we write our advanced fil­ter con­di­tions in cells. We need to have a head­er and a con­di­tion for this head­er. If we write con­di­tions in one row, all of them are con­nect­ed with the final cri­te­ria. It means that each con­di­tion should be met in order to take out the whole row from our dataset (1). When we add con­di­tions to fur­ther rows, it meas that it’s an ‘or’ con­di­tion (2). In this case, we will look for straw­ber­ries or plums. If we want to cre­ate a between con­di­tion, we need to write the head­er two times (3) in order to cre­ate a com­mon part. In our case, we are look­ing for straw­ber­ries that are equal or greater than 500 and small­er or equal to 750, and in the case of plums we want the plums that are equal or greater than 300 and small­er or equal to 500. We have to remem­ber that those con­di­tions should make a com­mon part (Fig. 1)

Dataset with two headers
Fig. 1 Dataset with two headers

When we want to go to advanced fil­ters, we need to select one cell in our dataset (1), then go to the Data tab (2), then Advanced fil­ters (3). In the Advanced fil­ter win­dow press the Copy to anoth­er loca­tion radio but­ton (4), and select the cri­te­ria range (5). The last step is select­ing the tar­get cell, which will be cell E6 (6) (Fig. 2)

 Creating a table
Fig. 2 Cre­at­ing a table

Remem­ber that if con­di­tions are writ­ten in one row, they are com­bined as an ‘and’ con­di­tion, and when they are in sep­a­rate rows, they are com­bined as an ‘or’ con­di­tion. More­over, we can add an emp­ty con­di­tion for dif­fer­ent head­ers. But, since there isn’t any con­di­tion in the Date col­umn, we can select the range with­out it. In fig­ure 3, we can see the final table with sales of plums that are between 300 and 500 and sales of straw­ber­ries that are between 500 and 750, togeth­er with all pos­si­ble dates for those con­di­tions (Fig. 3)

 Final table
Fig. 3 Final table

https://www.youtube.com/watch?v=PihjS8Bq-vI&t

Advanced Filters and wildcards

Today, we want to learn how wild­cards work with advanced filters. 

Advanced Fil­ters and wildcards

First of all, we have to remem­ber that an aster­isk replaces any text string, even an emp­ty one. A ques­tion mark replaces any sin­gle char­ac­ter. A tilde dis­ables a wildcard. 

Let’s start with find­ing ‘Red’ in the Prod­uct col­umn. To do that, we have to select one cell in our data, then go to the Data tab (1) and click on the Advanced fil­ter com­mand (2). In the Advanced fil­ter win­dow, we have to select the Copy to anoth­er loca­tion radio but­ton (3), then write the Cri­te­ria range (4). In the Copy to bar, we select our tar­get cell (5).

Advanced filter window
Fig. 1 Advanced fil­ter window

After press­ing OK, we have our results. In advanced fil­ters, we don’t have a sim­ple con­di­tion with text. This con­di­tion is not an equal con­di­tion, but a ‘starts with’ con­di­tion. In our tar­get col­umn, we have the ‘red’ word, how­ev­er, advanced fil­ters chose whole cells that start with ‘red’. If we want only the exact word, we have to write it with a sin­gle quote, then equals, then our word. Let’s write it. We should make anoth­er advanced fil­ter, so let’s make the same steps as in the pre­vi­ous exam­ple, start­ing with the Data tab and chang­ing the Cri­te­ria range to anoth­er col­umn (1) (Fig. 2)

Advanced filters with an exact word
Fig. 2 Advanced fil­ters with an exact word

In the tar­get cell, we can see only one cell with Drag­on­Fly, even though there are three cells with Drag­on­Fly in our data. 

Now, let’s try the aster­isk option. We write an aster­isk before ‘bee­tle’, but we have to remem­ber that it is always con­nect­ed with the ‘starts with’ option. We are work­ing with wild­cards as well as with the ‘starts with’ cri­te­ria. It works as if an aster­isk was also at the end of ‘bee­tle’. Let’s make a prop­er advanced fil­ter for this case star­ing with the Data tab and chang­ing the Cri­te­ria range into anoth­er col­umn (1) (Fig. 3)

 Advanced filters with an asterisk
Fig. 3 Advanced fil­ters with an asterisk

As we can see, ‘bee­tle’ can be at the end, at the begin­ning or even in the mid­dle of our cell.

Now, let’s work with ques­tion marks. We need to remem­ber that one ques­tion mark rep­re­sents only one sign. It can be a dig­it, a let­ter or any oth­er sign. For exam­ple ‘Ant ? — ? mm’ can­not rep­re­sent ‘Ant 6 — 10 mm’, because there are too many signs in 10. Let’s make an advanced fil­ter for that. We start with the Data tab, and we change the Cri­te­ria range (1) and the tar­get cell (2) (Fig. 4)

Advanced filters with an asterisk
Fig. 4 Advanced fil­ters with an asterisk

We can see that we found two cells where a ques­tion mark rep­re­sent­ed only one sign. 

Now, let’s move on to a tilde. We want to find the exact phrase of ‘*Ant’. That’s why we put a tilde at the begin­ning. If we put only an aster­isk and an Ant, like this ‘*Ant’, Excel would find any Ant, regard­less of its posi­tion. The tilde makes the aster­isk stop being a wild­card. We do the same as in pre­vi­ous cas­es, chang­ing only the Cri­te­ria range and the tar­get cell (Fig. 5)

 Advanced filters with a tilde
Fig. 5 Advanced fil­ters with a tilde

We can see that Excel found only one Ant with an aster­isk at the begin­ning. It’s because we turned off wildcards. 

https://www.youtube.com/watch?v=oRH3-S9v-8Q

SORT by months using functions

Today, we want to learn about sort­ing by months with the SORT function. 

SORT by months using functions

Let’s start with writ­ing the SORT func­tion, with an array as the first argu­ment. In the sec­ond argu­ment we need to write 2, as we want to sort by months, which are locat­ed in the sec­ond col­umn. Now, we can close the func­tion (Fig. 1). 

=SORT(A2:C145,2)

SORT function
Fig. 1 SORT function

Just like that the SORT func­tion sort­ed data by the Month col­umn. It’s impor­tant that the SORT func­tion does­n’t con­sid­er the cus­tom list. Excel does it, but the SORT func­tion does­n’t. Now. let’s have a look at how we can prop­er­ly sort by months using the SORT func­tion. First of all, we can­not use the SORT func­tion, but the SORTBY func­tion. In this func­tion, even if we change the sec­ond argu­ment to a month col­umn, we still get an ascend­ing sort­ing, from A to Z. It means that the sort­ing is based on the alpha­bet, not on months of the year. The thing is we can­not do the sort­ing based on argu­ments. We need to use the MATCH func­tion. It will look up a giv­en month in a list of months. In the third argu­ment we write 0, as we want to have the exact match (Fig. 2)

=MATCH(B2,$J$2:$J$13,0)

 MATCH function
Fig. 2 MATCH function

The MATCH func­tion starts the sort­ing from the top on the Month col­umn. As we can see in col­umn D, we have a prop­er num­ber for each month. The col­umn acts as a helper col­umn, how­ev­er, some­times we don’t want any helper col­umn, so we can cre­ate a helper col­umn in our for­mu­la. We can match each month from the Month col­umn (col­umn B) using the MATCH func­tion, where we need to write the lookup val­ue in the first argu­ment, which is our data col­umn. In the sec­ond argu­ment, we need to write the whole list of months on the right, then let’s write 0 as the exact match (Fig. 3)

SORTBY(A2:C145,MATCH(B2:B145,J2:J13,0))

SORTBY function
Fig. 3 SORTBY function

It works. We see that the SORTBY func­tion found a prop­er num­bers for each month. It’s impor­tant that it sorts by months, not by years. How­ev­er, we can add the year as well. But, I want to show you some­thing else. First of all, if we don’t like the cus­tom helper col­umn list, we can just click F9 in the lookup array argu­ment to hard code the array list in our for­mu­la (Fig. 4)

=SORTBY(A2,C145,MATCH(B2:B145,{“January”;“February”;“March”;“April”;“May”;“June”;“July”;“August”;“September”;“October”;“November”;“December”},0))

Hard coding month names
Fig. 4 Hard cod­ing month names

We can even delete the cus­tom col­umn. As we can see, it works prop­er­ly. When we look at col­umn D, we can see #N/A error. It’s because the MATCH func­tion is try­ing to find months in the cus­tom col­umn cells which are emp­ty (Fig. 5)

=MATCH(B2,$J$2:$J$13,0)

Empty cells in the Month column
Fig. 5 Emp­ty cells in the Month column 

Now, let’s focus on dates based on years and months. Some­times, our date in a dataset isn’t writ­ten only in one col­umn, but it can be sep­a­rat­ed into the year, month and day columns. We can cre­ate a full date from the data we have. We will try it in the Helper col­umn. First of all, we write =, then 1 com­bined with a month, com­bined with a year (Fig. 6)

=1&B2&A2

Creating a date
Fig. 6 Cre­at­ing a date

And just like that, we com­bined the 1st of Jan­u­ary 2022. Our date, how­ev­er, is text. We want Excel to under­stand it as a date, so we just need to add paren­the­ses and a 0 (Fig. 7)

=(1&B2&A2)+0

Changing text into numbers
Fig. 7 Chang­ing text into numbers

Excel mag­ic has just hap­pened! It changed text into num­bers. Now, to change the num­bers into dates, we need to go to the Home tab (1), then change the for­mat­ting (2) into Short Date (3) (Fig. 8)

Numbers into a date
Fig. 8 Num­bers into a date

Since we have dates based on the year and the month columns, we can sort them. Let’s write the SORTBY func­tion. In the first argu­ment we write the data col­umn, and in the sec­ond col­umn we have to com­bine 1 with the Month col­umn, then with the Year col­umn. When we close the paren­the­ses we need to add 0 to change text val­ues into num­bers (Fig. 9)

=SORTBY(A2:C145,(1&B2:B145&A2:A145)+0)

SORTBY function
Fig. 9 SORTBY function

Now, we have only six Jan­u­ar­ies at the begin­ning, because we have have only six Jan­u­ar­ies in 2022. Next six Jan­u­ar­ies are in 2023. This way we sort­ed our data by months and years using a helper column.