On fly. I'd have in Incomes table a column, where you indicate from which date this entry for this income article is valid (the entry is valid from this date to next entry for same income article (by date), or to current time when there is no more entries for this article. And probably a column, where all table rows are numbered (a formula like =ROW()-X). So every income article can have many rows in Incomes table.
In calendary, you have to use SUMIFS instead of INDEX to get searched values, or to get the row number of income article entry in Incomes table, and then use it in INDEX function.
|