- 締切済み
シートの順番による参照
エクセルに「Monday」から「Sunday」まで7枚のシートがあったとして、別シートのA1に「1」とあれば、1枚目の「Monday」のシートのB1の数字を、「5」とあれば5枚目の「Friday」のB1の数字を参照するようにB1に数式を入れたいのですが、それを可能にする数式はあるでしょうか? VBAの場合はシート名に関わらずSheet(x)でx枚目のシートを参照するようにできますが、同様の事を数式でできるのでしょうか? 別のシートにMondayからSundayまでのリストを作っておいてIndex関数でシート名を呼び出してIndirect関数を使う方法もあるのでしょうが、別リスト等を使わないで完結する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
何でも質問すれば答えがある(でる)ってもんじゃない。 VBAのようにIndexの考えが関数にはないのだから、できないのもやむをえない。 関数では、INDIRECTを使っても、あくまで配列の中での相対化であって、ワークシートの位置の概念で捕らえられるようにしてない。 Sub test01() MsgBox ActiveSheet.Index MsgBox Worksheets("東京").Index End Sub などの逆は関数ではできない。 もともと少し前までは表計算ソフトのSheetの数は1枚だったのですから。 もともと関数は、複写ということを除いて、具体的=絶対的なもので Indirectのようなのはプログラム的思考で相対化して使えるという異色の 使い方です。
- mu2011
- ベストアンサー率38% (1910/4994)
以下の方法で如何でしょうか。 =INDIRECT(LOOKUP(別シート!A1,{1;2~;7},{"Mon";"Tue";~;"Sun"})&"!B1")
お礼
なるほど、配列を式に取り込んでしまうわけですか。 この場合、シートを増やしたり減らしたり、もしくはシート名を変えた場合は、その都度この数式の中の配列をメンテしなければなりませんよね。 結構頻繁に変わるので、もう少し楽な方法があればうれしいのですが…。
- mshr1962
- ベストアンサー率39% (7417/18945)
曜日(英語形式)限定なら =INDIRECT(TEXT(DATE(2001,1,シート名!A1),"dddd")&"!B1")
お礼
早速のご教授、ありがとうございます。 ただ、曜日にしたのはただの例でして、実際には固有名詞が入ります。 なので、純粋に「左からx番目のシート」というような参照の仕方をしたいのです。
お礼
お答え、ありがとうございます。 「そういう関数はない」というのがそのお返事ですね。 本当にそういうことなのであれば、それで充分です。 Excelは奥が深いので、自分の知らないもの、本を読んでも出てないようなものが色々とあると思っていました。 例えば、「配列関数」などは私は存在すら想像がつかなかった関数ですし、まだまだ私の知らない世界があると思っています。 なので、どなたかその答えがわかる方がいればと思っていました。 「解なし」というのが本当の答えであるなら、私は納得します。 どうもありがとうございました。