Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.

Reply
jeongkim
Post Prodigy
Post Prodigy

FInd header row dynamically in Query

Hi,

 

jeongkim_0-1751465444154.png

 

my data has header in row 13 but not sure future change such to row 14 or 12. 

So any way making KPI ID row always header whereever they placed? 

If I use remove top rows then it cannot cover dynamic changes. 

2 ACCEPTED SOLUTIONS
mh2587
Super User
Super User

Try this one might help you
HeaderRowIndex = List.PositionOf(
Table.Column(Sheet, "Column1"),
"KPI ID"
)


Did I answer your question? If so, please mark my post as a solution!


Proud to be a Super User!




LinkedIn Icon
Muhammad Hasnain



View solution in original post

bhanu_gautam
Super User
Super User

@jeongkim 
Add a custom column to identify the row containing "KPI ID".
Filter the table to find the row number of the header.
Use that row number to set the headers dynamically.

 

Try using below M code

m
let
Source = Excel.CurrentWorkbook(){[Name="YourTableName"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "IsHeader", each if Text.Contains([Column1], "KPI ID") then "Header" else null),
#"Added Index" = Table.AddIndexColumn(#"Added Custom", "Index", 0, 1, Int64.Type),
#"Filtered Rows" = Table.SelectRows(#"Added Index", each ([IsHeader] = "Header")),
HeaderRowIndex = Table.FirstValue(#"Filtered Rows")[Index],
#"Removed Custom" = Table.RemoveColumns(#"Added Index",{"IsHeader", "Index"}),
#"Promoted Headers" = Table.PromoteHeaders(Table.Skip(#"Removed Custom", HeaderRowIndex), [PromoteAllScalars=true])
in
#"Promoted Headers"




Did I answer your question? Mark my post as a solution! And Kudos are appreciated

Proud to be a Super User!




LinkedIn






View solution in original post

5 REPLIES 5
bhanu_gautam
Super User
Super User

@jeongkim 
Add a custom column to identify the row containing "KPI ID".
Filter the table to find the row number of the header.
Use that row number to set the headers dynamically.

 

Try using below M code

m
let
Source = Excel.CurrentWorkbook(){[Name="YourTableName"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "IsHeader", each if Text.Contains([Column1], "KPI ID") then "Header" else null),
#"Added Index" = Table.AddIndexColumn(#"Added Custom", "Index", 0, 1, Int64.Type),
#"Filtered Rows" = Table.SelectRows(#"Added Index", each ([IsHeader] = "Header")),
HeaderRowIndex = Table.FirstValue(#"Filtered Rows")[Index],
#"Removed Custom" = Table.RemoveColumns(#"Added Index",{"IsHeader", "Index"}),
#"Promoted Headers" = Table.PromoteHeaders(Table.Skip(#"Removed Custom", HeaderRowIndex), [PromoteAllScalars=true])
in
#"Promoted Headers"




Did I answer your question? Mark my post as a solution! And Kudos are appreciated

Proud to be a Super User!




LinkedIn






mh2587
Super User
Super User

Try this one might help you
HeaderRowIndex = List.PositionOf(
Table.Column(Sheet, "Column1"),
"KPI ID"
)


Did I answer your question? If so, please mark my post as a solution!


Proud to be a Super User!




LinkedIn Icon
Muhammad Hasnain



I think it is working thanks


Custom1 = List.PositionOf(
Table.Column(#"Removed Columns", "Custom^Column1"),
"KPI ID"
),
#"Removed Top Rows" = Table.Skip(#"Removed Columns", Custom1),
#"Promoted Headers1" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),

I've got this result which saying correct location of header row. 

what is the next pls? 

 

jeongkim_0-1751469725527.png

 

Greg_Deckler
Community Champion
Community Champion

@jeongkim If you are confident that at least one of the column headers will never change, you could identify the header row by looking for that column header name to dynamically identify the header row. If you post that sample data as text it will be easier for folks to create a solution for you.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.