• ベストアンサー

Excelのシート同士間で同じ行番号へ移動するには

現在、N年分の日記を、Excelのひとつのbookに集約して日記を作っています。 見やすさを考慮して、一枚のSheetにN年分を集約してみたのですが、大量のセル数になり、逆に目的の月日を探すのが難しくなりました。 そこで、ひとつのbook内で、sheet1、2、3、4… のようにN枚のSheetを使い、Sheet1には平成14年、Sheet2には平成15年…と割り当て、ひとつのSheetの365行を使って1年分の日記を書き込みます。 日記を書き込む時のルールとして、N枚のSheetすべてに対して、同じ行番号に同じ月日を設定します。 一例として、どのSheet(年)をめくっても10行目は毎年1月10日に、200行目は毎年10月17日にします。 これは、その年のsheetをめくれば、同じその日に何があったかを瞬時(縦のスクロールをしなくても)に解るようにしたい、というのが大きな目的です。 そのように、Sheet同士間で同じ月日(行番号)へ飛ばせるようにするには、どのような設定をすればよろしいでしょうか。 回りくどい質問ですみませんが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

質問に対する回答ではありませんが、 現在のシート(一枚のシートにN年分)の方が良いと思います。 それぞれのシートで日付で行をあわせるときにはうるう年に手作業が発生するでしょう。 現在のシートで  A    B 作業列  日付     2008/9/1 ・・・とあれば A列に =TEXT(B2,"mm/dd") といれて日付と一緒に下までコピィしておけば 月と日がでますので、オートフィルターで絞り込めば 同月同日の一覧表になります。 作業列は 年、月、日と準備しておけば自由な組み合わせが出来ると思います。 別案として、別のシートに日付の月と日を入れると 毎年の一覧表が表示される関数を組み込む方法もあると思います。 シートは分けないほうが、よっぽど楽なはずです。

bonzin
質問者

お礼

皆さんから、ご親切にご指導を頂き、ありがとうございました。 色んなアドバイスを頂戴しましたが、いずれも私の手にはおえない難しい技術が必要な内容でした。私のレベルの低さをまたしても痛感しました。 皆さんからのアドバイスで日記に触れているうちに、次の方法(蛇足ですが)で、用が足りそうなことに気づきました。 当日の日記を記入する際、すべてのSheetを開いて、同じ月日の行を画面に出します。日記を記入した後に、当然ファイルを上書きして終わります。翌日、開いて記入する時には、前日に保存した時の状態で、N年同日(近辺)の日記が見ることができます。 私の目的から行くと、殆どそれで用が足りるはずです。 本当は、ご指導頂いた方法でスマートにやりたいのですが、前述の理由もありまして、そんな方法でしばらく走ってみたいと思います。 随分ご面倒をお掛けしてしまい、すみませんでした。 またご指導をよろしくお願いします。

bonzin
質問者

補足

早速ありがとうございます。 「月と日がでますので、オートフィルターで絞り込めば 同月同日の一覧表になります。」とありますが、それがやれれば申し分ありません。しかし、このレベルですと、私の頭では対応できそうもありません。 よろしくお願いします。

その他の回答 (4)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

ワークシートのイベントを利用したマクロで処理すれば可能です。 以下の(1)を対象とする各シートのコード欄に記入し、(2)を標準モジュールに記入。 シートを移動した際に、前のシートの表示位置(左上)と拡大(ズーム)の状態を、次のシートに引き継ぎます。 (複数のブックを立ち上げて操作した場合については、検証してません。) (1) Private Sub Worksheet_Activate()  SetDisp End Sub (2) Sub SetDisp() Static s As Worksheet Dim sn As Worksheet, r As Long, c As Long, z As Variant If (s Is Nothing) Or (s Is ActiveSheet) Then  Set s = ActiveSheet  Exit Sub Else  Set sn = ActiveSheet  Application.ScreenUpdating = False  Application.EnableEvents = False  s.Activate  r = ActiveWindow.ScrollRow  c = ActiveWindow.ScrollColumn  z = ActiveWindow.Zoom  sn.Activate  Application.EnableEvents = True  Application.ScreenUpdating = True    If r < 1 Then r = 1  If c < 1 Then c = 1  If z < 20 Then z = 100  Set s = sn  ActiveWindow.Zoom = z  ActiveWindow.ScrollRow = r  ActiveWindow.ScrollColumn = c End If End Sub

bonzin
質問者

お礼

皆さんから、ご親切にご指導を頂き、ありがとうございました。 色んなアドバイスを頂戴しましたが、いずれも私の手にはおえない難しい技術が必要な内容でした。私のレベルの低さをまたしても痛感しました。 皆さんからのアドバイスで日記に触れているうちに、次の方法(蛇足ですが)で、用が足りそうなことに気づきました。 当日の日記を記入する際、すべてのSheetを開いて、同じ月日の行を画面に出します。日記を記入した後に、当然ファイルを上書きして終わります。翌日、開いて記入する時には、前日に保存した時の状態で、N年同日(近辺)の日記が見ることができます。 私の目的から行くと、殆どそれで用が足りるはずです。 本当は、ご指導頂いた方法でスマートにやりたいのですが、前述の理由もありまして、そんな方法でしばらく走ってみたいと思います。 随分ご面倒をお掛けしてしまい、すみませんでした。 またご指導をよろしくお願いします。

  • jellya_a
  • ベストアンサー率35% (12/34)
