Home > other >  How to automatically change reference based on variable in excel
How to automatically change reference based on variable in excel

Time:06-29

So I'm trying to create a Forecast using historic data from 2 years. Each year's data is broken down into weeks and weeks that haven't occurred yet are set to 0. I'm struggling trying to create a formula that will automatically run a Forecast on only the weeks in the year that have occurred. I created this formula which Excel won't execute:

=UNIQUE(FILTER(WkSht!G:(VLOOKUP(F1,DH2:DI54,2)),(WkSht!A:A)=(B1)))

I'm trying to use VLOOKUP to replace the second part of a cell reference based off a lookup table. So if F1 is 25, for example, then the Filter function will be:

=UNIQUE(FILTER(WkSht!G:AE,(WkSht!A:A)=(B1))

That second formula works on its own as intended, but I'm trying to create this excel file so that it requires minimal work to update in the future and manually changing the range seems like a bit too much work to expect other people to do.

So I guess my question is: How do I change part of the reference automatically? Maybe I could do:

=UNIQUE(FILTER(VLOOKUP(F1,DH2:DI54,2)),(WkSht!A:A)=(B1)))

And have to lookup values contain the reference text? Alternatively, is there a way to filter out the last of the 0's in the FORECAST.ETS function (as some values might intentionally be 0s in earlier weeks)?

CodePudding user response:

To get a variable width range, you can use the construct

SomeRange:INDEX(MaxRange,,NumberOfColumns)

In your case SomeRange would be

WkSht!G:G

MaxRange would be something like

WkSht!G:Z

where you replace Z with a column that comfortably covers all your (future) data

NumberOfColumns is your VLookup (You probably want an exact match?, If so include the 4th parameter =0)

Demo:

=UNIQUE(FILTER(WkSht!G:G:INDEX(WkSht!G:Z,,VLOOKUP(F1,DH2:DI54,2,0)),WkSht!A:A=B1))

enter image description here

Sample data on sheet WkSht

enter image description here

  • Related