アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回予定表について質問したものです。
B2に日にちがあり、=TODAY()と、今日の日付を表示しています。それ以降の日付は=B2+1等としています。
日にちにより項目の予定があれば「1」としているのですが、次の日になると左に日付が移るわけで、「1」が置いてけぼりになってしまうわけです。(当然ですが・・・)
いつも最新の日にちが先頭にあり、予定もそれに伴って左に寄ってくれるような表づくりのアイデアを教えてください。
特にこの表組にこだわりませんが、日付による予定が一目で分かり、「今日」の日付が常に左にくるような表、できないでしょうか?

「よいアイデアをアドバイスください」の質問画像

質問者からの補足コメント

  • ありがとうございます。
    1を立てるのは手入力でやり、その日にその仕事がある、ということの備忘としています。
    日にちを入れていくとなると、ほかの媒体から二日にちを拾い、入力しなくてはいけない事情があり、今回の場合は現実的ではなくなってしまいます・・・できれば日にちが2行目のように表示されていて、という仕様がいいと思っています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/02/15 21:08

A 回答 (8件)

こんにちは



ANo6様の案に似ていますが、「入力用の表」だけで済ませてしまおうというアイデアです。

まず、
>=TODAY()と、今日の日付を表示しています。それ以降の日付は=B2+1等としています。
については、お気づきのように諸問題の原因なので、これはやめましょう。

準備として、2行目(全体)の表示形式を日付にしておきます(年月日でも月日でも好きな形式で良いです)。
B2に(例えば)2016/02/15と入力して、B2を選択してフィルハンドルを右に動かせば翌日、翌々日・・となるはず。
(うまくいかない場合は、2つのセルを選択するか又はctrキーを押しながらでできるはず)
曜日はC3に =MID("日月火水木金土", WEEKDAY(B2),1) と式を入れて、やはり右にフィルコピーです。
未入力の日を新しく追加したい場合は、日付、曜日の2セルを選択して右へフィルコピーすれば追加できますね。
日曜、土曜などを色で表示したい場合は、3行目(全体に)条件付き書式で設定しましょう。
(本題でないので説明は省略しますが、意味不明の場合は検索してみてください。)
ここまでで、何か月でも対応可能な表の準備ができました。

さて、ご質問の内容は「この表を2列目に今日が表示されるようになさりたい」ということだと思いますが、いくつかの方法が考えられます。
以下に何種類か記しますが、いずれも簡単なマクロにしてブックのオープン時に自動実行することも可能です。
でも、多分、手動でも問題ないと想像しますので、手動の方法として記しておきます。
◆方法1
昨日までのデータは必要ないのであれば、新しく開いた時にB列(昨日の列)を削除する。
(1日1回操作が必要)

◆方法2
表示上で過去の分は非表示にする。(列を選択して右クリック→非表示)
(1日1回操作が必要。古いデータは再表示すれば見られます。)
(たくさんデータが溜まったら、古い部分を消去するか、別のブックに移すなど)

◆方法3(多分、これが宜しいのではと思います)
B1セルを選択した状態で、表示→ウィンドウ枠の固定でA列の表示を固定
(左右にスクロールしても常にA列が表示されている状態になります)
古いデータもそのままスクロールで見ることができます。
(たくさんデータが溜まったら、古い部分を消去するか、別のブックに移すなど)


※ 横に長い表になるので、『「今日」がどこか一目でわかるようにしたい』という要求がでてくるかも知れませんね。
 これも、上で触れた「条件付き書式」で可能です。
 例えば、日付(2行目全体を選択)で、ホーム→条件付き書式→セルの強調表示ルール→日付で、今日に当たる日付に対して書式を設定しておくと、今日の部分がその書式で表示されます。(背景色の指定や文字表示をboldにするとか)

※ 上でも述べましたが、これらの方法はマクロにして自動化することも可能ですが、多分、手動でも良いのではないかと想像しました。
    • good
    • 0

入力する表で全部表現しようとするから混乱するだけで 一覧表に直接入力


するのを止めればいいだけだと思います。

入力する表に見やすさなんていらないんですから データベースに入力する
ようにして そこからリンクさせて一覧表を作ればいいかと思います。
    • good
    • 0

マクロを使わないのであれば、入力用の表と、表示・確認用の表を別々にして、


