- ベストアンサー
タブをまたぐエクセルの計算式
不慣れにつき、分かりにくい文章になるかもしれませんが、よろしくお願いします。 エクセルの下の方にあるタブを7つ(7ページ)出して、月曜~日曜とします。 各ページのA1欄へ日付をつけます。 ここで質問です。 月曜のA1欄へ日付を入力したら、自動的に火曜~日曜のページのA1欄も日付が変わるようにするにはどのようにすればよいでしょうか? 自分でやったのは、以下の方法。 1.各ページA1欄を「日付」に設定 2.火曜A1欄で「シフト」→「=」→「月曜A1欄をクリック」→「+1」 これだと月曜のA1欄を変えても他のページは自動的に変わりませんでした。 ご回答をよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo.4様の仰る通り、手抜きをせずに1シートごとに異なる関数を入力するのが正道ですので、なるべるならANo.4様の方法で行われる事をお勧めします。 只、シートの枚数が多過ぎて、関数を入力する際に入力ミスの恐れが高くなる場合には、次の様な方法もあります。 まず、適当な使用していないシート(ここでは仮に、「補助」という名称のシートとします)に、 A列 B列 1行目 シート名 加算日数 2行目 月曜 0 3行目 火曜 1 4行目 水曜 2 5行目 木曜 3 6行目 金曜 4 7行目 土曜 5 8行目 日曜 6 という具合に、各シート名と加算する日数の対応表を作成しておきます。(月曜の分は必ずしも必要ではありません) 次に、胃の様な操作を行って下さい。 火曜シートのタブをクリック ↓ Shiftキーを押しっ放しにしながら、日曜シートのタブをクリック ↓ A1セルをクリック ↓ そのまま次の関数を入力 =IF(AND(ISNUMBER(1/DAY(月曜!$A$1)),COUNTIF(補助!$A:$A,"="&REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),))),月曜!$A$1-VLOOKUP(REPLACE(CELL("filename",H1),1,FIND("]",CELL("filename",H1)),),補助!$A:$B,2,FALSE),"") ↓ 月曜シートのタブをクリック ↓ 月曜シートのA1セルに日付を入力 以上です。
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
手抜きせずに,次の通りに間違えずに操作すれば出来ます。 1.各ページA1欄を「日付」に設定 2.火曜A1欄で「シフト」→「=」→「月曜A1欄をクリック」→「+1」,Enter 3.水曜A1欄で「シフト」→「=」→「火曜A1欄をクリック」→「+1」,Enter 4.木曜A1欄で「シフト」→「=」→「水曜A1欄をクリック」→「+1」,Enter 5.金曜A1欄で「シフト」→「=」→「木曜A1欄をクリック」→「+1」,Enter 6.土曜A1欄で「シフト」→「=」→「金曜A1欄をクリック」→「+1」,Enter 7.日曜A1欄で「シフト」→「=」→「土曜A1欄をクリック」→「+1」,Enter たかだかあと5回の操作の手間を省いて楽したいご相談がとても多く寄せられますが,基本的にエクセルではそういう操作はできません。 各シートには違う式を入れなきゃならないので,それぞれ操作が必要だって事です。 マクロとか使って同じ手間をマクロに肩代わりさせてつるつるっとやってしまう手もありますが,今のご相談ではそういう状況ではないと思います。 #参考:マクロを使うとこんな事ができます ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける public function leftsheet(byval a as excel.range) on error resume next leftsheet = a.parent.previous.range(a.address) end function ファイルメニューから終了してエクセルに戻る 火曜日のA1セルに =leftsheet(A1)+1 と記入し,他のシートのA1にもコピー貼り付ける または火曜から日曜のシートを「作業グループ」にしてA1に式を一斉に記入する この手順では,どのシートにも「同じ式」を記入しているので,一斉に出来ます。
お礼
ありがとうございました。 解決しました。
- imogasi
- ベストアンサー率27% (4737/17069)
多分月曜日のシートの日付を入れたら、火曜日シートは月曜日の日付+1して(エクセルでは日付シリアル値という正整数なのは知っているようだ)した日付を入れたいということだね。 しかし、シートをまたいだ同位置のセルで「式の複写」的なことは出来ない。 従ってVBA以外で質問のようなことは難しいと思う。 各シートのA1セルに、0、1,2,3,4、6、6と、あらかじめ入れておいて、 Sheet2からSheet7を作業グループにして Sheet2のA2で=Sheet1!$A$2+A1 と入れると 各シートではA2には日付が入る。 こういう風に上記式のA1に当たるような変数が必要。 これはテンプレート的に使えばSheet1のA2を変えるだけで来週も使えるかも知れない。 無理無理に式の複写に持ちこんだようなやり方で、やや面倒で余り感心しない。 A1セルに当たるセルは、ここでは目障りなので、どこか目立たないセルにする、とかはありえる。 ーーー VBAなら Sub test01() For i = 2 To 7 Sheets(i).Range("a2") = Sheets(i - 1).Range("a2") + 1 Next i End Sub ・Sheet1のA2に月曜日の日付を入れておくこと ・シートタブの順は月ー火ー・・ー日の順になっていること。
お礼
ありがとうございました。 解決しました。
- shinkami
- ベストアンサー率43% (179/411)
勘違いかも知れませんが 1.各ページA1欄を「日付」に設定 2.shiftを押下したまま 火曜日タグ→水曜日タグ→木曜日タグ→金曜日タグ→土曜日タグ→日曜日タグ 3.火曜A1欄で「シフト」→「=」→「月曜A1欄をクリック」→「+1」
お礼
ありがとうございました。 解決しました。
- ocean-ban
- ベストアンサー率30% (122/394)
ツール→オプションで計算方法が「自動」ではなく「手動」になっていませんか。
お礼
ありがとうございました。 解決しました。
お礼
ありがとうございました。 解決しました。