Forum Discussion
Changing the value in a list
- 5 years ago
Hello Paul_W_W
as List.PositionOf is not working, because if yuo have double entries, it won't work. So the only way is to use List.Positions and List.Zip to add a position number to every entry and then use List.Tranform to change your required entry. Here a function that does that for you. This function takes a list, firstlevel, second level and a new entry. Check it out and give feedback
//fxChangeEntry2LevelList (List as list, Level1 as number, Level2 as number, NewEntry as any)=> let Source = List, TransformFirstLevel = List.Positions(Source), TransformSecondLevel = List.Transform(List.Buffer(Source),each List.Zip({_, List.Positions(_)})), Zip = List.Zip({TransformSecondLevel,TransformFirstLevel}), Transform = List.Transform ( Zip, (listlevel1)=> if listlevel1{1}= Level1 then List.Transform ( listlevel1{0}, (listlevel2)=> if listlevel2{1}= Level2 then NewEntry else listlevel2{0} ) else List.Transform ( listlevel1{0}, each _{0} ) ) in TransformCopy paste this code to the advanced editor in a new blank query. Give the function a name and try to apply ti
If this post helps or solves your problem, please mark it as solution (to help other users find useful content and to acknowledge the work of users that helped you)
Kudoes are nice too
Have fun
Jimmy
Hi, Paul_W_W
As what is suggested by Anonymous , I created data to reproduce your scenario. The pbix file is attached in the end.
Raw data:
You may add a new step as below to replace the value of fourth index for the second list.
= List.Transform(
Source,
each if
List.PositionOf(Source,_)=1
then List.ReplaceRange(
_,
4,1,{99}
)
else _
)
Result:
Best Regard
Allan
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.