Nov 24 2023 08:09 AM
Hello,
need some help here. Please have a look.
I need a formula that returns rows that contain values from multiple tables without blank rows. I attach the excel file here and explain below how should this work:
- each Sheet 1, Sheet 2 and Sheet 3 has one table that contains entries with start date & end date.
- SHEET10 will gather all the entries from Sheet 1, Sheet 2 and Sheet 3 without blank rows in between them.
- Each sheet contains calendar dates for 1 month only, for example:
Sheet 1 = will mark the begining of the year (January) from 1 jan. to 25 jan.
Sheet 2 = will contain dates from the next month (February) 25 jan. to 20 feb.
Sheet 2 = will contain dates from the next month (March) 20 feb. to 15 mar.
*** if it's easier for you, you can use in your solution a "help table" that gathers all the tables from Sheet 1, Sheet 2 and Sheet 3 in one single table >>> see SHEET10 , cell J1
Thanks in advance!
Alecsi
Nov 24 2023 11:24 AM - edited Nov 24 2023 11:25 AM
SolutionIt depends on each Excel platform you are. In any case it is better to transform ranges in sheets into structured tables.
Assuming
- you are on 365
- all tables have the same headers
- in not blank rows not necessary all cells are filled
- you use result as it is, i.e. no sorting, filtering
formula could be
=LET(
tables, VSTACK(Table1,Table2,Table3),
isEmpty, LAMBDA(v, NOT(AND(ISBLANK(v)))),
data, FILTER(tables, BYROW(tables, isEmpty ) ),
clean, SUBSTITUTE( data, "", "" ),
VSTACK( Table1[#Headers], clean )
)
Nov 24 2023 11:35 AM
Alternatively that could be Power Query solution which returns structured table
Query itself (build with UI only) is in attached file.
Nov 24 2023 01:16 PM
@SergeiBaklan
thank you for answering. I appreciate your time.
I forgot to mention one thing and now I'm struggling to implement your 365 formula.
I simplified the excel file and attached it below. TABLE1 gets its data from another table (REFERENCE TABLE), therefore the =FILTER formula sees the empty text as filled cell and does not ignore the blank rows. Is it possible to fix this?
It is a must that the =FILTER formula take the data from TABLE1, not from the REFERENCE TABLE
Regards,
Alecsi
Nov 24 2023 01:30 PM
I'm not sure what is your raw data source. If that's the range and you don't like to convert it into structured table , you may use it in formula like
=SUBSTITUTE( FILTER($K$12:$M$200, BYROW($K$12:$M$200, LAMBDA(v, NOT(AND(ISBLANK(v)))) ) ), "", "" )
With that no need in intermediate table.
Nov 24 2023 01:36 PM
Initial formula if use ranges will be like
=LET(
tables, VSTACK(Sheet1!$C$12:$E$25,Sheet2!$C$12:$E$27,Sheet3!$C$12:$E$28),
isEmpty, LAMBDA(v, NOT(AND(ISBLANK(v)))),
data, FILTER(tables, BYROW(tables, isEmpty ) ),
clean, SUBSTITUTE( data, "", "" ),
VSTACK( {"One","Two","Three"}, clean )
)
Nov 24 2023 03:35 PM
Nov 24 2023 09:03 PM
Seems too late alternative (on Book333):
=LET(
Tables, VSTACK(Table1,Table2,Table3),
Data, FILTER(Tables,
MMULT(--(Tables <> ""), SEQUENCE(COLUMNS(Tables)))
),
NoZero, SUBSTITUTE(Data, "",""),
TryNum, IFERROR(VALUE(NoZero), NoZero),
VSTACK(Table1[#Headers], TryNum)
)
Nov 25 2023 02:44 AM
You are welcome, glad to help
Nov 25 2023 03:19 AM
Nov 25 2023 07:41 AM
@alecsi You're welcome & Thanks for your words. Appreciated
Nov 24 2023 11:24 AM - edited Nov 24 2023 11:25 AM
SolutionIt depends on each Excel platform you are. In any case it is better to transform ranges in sheets into structured tables.
Assuming
- you are on 365
- all tables have the same headers
- in not blank rows not necessary all cells are filled
- you use result as it is, i.e. no sorting, filtering
formula could be
=LET(
tables, VSTACK(Table1,Table2,Table3),
isEmpty, LAMBDA(v, NOT(AND(ISBLANK(v)))),
data, FILTER(tables, BYROW(tables, isEmpty ) ),
clean, SUBSTITUTE( data, "", "" ),
VSTACK( Table1[#Headers], clean )
)