質問にある算式を書き換えてみます。
質問の式:=LOOKUP(A10,OFFSET(B1,MATCH(A9,A2:A4),0,1,3),B1:D1)
(1)始発駅、終着駅が増えても変更の必要のない算式-1
=LOOKUP(A10,OFFSET(B1,MATCH(A9,A:A,0)-1,0,1,255),B1:IV1)
このようになりますが、入力するセルがA9、A10なので、始発駅をA8までしか増やせません。
(2)始発駅、終着駅が増えても変更の必要のない算式-2
料金表と入力位置を変えてみます。
料金表はB列から作成。始発駅の入力=A2、料金=A3とします。A4で計算します。
=LOOKUP(A3,OFFSET(C1,MATCH(A2,B:B,0)-1,0,1,254),C1:IV1)
終着駅は254駅入力できます。始発駅は日本中の駅全て?(何駅あるんでしょう)
MATCHは列自体を指定できることを利用し、LOOKUPの列指定は最右端のIV列まで指定しています。
ある意味、調べる範囲を特定していないことになります。
料金表の下、右側には料金表以外の要素が入力されていないとしています。
(3)始発駅、終着駅が増えても変更の必要のない算式-3(検索する範囲を決める方法)
始発駅、終着駅数が増減してもいいように検索する範囲に範囲名を付けます。前提は(2)を使います。
(2)とは違い、MATCHとLOOKUPで対象にする範囲を明確に決めています。
挿入→名前→定義で
範囲名:始発駅 の参照範囲に =OFFSET($B$2,0,0,MATCH("",$B:$B,-1)-1,1)
入力後、Sheet1!$B$2 のようになるかもしれませんが、かまいません。
範囲名:終着駅 の参照範囲に =OFFSET($C$1,0,0,1,MATCH("",$1:$1,-1)-2)
とします。これは、MATCHを使って入力された最終セルを探して、OFFSETで範囲指定しています。
A4セルに
=LOOKUP(A3,OFFSET(C1,MATCH(A2,始発駅,0),0,1,COUNTA(終着駅)),終着駅)
MATCH(A2,始発駅,0)
で入力した始発駅がある行を探します。
OFFSET(C1,MATCH(A2,始発駅,0),0,1,COUNTA(終着駅))
で入力した始発駅の料金表を指定
LOOKUP(A3,・・・,終着駅)
で入力した料金で買える最大の料金を求め、それに対応する終着駅を求めます。
(2)がいちばん簡単ですが、(3)は算式の意味をつかまえやすいかもしれません。
ご参考に。
お礼
ワー!!すごいです!ありがとうございます! この3つの方法をそれぞれ試してみましたが、どれも完璧です。 本当にありがとうございました。 また、機会がありましたらよろしくお願いします。