Forum Discussion

mzrkwcz's avatar
mzrkwcz
Helper I
9 years ago
Solved

Generating a list of months problem

I need to generate a list of dates having:

- [start_date]

- [number_of_months]

 

I tested that this works fine:

List.Transform({0..[number_of_months]-1}, each Date.AddMonths(DateFrom("2017-05-05"), _))

And this works fine:

Date.AddMonths([invoices_start],_)

However this does not work:

List.Transform({0..[number_of_months]-1}, each Date.AddMonths([invoices_start],_))

I get the message:

Expression.Error: We cannot apply field access to the type Number.

 

What's the problem??? It's driving me crazy.

  • Out of my head (so not tested), I'm pretty sure this should work:

     

    List.Transform({0..[number_of_months]-1}, (x) => Date.AddMonths([invoices_start],x))

     

    By using (x) => instead of each, you can refer to the list item (i.e. the number) within the Date.AddMonths function.

3 Replies

  • MarcelBeug's avatar
    MarcelBeug
    Community Champion

    Out of my head (so not tested), I'm pretty sure this should work:

     

    List.Transform({0..[number_of_months]-1}, (x) => Date.AddMonths([invoices_start],x))

     

    By using (x) => instead of each, you can refer to the list item (i.e. the number) within the Date.AddMonths function.

    • mzrkwcz's avatar
      mzrkwcz
      Helper I

      It works! Thanks!

       

      I have not seen (x) => f(x) in Power Query M Reference on MSDN, but probably I did not dig deep enough :-/

       

      I still do not understand why solution with "each" works when I am increasing a constant date and does not work with the use of another field to deliver the date to be incremented.

  • prathy's avatar
    prathy
    Advocate III

    Hi,

     

    Can you try casting _ as number
    something like this - List.Transform({1, 2}, each Date.AddMonths(Date.From("10/02/2017"), _ as number))

     

    P