いつもお世話になっております。
エクセルのデータがあるのですが、そのデータは何回か更新してから締めるものです。
これを何月何日に最終更新をしたかが自動的にどこかのセルに出てくるようには出来ないでしょうか?
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

以下のようなマクロで最終更新日を記録することは可能です。



Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 If ThisWorkbook.Saved = False Then
  Worksheets("Sheet1").Range("A1").Value = Date
 End If
End Sub

このマクロは、何も更新せず保存したときは日付を更新しません。
シート名とセルアドレスは実際の値に変更してください。

マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのThisWorkBook右クリック→「コードの表示」で表示される画面にペーストして下さい。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます!
ばっちり出るようになりました。
ありがとうございました!!

お礼日時:2007/01/24 15:16

No1 ですごめんなさい。

これは現在の日時を出す関数でしたorz
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
答えて頂けた事が嬉しいです。
ありがとうございました!

お礼日時:2007/01/24 15:17

=NOW()

    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel 2007で、更新日をセルに自動入力する方法を教えて下さい。

Excel 2007で、更新日をセルに自動入力する方法を教えて下さい。

ファイルを開いた日付ではなく、更新したときに、更新したシートのみ日付を自動で変更する方法はありますか?

Aベストアンサー

マクロを使うことになるでしょう。
例えばシートの1行目は除いて2行目から下でデータの変更があったとしたら、C1セルに今日の日付を表示させるとしたら次のようなマクロを設定します。
「開発」タブで「Visual Basic」を選択します。「表示」のタブから「プロジェクト エクスプローラ」を選択します。「This Workbook」を選択してから「表示」で「コード」をクリックします。
右側の白い画面に次のコードを入力します。

Private Sub WorkBook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
If Source.Row >= 2 And Source.Column >= 1 Then
Range("C1") = Date
End If
End Sub

これで表示されているシートでデータが変更されればC1セルに今日の日付が表示されます。C1セルに####が表示される場合にはセル幅を広げてください。

Q【エクセル】行の最終更新日を、あるセルに自動で入力させる方法。

エクセルの表で、ある行のデータを更新した時、
その行の最末尾に作っておいた項目名「最終更新日」というセルのデータに
自動的に更新日時が入力されるようにするにはどのようにすればよいでしょうか?

Aベストアンサー

No.1です。

すみません、縦横を間違えていましたか。これは失礼しました。
書き換える所はいっぱいあるので、とりあえずマクロを以下のものに置きかえていただけますか?(データの入力範囲の箇所だけ修正してください)

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim MyRng As Range, R As Range, L As Range
 Dim LastUpdated As Integer
 Set MyRng = Intersect(Target, Range("B2:D6"))
 If MyRng Is Nothing Then Exit Sub
 
 Set L = Rows(1).Find("最終更新日")
 If L Is Nothing Then Exit Sub
 LastUpdated = L.Column
 
 For Each R In MyRng.Rows
  Cells(R.Row, LastUpdated) = Now
 Next
End Sub

No.1です。

すみません、縦横を間違えていましたか。これは失礼しました。
書き換える所はいっぱいあるので、とりあえずマクロを以下のものに置きかえていただけますか?(データの入力範囲の箇所だけ修正してください)

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim MyRng As Range, R As Range, L As Range
 Dim LastUpdated As Integer
 Set MyRng = Intersect(Target, Range("B2:D6"))
 If MyRng Is Nothing Then Exit Sub
 
 Set L = Rows(1).Find("最終更新日")
 If L I...続きを読む

Q特定セルの内容を更新したら、その更新日を自動的に表示する方法について

エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させたいと思っております。
例えば『A1』へ新規に文字入力したり、セルの内容を更新した時に、セル『B1』にその日の日付が自動で表示される。
そして、違う日にもう一度、同じ欄に入力すれば、その入力した日付に随時更新されるようにするための方法を教えていただければ幸いでございます。

御手数ですが、エクセル関数またはVBA、マクロのいずれかで実現可能な方法があれば教えて下さい。
何卒、宜しくお願いいたします。

Aベストアンサー

