- ベストアンサー
Excel日付表示について
こんな関数ありますか? 「入力した日を関数で表示する」 たとえば・・・ A列に入力した日にちをB列に表示できる関数ってありますか? マクロではなく、関数でしたいんですけど どなたかご存知ですか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
やっと質問の意味が分かりました。無意味な回答をしてすいませんでした。 最初に思い浮かぶのは now()ですが、これはどこかの時点で値に変えてしまわないとだめでしょうね。 自動的に値に変えることはできますが、マクロを使わなければかえって面倒になりますね。 関数では思い浮かばないので、以下は私だったらこうするという感想です。質問の主旨に合わなかったら読み飛ばして下さい。 下記の方法なら、ある意味、マクロを実行しているという感じにならないかもしれないので『マクロではなく、関数でしたいんですけど』を承知の上で書かせてもらいます。 (1)ユーザー定義関数を利用する。(B列には =ymd() と入力) Public Function YMD() YMD = Format(Now(), "yyyy/mm/dd") End Function または(B列には =ymd2(A1) のように入力。入力がなければ表示しない) Public Function YMD2(rg As Range) If rg <> "" Then YMD2 = Format(Now(), "yyyy/mm/dd") Else YMD2 = "" End If End Function (2)ThisWorkbookに処理を書き込む。(シート側では、A列に入力すれば自動でB列にセットされます) Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Sheet1" Then 'Sheet1を変更 If Target.Count = 1 Then 'A列を変更 If Target.Column = 1 Then '1つのセルを変更 Application.EnableEvents = False 'イベントの発生を止める If Target <> "" Then 'A列で入力した場合 Target.Offset(0, 1) = Format(Now(), "yyyy/mm/dd") Else 'A列で消去した場合 Target.Offset(0, 1) = "" End If Application.EnableEvents = True End If End If End If End Sub
その他の回答 (5)
- himehime
- ベストアンサー率37% (133/354)
んー。もしかして。 関数ではありません。 また、ご質問の意図と違いましたら、ご容赦ください。 もしかして、データの入力日を知りたい、というのは、他の方が、「古い」データを書き換えてしまう場合があるので、それを防ぎたい、ということではありませんか? でしたら、 変更箇所の確認というので、そのデータを反映するかしないか選べますので、そちらの方がいいとおもいます。 ツール→変更履歴の記録というのがありますので、 そこで、 変更箇所の表示というのを選びます。 何かデータが変わったら、 ツール→変更箇所の確認を選ぶと、 誰(といっても、そのパソコン上のユーザー名がでるとおもいますが。 たしか、ここの設定は変えられた思いますが、詳細設定は忘れました)が、 いつ、そのデータを変えたかの更新日時を知ることができますよ。 あとは、「反映する」、「反映しない」で、 そのデータを使うか使わないか選べます。 MOUSの上級試験範囲ですので、市販のMOUSExcel上級対策本みると、詳細が載っていると思いますよ。 関数じゃなくて申し訳ないんですが・・・。
- nishi6
- ベストアンサー率67% (869/1280)
すいません。変な回答をしてしまいました。 ANo.#4の(1)ユーザー定義関数を利用する。 は再計算すると日付を変えてしまいます。無視して下さい。 (2)は問題ないと思います。失礼しました。
- miya_777
- ベストアンサー率31% (44/140)
非常に問題はありますが・・・・。 B列に =IF(A1<>"",NOW(),"") というよな設定をすればOKです。 ※例はA1のセルでB1を表示するものです。 ※Bセルの書式は日付フォーマットにする必要があります。 問題というのは、 1.「F9」キー等で更新してしまうと、Bセルの値が変わってしまいます。 2.複数のセルを上記設定すると、1つ替えるとみんな変わってしまいます。 結局、更新によって各関数が動いてしまいますので無理かと思います。 参考までに、現時刻の入力は「Ctrl」+「;」(日付)、「Ctrl」+「:」(時刻) で簡単にできますので、こちらで入れても楽かと思います。
補足
う~~ん。 更新日付の列を作成したかったので 「1つ変えてしまうと全部変わってしまう」のは辛いですね。 私も今のところ[Ctrl]+[;]でやっていますが、 どうも面倒くさくて・・・。 やっぱりExcelでは無理なのでしょうか?
- nishi6
- ベストアンサー率67% (869/1280)
質問の意味が?ですが、A1に入力した日にちをB1に表示するなら、B1には =A1 でしょうか。B1の書式設定は望む日付形式にします。 A1をセルの書式設定のユーザー設定でスペース(スペース1個)にしておけばA1には見た目何も表示されません。 回答になっている?入力者をごまかしている感じもしますが・・・
補足
ごめんなさい。説明が下手で(T-T) もう一度説明し直すと・・・ A列が「今日やったこと」を入力。(この時、文字列で入力してます) そんでB列に「A列を入力した日付」を関数で表示する。 という感じにしたかったのです。 意味分かって頂けるでしょうか? お願いします。
- masakaji
- ベストアンサー率33% (38/113)
それでしたら、関数は不要です。 表示させたいセルをクリックして、 =を入力後、 もともと日付を入力しているセルをクリックして、Enterキーを押すだけで OKです。 日付を管理する関数自体は、いろいろあります。 「Fx」ボタンを押して、関数の種類のところで、日付を選べば出てきますよ。 用途に応じて利用してください。
補足
回答ありがとうございます。 補足を上記にまとめさせて頂きました。
お礼
ありがとうございました。 結局、関数では出来ないと言うことですね(T-T) でも、マクロはとっても役に立ちました。 わざわざ作成して頂いてありがとうございます!!