Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
I need to replace a value in a set of columns (in this case null value with 0), but I cannot hard-code the columns. Instead, I need to determine the columns dynamically: only columns with a specific name pattern (e.g. starting with "Invoiced_") shall be considered.
I tried to pass the list of columns to the ReplaceValue function, but somehow my code doesn't work.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
FilteredList = List.Select(Table.ColumnNames(Table1), each Text.StartsWith( _ , "Invoiced_")),
#"Replaced Value" = Table.ReplaceValue(Table1,null,0,Replacer.ReplaceValue, FilteredList)
in
#"Replaced Value"
I get this error:
Expression.Error: A cyclic reference was encountered during evaluation.
What did I do wrong? Or how can I solve this problem?
Thanks
Solved! Go to Solution.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
FilteredList = List.Buffer(List.Select(Table.ColumnNames(Source), each Text.StartsWith( _ , "Invoiced_"))),
#"Replaced Value" = Table.ReplaceValue(Source,null,0,Replacer.ReplaceValue, FilteredList)
in
#"Replaced Value"
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
FilteredList = List.Buffer(List.Select(Table.ColumnNames(Source), each Text.StartsWith( _ , "Invoiced_"))),
#"Replaced Value" = Table.ReplaceValue(Source,null,0,Replacer.ReplaceValue, FilteredList)
in
#"Replaced Value"
Wow, this worked. Thank you so much!
If I'm reading this right, the trick was to create a new List instance, right?
guess your code error came from the reference of Table1,
i just changed it to Source
Use this
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
FilteredList = List.Select(Table.ColumnNames(Table1), each Text.StartsWith( _ , "Invoiced_")),
#"Replaced Value" = Table.FromRecords(
Table.TransformRows(Source, (r) => List.Accumulate(FilteredList, r, (s,c)=>
Record.TransformFields(s,{{c, each if _ = null then 0 else _}})))
, Value.Type(Source)))
in
#"Replaced Value"
Unfortunately, I get the same error. It occurs already in the second line.
Maybe I should have mentioned that I am using PowerQuery within Excel, not Power BI (if that matters).
Besides, the last closing parenthesis in your code is too much.
Is it possible to post an Excel file having 2-3 rows of dummy data to Onedrive / Google drive and share the link here?
PQ in Excel or Power BI behave the same so that won't make a difference.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
15 | |
11 | |
8 | |
8 | |
7 |
User | Count |
---|---|
15 | |
13 | |
9 | |
7 | |
6 |