Forum Discussion
Anonymous
6 years agoNot applicable
Split Rows based on Days
Hello Community, I want to split rows based on days.Please see below Row Data and Final Data for sample. If Days =<364 Days then not split just keep as it is but if Days>364 then split every row by...
- 6 years ago
Hi,
This M code works
let Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Begin", type date}, {"End", type date}, {"Days", Int64.Type}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Remainder", each Number.Mod([Days],364)), #"Added Custom1" = Table.AddColumn(#"Added Custom", "Integer", each Number.IntegerDivide([Days],364)), #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Rows to be created", each if [Integer]=0 then 1 else if [Remainder]=0 then [Integer] else [Integer]+1), #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom", each {Number.From(1)..Number.From([Rows to be created])}), #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom3", "Custom"), #"Added Custom4" = Table.AddColumn(#"Expanded Custom", "Number of days", each if [Days]<=364 then [Days] else if [Custom]*364<=[Days] then 364 else [Remainder]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom4",{"Days", "Remainder", "Integer", "Rows to be created", "Custom"}) in #"Removed Columns"Hope this helps.
parry2k
6 years agoSuper User
Anonymous seems like there is mistake in calculation, if you look at A, 1094 days divided by 3 times x 364 make it is 1092 and I believe there should be fourth row with 2 days, isn't it?
Anonymous
6 years agoNot applicable
Hi Perry,
Thank you so much for your comments.
As per the requirements it should go by 364 Days +364 Days+366 Days and require only 3 rows (36 Months).
Thanks