プロが教えるわが家の防犯対策術!

こんな関数ありますか?
「入力した日を関数で表示する」

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/31 16:31

んー。

もしかして。

関数ではありません。
また、ご質問の意図と違いましたら、ご容赦ください。

もしかして、データの入力日を知りたい、というのは、他の方が、「古い」データを書き換えてしまう場合があるので、それを防ぎたい、ということではありませんか?

でしたら、
変更箇所の確認というので、そのデータを反映するかしないか選べますので、そちらの方がいいとおもいます。

ツール→変更履歴の記録というのがありますので、
そこで、
変更箇所の表示というのを選びます。

何かデータが変わったら、
ツール→変更箇所の確認を選ぶと、
誰(といっても、そのパソコン上のユーザー名がでるとおもいますが。
たしか、ここの設定は変えられた思いますが、詳細設定は忘れました)が、
いつ、そのデータを変えたかの更新日時を知ることができますよ。

あとは、「反映する」、「反映しない」で、
そのデータを使うか使わないか選べます。

MOUSの上級試験範囲ですので、市販のMOUSExcel上級対策本みると、詳細が載っていると思いますよ。

関数じゃなくて申し訳ないんですが・・・。
    • good
    • 0

すいません。

変な回答をしてしまいました。

 ANo.#4の(1)ユーザー定義関数を利用する。

は再計算すると日付を変えてしまいます。無視して下さい。
(2)は問題ないと思います。失礼しました。
    • good
    • 0

非常に問題はありますが・・・・。


B列に
=IF(A1<>"",NOW(),"")
というよな設定をすればOKです。
※例はA1のセルでB1を表示するものです。
※Bセルの書式は日付フォーマットにする必要があります。

問題というのは、
1.「F9」キー等で更新してしまうと、Bセルの値が変わってしまいます。
2.複数のセルを上記設定すると、1つ替えるとみんな変わってしまいます。

結局、更新によって各関数が動いてしまいますので無理かと思います。

参考までに、現時刻の入力は「Ctrl」+「;」(日付)、「Ctrl」+「:」(時刻)
で簡単にできますので、こちらで入れても楽かと思います。

この回答への補足

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

やっぱりExcelでは無理なのでしょうか?

補足日時:2001/08/09 16:37
    • good
    • 0

質問の意味が?ですが、A1に入力した日にちをB1に表示するなら、B1には =A1 でしょうか。

B1の書式設定は望む日付形式にします。

A1をセルの書式設定のユーザー設定でスペース(スペース1個)にしておけばA1には見た目何も表示されません。

回答になっている?入力者をごまかしている感じもしますが・・・

この回答への補足

ごめんなさい。説明が下手で(T-T)
もう一度説明し直すと・・・

A列が「今日やったこと」を入力。(この時、文字列で入力してます)
そんでB列に「A列を入力した日付」を関数で表示する。

という感じにしたかったのです。
意味分かって頂けるでしょうか?
お願いします。

補足日時:2001/08/09 15:42
    • good
    • 0

それでしたら、関数は不要です。


表示させたいセルをクリックして、
=を入力後、
もともと日付を入力しているセルをクリックして、Enterキーを押すだけで
OKです。

日付を管理する関数自体は、いろいろあります。
「Fx」ボタンを押して、関数の種類のところで、日付を選べば出てきますよ。
用途に応じて利用してください。

この回答への補足

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

補足日時:2001/08/09 15:48
    • good
    • 0

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