マクロの力を借りる事になります。
例えば、シートの名前のタブを右クリックして、コードの表示 をクリック
VBエディターが起動しますので
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then'←の3はC列のこと
If Target.Value = "" Then
Cells(Target.Row, 2).Value = ""
Else
Cells(Target.Row, 2).Value = Date'←の2はB列に日付
Cells(Target.Row, 4).Activate'←の4はD列へ移動
End If
End If
End Sub
をコピィしてみてください。上記のコードでは
C列に変更があれば、B列に日付を入れて、C列へ移動します。
空白へ変更した場合はA列を空白に戻します。
ご自身のシートに合わせて編集してみてください。

Qexcelでシート毎の最終更新日を所定の場所に表示

複数人のスタッフで1つのエクセルファイルを管理しています。
管理方法は下記の通りです。

現在、担当しているお客様から連絡やアポイントなどがあったかを記録に残すためのexcelデータを作成しています。
1つのexcelファイルに人数分のシートを作成し、それぞれが自分のシートに毎月の連絡の有無を○×形式で記入していきます。
シート内には各自が担当している案件名と1月~12月までの見出し、備考欄などが記載されています。
それぞれのシートの内容が書き換えられた最終更新日を所定のセルに記載させたいのです。
マクロを使用して下記のような記述をしてみましたが、どれか1つのセルを変更すると全てのシートの最終更新日が同じ時間に更新されたような表記になってしまします。
複数人でエクセルファイルを管理するため、誰がいつ担当のシートを書き換えたかを記載するためにはどの様な記述をすれば良いのでしょうか?
【使用している関数】=LastSaveTime()
【記述内容】
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  'イベント抑止
  Application.EnableEvents = False

  With Sh
    If Intersect(Target, .Range("E4:P100")) Is Nothing Then GoTo EndRtn
    .Range("Q2").Value = Date
  End With

EndRtn:
  'イベント抑止を解除
  Application.EnableEvents = True
End Sub


上記の方法でシートを作成してみましたが、最終更新日を表示させるセルに
=LastSaveTime()
を記述したところ
#NAME?
と表示されてしまいました。
セルの書式設定も日付に変更しましたが変化がありません。

VBEを適用するまでの流れは下記アドレスのNo.5様を参考にさせて頂いております。
http://oshiete.goo.ne.jp/qa/4367944.html

上記の方法と今回の方法はそもそも目的としているものが違うのでしょうか?
素人目には同じような目的だと感じたので参考にさせていただいたのですが…
何度もお手数をおかけ致しますがご回答の程、宜しくお願い致します。

複数人のスタッフで1つのエクセルファイルを管理しています。
管理方法は下記の通りです。

現在、担当しているお客様から連絡やアポイントなどがあったかを記録に残すためのexcelデータを作成しています。
1つのexcelファイルに人数分のシートを作成し、それぞれが自分のシートに毎月の連絡の有無を○×形式で記入していきます。
シート内には各自が担当している案件名と1月~12月までの見出し、備考欄などが記載されています。
それぞれのシートの内容が書き換えられた最終更新日を所定のセルに記載させたいのです...続きを読む

Aベストアンサー

次の手順を行います。
1.ALT+F11でVBE画面を開く
2.今までに作成した ご質問に掲示したマクロ,lastsavetime関数のマクロ,各シートのシートモジュールに書いたマクロ,を漏れなく削除する(同じ目的の複数のマクロが競合するのを防ぎます)
3.プロジェクトエクスプローラで「VBAProject(作業をしている.xls)」の中に含まれているThisWorkbookをWクリックする
4.現れたシートに下記をコピー貼り付ける

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

’範囲外なら何もしない
 if application.intersect(target, sh.range("E4:P100")) is nothing then exit sub

’そうでないならQ2に記録する
 Application.EnableEvents = False
 sh.range("Q2")= now
 Application.EnableEvents = True
End Sub

ファイルメニューから終了してエクセルに戻る
Q2には日付時刻の表示形式を設定しておく
各シートで作業すると,Q2に日付時刻が自動で更新される。