普段は「表示・確認用の表」を使う…かな。自分なら。

「表示・確認用の表」から
OFFSET関数や、
MATCH関数とINDEX関数の組み合わせ、
INDIRECT関数、
などを使って「入力用の表」を参照する。
・・・
ちなみに自分ならINDEX関数とMATCH関数の組み合わせで指定する。

=INDEX(B2:AF2,1,MATCH(TODAY(),$B$2:$AF$2))
これを「表示・確認用の表」の一番左の日付のところに書いて、必要な範囲にコピーする。
その後、オプションで「0値を表示しない」にするか、
関数を記入したセルをセルの書式設定のユーザー書式で「0;-0;;@」にして、「0」が表示されないようにする。

これなら「入力用の表」は年間スケジュールを見渡すことができる。
※別のシートに作成すること薦める。その際は「入力用の表」のシートを参照するように書き直す必要がある。
    • good
    • 0

> いつも最新の日にちが先頭にあり、予定もそれに伴って左に寄ってくれるような表づくりのアイデアを教えてください。



移動したいセルを選択して、[Ctrl+-]のショートカットキーを押すと、「削除」ダイアログボックスが表示されますので、「左方向にシフト」の代わりに、[Enter]キーを押すと選択したセルだけ左にシフトします。
(最上段の「左方向にシフト」が選択されていますので・・・)
    • good
    • 0

こんばんは!



日付が変わるたびに元データが左へずれる訳ですね?
関数でできるかどうかわかりませんが、かなり無理があると思います。

そこでVBAになりますが一例です。
元データはSheet見出しの一番左側に配置してあるとします。

Alt+F11キー → 表示された画面の左側に「ThisWorkbook」がありますので
そこでダブルクリック → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
普通の操作をしてみてください。
(ブックを開くときと閉じるときにマクロが実行されます)

Dim lastRow As Long, lastCol As Long 'この行から//
Dim c As Range, wS As Worksheet
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wS = Worksheets(Worksheets.Count)
With Worksheets(1)
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(2, Columns.Count).End(xlToLeft).Column
Range(.Cells(2, "A"), .Cells(lastRow, lastCol)).Copy
wS.Activate
wS.Range("A2").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End Sub

Private Sub Workbook_Open()
Set wS = Worksheets(Worksheets.Count)
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
lastCol = wS.Cells(2, Columns.Count).End(xlToLeft).Column
With Worksheets(1)
.Rows(2).NumberFormatLocal = "G/標準"
Set c = wS.Rows(2).Find(what:=.Range("B2"), LookIn:=xlValues, lookat:=xlWhole)
Range(wS.Cells(4, c.Column), wS.Cells(lastRow, lastCol)).Copy
.Activate
.Range("B4").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Rows(2).NumberFormatLocal = "m/d"
End With
Application.DisplayAlerts = False
wS.Delete
Application.DisplayAlerts = True
End Sub 'この行まで//

※ 保存時は「マクロ有効ブック」として保存してください。

※ やっていることは
① ブックを閉じるときにSheetを追加し、元データを「値」として貼り付ける。
② ブックを開いたときに最終Sheetのデータの必要部分のみをSheet1に貼り付ける。
(Sheet1のB2セルの日付以降のデータ)
その後、最終Sheetは削除!
という操作です。m(_ _)m
    • good
    • 0

No.1のママチャリです。


前提を確認させてください。
1は一つづつ手入力ですよね。他のシートから範囲指定でコピペできる訳ではないですよね。
さらに、予定日は1日だけですよね。同じ予定で2所以上に1は立たないですよね。

であれば、まず、No.1をやった上で、次のような機能を追加したらいかがでしょうか。

【追加機能】
1を入力したいセルがダブルクリックされた場合、その列の見出し日付を予定日に転記する。
    • good
    • 0

TODAY関数はやめて


条件付き書式で今日の日付の列に色を付け
B列を選んでウィンドウ枠を固定しておくのは?
印刷には適しませんが(>_<)
    • good
    • 0

A列とB列の間に1列追加して(B列以降をC列~にして)予定日を入れます。


その予定日と見出しの日付が一致した場合、”1”を表示するようにしてはいかがでしょうか。
この回答への補足あり
    • good
    • 0

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