プロが教える店舗&オフィスのセキュリティ対策術

今仕事で作りながら質問しています。

日報みたいなものを作っており、
1、2、3…31という感じで、31個のシートに名前をつけ、
別シートから日付によってそのシートの内容を引っ張るような表を作りたいのですが、
シートの選択をどのようにすればいいのか迷っています。

='1'!A1
の'1'の部分が日付により'2'になったり'3'になったり
することはできないのでしょうか?

できれば、関数で処理したいのですが、
VBAでも構いません。

すみませんが、よろしくお願い致します。

A 回答 (2件)

関数でそのシートをアクチブにすることはできません。

そもそもエクセルの関数は、値を計算や加工したり、引っ張ってくるだけで、シートをセレクトしたり、削除したり行、列の削除、セルの色、書体、罫線などの「左右」することはできません。メニューをクリックしてできることのほとんどのことは関数ではできないです。
ただ選んだシートの特定のセルを取ってくることなら
できます。
日付と「SheetXX」のXXの部分が対応しているとして
たとえばSheet3のB1に
=INDIRECT("Sheet"&A1&"!A1")
といれA1セルに「2」と入れるとSheet2のA1セルの値を持ってこれます。
Sheet1の複数セル範囲を持ってきたいとSheet3はそのセル範囲は関数式だらけになって、他の式が入れられません。だから使い物になるのは限られた場合でしょう。
VBAなら指定したシートを選択するのは簡単です。
Sheet3のChangeイベントプロシジュア

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("Sheet" & Target).Select
End If
End Sub
これでSheet3のA1に4を入れると
Sheet4が選択できます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
INDIRECTなんですね。
VBAまで教えて頂きまして、感謝です。

早く仕事を終わらせることができそうです(*^_^*)

お礼日時:2005/06/05 13:29

こんにちは。



たとえば A2セルに 2005/6/3 と日付が入っていれば、
3 という名前のシートの A1セルを参照する、ということでしょうか?

YESなら↓でどうでしょうか?
---------------------------
=INDIRECT(DAY(A2)&"!A1")
---------------------------
    • good
    • 0
この回答へのお礼

日付関数を入れればいけますね!
ありがとうございました。

お礼日時:2005/06/05 13:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!