次の手順を行います。
1.ALT+F11でVBE画面を開く
2.今までに作成した ご質問に掲示したマクロ,lastsavetime関数のマクロ,各シートのシートモジュールに書いたマクロ,を漏れなく削除する(同じ目的の複数のマクロが競合するのを防ぎます)
3.プロジェクトエクスプローラで「VBAProject(作業をしている.xls)」の中に含まれているThisWorkbookをWクリックする
4.現れたシートに下記をコピー貼り付ける

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

’範囲外なら何も...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcelで更新日時と更新者を表示させる

Excel97で、ファイルの最終更新日時と最終更新者を任意のセルに表示させようとしています。

組込み関数では無理なようなので、VBAで関数を作成し始めました。
日時については、FileDateTime(パス名)で日付のシリアル番号を表示させることができましたが、これをセルの書式設定ではなく、VBA内で日付型にさせたいのです。
更新者は、BuiltinDocumentProperties(7)というのを使用するようですが、記述方法がまったくわかりません。

VBAは初心者です。
Functionステートメントを使用していますがこれ自体は間違いないでしょうか。

ご指導願います。

Aベストアンサー

これでどうでしょう。

以下のようにすると、
=Nichiji("C:\test.xls")
結果:yyyy/mm/dd hh:mm:ss
と言う風に表示されます。

サンプル:
Function Nichiji(strFilePath) As String
Dim strDate As String
strDate = FileDateTime(strFilePath)
Nichiji = CStr(strDate)
End Function

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q☆Excelエクセルで入力した日の日付を表示したいです☆

こんばんは!エクセルで、なにかデータを入力した横のセルに、その日の日付が自動的に入るような方法があれば、是非教えてくださいm(__)m横の列に手動で日付を入力すればよいといえばよいのですが^^;その列には、また別の日に、追加でデータを入力していきたいですので、前の日の日付もその日の日付も残るようにしたいんです。today関数とかじゃ全部その日になってしまいますよね。。。もし、データを入力しただけで、そのようなことができる方法があれば、是非教えてください。よろしくお願いしますm(__)m

Aベストアンサー

マクロを組むしかありません。過去の質問を検索すれば結構出てきますよ。
手動でいいなら、「Ctrl」キーを押しながら「;」キーで今日の日付になります。

Qエクセル セルデーター変更の自動更新日入力

過去に質問がありましたが分らないので教えてください。
私の場合は、D列にのセルが変更されるとA列に更新日が自動で入力されるようにしたいのですが、恐れ入りますがお教えください。
因みに行は500行あります。


No.788307 質問:エクセルについて詳しい人教えてください。
質問者:yukkokun 行ごとで処理をしています。その行のデータの変更があった場合、その行のみ更新日を変更するようにしたいのですが、どうすればいいのですか。例えばA1~C1のいづれかを変更した場合、D1(更新日のセル)が自動的に変わるようにしたいのです。どなたかわかりやすく教えてください。関数等は初心者です。

Aベストアンサー

こんにちは。
コメントを入れておきましたので、読んでみてください。多少、自分の思ったように直せるはずです。

入力するシートのシートタブを右クリックすると、[コードの表示]というのがありますから、それをクリックして、現れた画面に、以下のコードを貼り付けてください。なお、日付の書式は、メニューの書式で直してください。

'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myRow As Long
 'イベントをOffにする
 Application.EnableEvents = False
 With Target
  'セルが空なら何もしない
  If IsEmpty(Target) Then Exit Sub
  '選んだセルが複数なら何もしない
  If .Count > 1 Then Exit Sub
  'セルの列が4列目(D)でなければ何もしない
  If .Column <> 4 Then Exit Sub
  'D列の変更した行数を取る
  myRow = .Row
  '500行以上だったら、何もしない
  If myRow > 500 Then Exit Sub
  'A列の同じ行に日付を入れる
  Cells(myRow, 1).Value = Format$(Date, "mm/dd")
 End With
  'イベントをオンにする。
  Application.EnableEvents = True
End Sub
'---------------------------------------------------

こんにちは。
コメントを入れておきましたので、読んでみてください。多少、自分の思ったように直せるはずです。

入力するシートのシートタブを右クリックすると、[コードの表示]というのがありますから、それをクリックして、現れた画面に、以下のコードを貼り付けてください。なお、日付の書式は、メニューの書式で直してください。

'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myRow As Long
 'イベントをOffにする
 Appli...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報