• ベストアンサー

Excel日付表示について

こんな関数ありますか? 「入力した日を関数で表示する」 たとえば・・・ A列に入力した日にちをB列に表示できる関数ってありますか? マクロではなく、関数でしたいんですけど どなたかご存知ですか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

やっと質問の意味が分かりました。無意味な回答をしてすいませんでした。 最初に思い浮かぶのは 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

imu_ka
質問者

お礼

ありがとうございました。 結局、関数では出来ないと言うことですね(T-T) でも、マクロはとっても役に立ちました。 わざわざ作成して頂いてありがとうございます!!

その他の回答 (5)

  • himehime
  • ベストアンサー率37% (133/354)
回答No.6

んー。もしかして。 関数ではありません。 また、ご質問の意図と違いましたら、ご容赦ください。 もしかして、データの入力日を知りたい、というのは、他の方が、「古い」データを書き換えてしまう場合があるので、それを防ぎたい、ということではありませんか? でしたら、 変更箇所の確認というので、そのデータを反映するかしないか選べますので、そちらの方がいいとおもいます。 ツール→変更履歴の記録というのがありますので、 そこで、 変更箇所の表示というのを選びます。 何かデータが変わったら、 ツール→変更箇所の確認を選ぶと、 誰(といっても、そのパソコン上のユーザー名がでるとおもいますが。 たしか、ここの設定は変えられた思いますが、詳細設定は忘れました)が、 いつ、そのデータを変えたかの更新日時を知ることができますよ。 あとは、「反映する」、「反映しない」で、 そのデータを使うか使わないか選べます。 MOUSの上級試験範囲ですので、市販のMOUSExcel上級対策本みると、詳細が載っていると思いますよ。 関数じゃなくて申し訳ないんですが・・・。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

すいません。変な回答をしてしまいました。  ANo.#4の(1)ユーザー定義関数を利用する。 は再計算すると日付を変えてしまいます。無視して下さい。 (2)は問題ないと思います。失礼しました。

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.3

非常に問題はありますが・・・・。 B列に =IF(A1<>"",NOW(),"") というよな設定をすればOKです。 ※例はA1のセルでB1を表示するものです。 ※Bセルの書式は日付フォーマットにする必要があります。 問題というのは、 1.「F9」キー等で更新してしまうと、Bセルの値が変わってしまいます。 2.複数のセルを上記設定すると、1つ替えるとみんな変わってしまいます。 結局、更新によって各関数が動いてしまいますので無理かと思います。 参考までに、現時刻の入力は「Ctrl」+「;」(日付)、「Ctrl」+「:」(時刻) で簡単にできますので、こちらで入れても楽かと思います。

imu_ka
質問者

補足

う~~ん。 更新日付の列を作成したかったので 「1つ変えてしまうと全部変わってしまう」のは辛いですね。 私も今のところ[Ctrl]+[;]でやっていますが、 どうも面倒くさくて・・・。 やっぱりExcelでは無理なのでしょうか?

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

質問の意味が?ですが、A1に入力した日にちをB1に表示するなら、B1には =A1 でしょうか。B1の書式設定は望む日付形式にします。 A1をセルの書式設定のユーザー設定でスペース(スペース1個)にしておけばA1には見た目何も表示されません。 回答になっている?入力者をごまかしている感じもしますが・・・

imu_ka
質問者

補足

ごめんなさい。説明が下手で(T-T) もう一度説明し直すと・・・ A列が「今日やったこと」を入力。(この時、文字列で入力してます) そんでB列に「A列を入力した日付」を関数で表示する。 という感じにしたかったのです。 意味分かって頂けるでしょうか? お願いします。

  • masakaji
  • ベストアンサー率33% (38/113)
回答No.1

それでしたら、関数は不要です。 表示させたいセルをクリックして、 =を入力後、 もともと日付を入力しているセルをクリックして、Enterキーを押すだけで OKです。 日付を管理する関数自体は、いろいろあります。 「Fx」ボタンを押して、関数の種類のところで、日付を選べば出てきますよ。 用途に応じて利用してください。

imu_ka
質問者

補足

回答ありがとうございます。 補足を上記にまとめさせて頂きました。

関連するQ&A