回答No.4

前年のみさかのぼれるのでいいのであれば ツールバー[挿入]→ハイパーリンクの挿入 この「ドキュメント内」を選択して、 飛ばす先のセル番号、シート名を選択すれば 可能ですが… ただ、シートがかなり重たくなるので あまりお勧めできませんが…

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/hyper.htm
bonzin
質問者

お礼

皆さんから、ご親切にご指導を頂き、ありがとうございました。 色んなアドバイスを頂戴しましたが、いずれも私の手にはおえない難しい技術が必要な内容でした。私のレベルの低さをまたしても痛感しました。 皆さんからのアドバイスで日記に触れているうちに、次の方法(蛇足ですが)で、用が足りそうなことに気づきました。 当日の日記を記入する際、すべてのSheetを開いて、同じ月日の行を画面に出します。日記を記入した後に、当然ファイルを上書きして終わります。翌日、開いて記入する時には、前日に保存した時の状態で、N年同日(近辺)の日記が見ることができます。 私の目的から行くと、殆どそれで用が足りるはずです。 本当は、ご指導頂いた方法でスマートにやりたいのですが、前述の理由もありまして、そんな方法でしばらく走ってみたいと思います。 随分ご面倒をお掛けしてしまい、すみませんでした。 またご指導をよろしくお願いします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

1アクション必要ですが、こんなのはどうでしょう。 ます、各シート上1行をウィンドウ枠の固定で固定し、下にスクロールしても必ず表示されるようにしておき、その一行目にコマンドボタンを配置、そのボタンがクリックされたら、以下のマクロをコールするようにします。 Sub Sample()  Dim sSheetname As String  Dim nRow, i As Long  nRow = ActiveWindow.VisibleRange.Row '固定分を除く表示最上行を取得  sSheetname = ActiveWindow.ActiveSheet.Name '現在のシート名  Application.ScreenUpdating = False '画面の更新一時停止  For i = 1 To ThisWorkbook.Sheets.Count 'シートぶんループ   Sheets(i).Select 'シートを選択   Application.Goto Reference:="R" & nRow & "C1", Scroll:=True '表示最上行を指定  Next i  Sheets(sSheetname).Select '元のシートに戻る  Application.ScreenUpdating = True '画面の更新一時停止解除 End Sub 念のため、ボタン側のマクロも…… Private Sub CommandButton1_Click()  Call Sample End Sub これで、シート移動前にボタンを押すと、全てのシートの表示行が同じになります。

bonzin
質問者

お礼

皆さんから、ご親切にご指導を頂き、ありがとうございました。 色んなアドバイスを頂戴しましたが、いずれも私の手にはおえない難しい技術が必要な内容でした。私のレベルの低さをまたしても痛感しました。 皆さんからのアドバイスで日記に触れているうちに、次の方法(蛇足ですが)で、用が足りそうなことに気づきました。 当日の日記を記入する際、すべてのSheetを開いて、同じ月日の行を画面に出します。日記を記入した後に、当然ファイルを上書きして終わります。翌日、開いて記入する時には、前日に保存した時の状態で、N年同日(近辺)の日記が見ることができます。 私の目的から行くと、殆どそれで用が足りるはずです。 本当は、ご指導頂いた方法でスマートにやりたいのですが、前述の理由もありまして、そんな方法でしばらく走ってみたいと思います。 随分ご面倒をお掛けしてしまい、すみませんでした。 またご指導をよろしくお願いします。

bonzin
質問者

補足

早速ありがとうございます。 大変詳細に書いて頂いたのですが、このレベルですと、私の頭ではとても対応できそうもありません。 よろしくお願いします。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

1つのシートに       平成14年  平成15年  平成16年 1月1日 1月2日 1月3日 : : というように作るのはNGですか?

bonzin
質問者

お礼

皆さんから、ご親切にご指導を頂き、ありがとうございました。 色んなアドバイスを頂戴しましたが、いずれも私の手にはおえない難しい技術が必要な内容でした。私のレベルの低さをまたしても痛感しました。 皆さんからのアドバイスで日記に触れているうちに、次の方法(蛇足ですが)で、用が足りそうなことに気づきました。 当日の日記を記入する際、すべてのSheetを開いて、同じ月日の行を画面に出します。日記を記入した後に、当然ファイルを上書きして終わります。翌日、開いて記入する時には、前日に保存した時の状態で、N年同日(近辺)の日記が見ることができます。 私の目的から行くと、殆どそれで用が足りるはずです。 本当は、ご指導頂いた方法でスマートにやりたいのですが、前述の理由もありまして、そんな方法でしばらく走ってみたいと思います。 随分ご面倒をお掛けしてしまい、すみませんでした。 またご指導をよろしくお願いします。

bonzin
質問者

補足

早速ありがとうございます。 最初はそれでやってみました。書いておきましたように、探すのが大変なものですから、分離してみた訳です。 しかし、No.1さんもおっしゃっているように、その方が発展性があれば、元へ戻したいと考えています。 よろしくお願いします。

関連するQ&A