もし出来ればすごく助かるのですが、1つのセル内に入力した数値の履歴を残すことって出来ますか?

具体的に言いますと、1つの商品に対して価格を入力するとします。しかし、その価格は変動していきます。品目数が少なければ、いくつかセルを使えばよいのですが、100品目を超えるため、1つのセル内で過去に入力した価格も参照出来るようにしたいのです。何もしてない状態では最新の価格だけが見え、どこかを押すと過去の価格も見ることが出来れば最高です・・・!(全く違うと思いますが、ドロッップダウンリストのような感じで過去の入力数値を見れればとても見やすいです。)

ご存知の方がいらっしゃいましたら、よろしくお願い致します。

A 回答 (6件)

私的には入力シートに履歴が必要かが疑問です


実務に履歴は必要ないと思いますし
入力時にゴチャゴチャしていると、入力ミスしてしまいそうで
履歴は他のシートにとるようにして、履歴を取ったシートで
履歴見るなり、分析なりすればよいと思います
あくまで、私的意見ですので参考程度に

一例です
コメントを使用した例です
'前回のものと入れ替えてください
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("b2:e100"), Target) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
Dim aaa As String
aaa = Target.Address
If Worksheets("sheet2").Range(aaa).Value = "" Then
Worksheets("sheet2").Range(aaa).Value = Target.Value
Else
Worksheets("sheet2").Range(aaa).Value = Target.Value & vbLf & Worksheets("sheet2").Range(aaa).Value
End If
With Target
If Not .Comment Is Nothing Then .ClearComments
.AddComment "履歴" & vbLf & Worksheets("sheet2").Range(aaa).Value
.Comment.Visible = False
.Comment.Shape.TextFrame.AutoSize = True
End With
End Sub
    • good
    • 0
この回答へのお礼

hige_082 様

私の質問に対して何度もお時間を取ってくださり、本当にありがとうございました。
作ってくださったもので、理想としていたものが出来ました。コメントとして履歴が入るようしてくださっているので、いらない部分は削除したり、編集できたり・・・と、とても便利です。別のシートで履歴を見られるのもとても助かります。

本当にお世話になりました。感謝の限りです。ありがとうございました。

お礼日時:2009/05/31 23:47

fujillin様 補足有難う御座います


いつも、的確な回答参考にさせて戴いております

fujillin様の回答にもありますように、私としても業務に使用するのに
このような方法は、良い方法では無いと思います

#3の最初にも書きましたが
>本当に必要なのか疑問ですが(表示方法など)
の理由が、ドロップダウンリストは入力を簡単にするものです
本来、データを表示するものではないので、ちょっとした操作のミスで
データが変更されてしまいます、したがって、今回のような条件での
使用は避けた方が良いと思います、実務では正確性が求められると思う

以上、余りお薦めしませんが
fujillin様の意見を取り入れたものを作ってみましたが
実務には、よーく考えて使用してくださいね

'ワークシートモジュールへ
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("b2:e100"), Target) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
Dim aaa As String
aaa = Target.Address
If Worksheets("sheet2").Range(aaa).Value = "" Then
Worksheets("sheet2").Range(aaa).Value = Target.Value
Else
Worksheets("sheet2").Range(aaa).Value = Worksheets("sheet2").Range(aaa).Value & "," & Target.Value
End If
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Worksheets("sheet2").Range(aaa).Value
.ShowInput = False
.ShowError = False
End With
End Sub
    • good
    • 0
この回答へのお礼

hige_082様

お世話になります。再度のご回答を本当にありがとうございます。作ってくださったものを使い、表を作ってみました。私の思い描いていたことが出来、本当に感動だったのですが、ご回答に書いてくださっていたように、確かにちょっとした操作のミスによりデータが変更されてしまう点では危ないかと思います。

もし、入力履歴データを見れるだけのリストを出す方法(データは選べない)方法があれば教えていただけないでしょうか。。。?せっかくご回答くださっているのに新たに希望を出してしまい、本当に申し訳なく思います。またお時間あるときでよいですので、よろしくお願い致します。

今回教えてくださった方法も素晴らしいので、別のデータ処理の際には是非使わせていただこうと思います。

お礼日時:2009/05/30 20:23

No2です。



No3様の回答は各列を記録用に利用する方式になっていますので、現状は、記録を残したいセルが1箇所/列みたいになっています。
(Sheet2の記録の内容を見てみればわかるはず)

A1:E100みたいに、ある範囲のセル全部にこの機能を付加したい場合は、記録の方法を(No2にも書きましたように)1セル内にまとめてしまうか、あるいは記録保存の個数を制限しておいて(例えば100個)、1行目の記録はSheet2の1~100行に、2行目の記録は101~200行に記録しておく、みたいになるように修正してあげればよいでしょう。(列側で同様の処理でも同じですが)

もともとの情報が不足なので、方法的なサンプルとしてご提示なさったものだと思われます。

あえて言うなら、Sheet_Changeのイベントが良いのかSaveのイベントが良いのかの疑問くらいか。
Sheet_Changeだと、誤入力でリターンキーを押したり、セルを移動したりすると、それも記録に残ってしまう。その一方で入力が即座に反映されるというメリットもある。
    • good
    • 0
この回答へのお礼

もとの情報をもっと詳しく書くべきでした・・・たくさんアドバイスをしてくださっているのに申し訳ないです。

今からでは遅いかもしれませんが・・・
     A列  B列 C列 D列 E列
1行目 品名  卸1 卸2 卸3 卸4
2行目 …   価格 価格 価格 価格
3行目 …
といった感じで1つの品に関して、各卸の価格を入力します。そして、卸価格の変動があるのでその履歴を残したいのです。
そして、わがままですが、各品毎に、条件付き書式で最小値を表示できるようにしたいです。

ここまでするのは無理でしょうか・・・
素人で勉強不足のため、なかなか理解が遅いのですが、もし方法があれば教えてください。よろしくお願いします。

お礼日時:2009/05/28 21:05

詳細が不明(シート名、セルアドレスなどなど)


本当に必要なのか疑問ですが(表示方法など)

面白そうなので作ってみました

条件はSheet1のA1~E1までしか対応させてません
Sheet2へ履歴を記録します

新規ファイルで試してみてください

Sheet1のシートタブを右クリックし、コードの表示を選択
ワークシートモジュールが現れるのでコピペ

画面を閉じて、Sheet1のA1~E1に入力してみてください

'ワークシートモジュールへ
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("a1:e1"), Target) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
Dim aaa As String
Worksheets("sheet2").Cells(1, Target.Column).Insert Shift:=xlDown
Worksheets("sheet2").Cells(1, Target.Column).Value = Target.Value
aaa = "=INDIRECT(""Sheet2!" & Worksheets("sheet2").Range(Worksheets("sheet2").Cells(1, Target.Column), Worksheets("sheet2").Cells(Rows.Count, Target.Column).End(xlUp)).Address(0, 0) & """)"
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=aaa
.ShowInput = False
.ShowError = False
End With
End Sub

後はご自由に
    • good
    • 0
この回答へのお礼

本当にありがとうございます!!ドロップダウンリストのように▼が出て入力履歴を見られる上に、条件付き書式(最小値を出すため)も使えて、したかったことが全て出来ました。すごいですね!!!

これを、A1:E1だけでなく、範囲を広げたい場合は、
「If Intersect(Range("a1:e1"), Target) Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub」
の(Range("a1:e1")を、希望の範囲(Range("a1:e100")にすればよいのかなあ・・・と思い、してみたのですが、これでは行1はうまくいくのですが、行2以降は行1の数値が履歴として表示されてしまい、うまくいきませんでした。
本当にお手数をお掛けして申し訳ないのですが、範囲を広げる方法を教えていただけないでしょうか?

よろしくお願い致します。

お礼日時:2009/05/28 18:37

時間がないのでアイデアのみ



・非表示のシートを記録用に用意しておいて、ブックの保存時に自動で
 マクロを走らせる。
・マクロ側では、価格の部分を記録の最新版と比較し、更新されていた
 らその部分を記録に追加する
・履歴を表示するのは、そのシートからデータを読めばよい
・記録は、1セルにカンマなどで繋げて保管しても良いし、レイアウトにも
 よるけど1行(あるいは1列)を利用するような方式でも可

ってなところでどうでしょうか?
    • good
    • 0
この回答へのお礼

アドバイスをありがとうございます。
早速やってみますね!!

お礼日時:2009/05/27 21:29

「ツール」「ブックの共有」すれば履歴が作成できます。


詳細は下記のURLを参照してください。
http://www.nurs.or.jp/~ppoy/access/excel/xlET017 …
    • good
    • 0
この回答へのお礼

早々のご回答をありがとうございます。

さっそく試してみました!!
すると、1つ前の履歴は見ることが出来るのですが、それ以前のものは消えていってしまいました・・・。もし、全ての履歴を残せる方法があれば教えてください。

再度の質問になりますが、よろしくお願い致します。

お礼日時:2009/05/27 00:35

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

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

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

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

QYou Tubeの再生履歴の削除について

You Tubeの再生履歴の削除について質問です。

再生履歴を消そうとした際に、PCの再生履歴から履歴から消したい動画を選択し削除しようとしました。

いつも通り削除した動画にチェックを入れ、削除ボタンを押しました。そのときは消えても、更新ボタンを押したり、少し時間が経ってから再生履歴を見ると、と削除したはずの動画がまた再生履歴に残っています。何度削除しても再生履歴に削除したい動画が残っています。

これはスマホでも削除しようとしましたが、そのときは消えても更新したり、改めて再生履歴を見ると消したはずの動画が履歴に残っています。

このようなことが起きた場合どうしたらいいのですか?

Aベストアンサー

私も同じ現象で困っていましたが、以下の方法で削除できました。


1.PCで、削除したい履歴にチェックを入れて、削除ボタンを押します。

2.すぐに画面左側の「後で見る」の上の、自分のアカウントをクリック。


このあと、再生履歴に戻って確認してみてください。

この方法で、私の場合は履歴が削除できました。

Q複数のセルすべてに数値が入れば別セルに1と入力

エクセルについて
例えば、A1とA2とA3とA4のすべてに数値が入れば、B1に1としたい。
上記Aセルにひとつでも空白があれば、B1も空白としたいのです。
宜しくお願いいたします。

Aベストアンサー

>すべてに数値が入れば、B1に1としたい。
>上記Aセルにひとつでも空白があれば、B1も空白としたいのです。
条件が不十分です。
それらのセルに文字列が入った場合はどうなるのでしょう?

「空白以外なら」と「何かが入力されていれば」とは別物です。
また、「空白」と「数式によって""が入力されているため何も表示されない」もこの先別物になりますので質問文内に記述したほうがいいでしょう。

そのうちの「すべてが空白なら」で条件分岐すると
B1=IF(COUNT(A1:A4)<>0,"",1)
でできるでしょう。

ただし、指定範囲に数式が入っていて、その数式の結果が「""」の場合は、空白とみなしてくれません。
その場合は
B1={IF(SUM(LEN(A1:A4))<>0,"",1)}
という配列数式でできるでしょう。

QIE7β3の履歴が削除できない

IE7β3の閲覧の履歴が削除できません。履歴の「今日」という項目を右クリックし削除をしてみるとそのときは消えるのですが、IEを再起動するとまた履歴が削除される前の状態に復活してしまいます。
履歴を削除する方法を教えてください。よろしくお願いします。

Aベストアンサー

「今日」ですのでまた開いた時点で履歴が作成されます。
問題ありません。

「履歴なんて残さないで」の方は
ツール⇒インターネットオプション⇒履歴の設定⇒ページを履歴で保持する日数を0にしてください。
履歴が作成されなくなります。

Aベストアンサー

書式>条件付き書式

セルの値が 次の値より小さい を選択
値は$B1とし、書式を設定。
設定したセルをコピーすればできませんか?

Q観覧履歴の削除

パソコンの履歴を削除するとき、インターネットオプションの履歴のクリアから削除しているのですが、それでもう完全に履歴は削除されているのでしょうか。
もしされていないのならどうすれば完全に履歴を消す事が出来ますか

Aベストアンサー

こんにちは。

ブラウザでページを閲覧すると、
(1)ページのタイトル・URLなどの情報が履歴に保存される
(2)キャッシュフォルダに、ページのテキストや画像などが保存される (再訪問時にキャッシュを参照して素早く表示するため)
主にこの2つがPC内に保存されます。

履歴のクリアだけですと、(1)の情報しか削除されていなく、キャッシュの方は残っているので『完全に』は削除されていないと言えます。
キャッシュは「インターネット一時ファイル」と呼ばれていまして、同じく「インターネットオプション」の画面から削除が可能です。

これに加えて『Cookie』や『フォーム情報』などの削除も行えば、完全削除に限りなく近くなると思われます。
(『フォーム情報』の削除は、IE6なら「コンテンツ」タブから、IE7は「全般」タブから可能だと思いました)

Qエクセルにてセルへ数値を入力時、事前に入力していた値との差を別のセルに表示させたいです。

エクセルにてA1のセルに数値を入力した場合(事前に入力していた値-入力値)の差を隣のセル(B1)に表示し、再びA1に入力した数値の差をそのまた隣のセル(C1)に表示、再びA1に入力した数値の差をそのまた隣のセル(D1)に表示、再び…
と繰返し入力した数値の差を右列へ順番に表示させていきたいのですが、どなたか方法を教えて下さい。

又、入力した時点の日付けも、差を表示させた下のセルに表示させる方法もお願いします。

Aベストアンサー

たとえばA20を作業セルとして利用するとして

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then

Cells(1, Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column + 1).Value = Range("A1").Value - Range("A20").Value
Cells(1, Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column).Offset(1, 0).Value = Date
Range("A20").Value = Range("A1").Value

End If

End Sub

でいかがでしょう

Qメール送信履歴削除について

ご質問です。
会社のGmailの送信履歴を削除した場合、削除したという履歴も会社側はわかりますか?
先日、自分が共有メールから送ったメールが履歴を残しておく必要がないと思ったため、送信履歴の削除を行なったのですが、よくよく考えると送信履歴を削除することがよくないことなのではと思い質問させていただきました。

Aベストアンサー

個人が所有をするPCであれば、メールの履歴を削除しても宜しいかとは思いますが、
会社に設置をされているPCは上層部の管理課が管理をしているので、メールの送受信の履歴を削除すればデーターとして記録をされます。

受信をしたメールに写真などの添付ファイルがある場合は、ファイルを開かずメールそのものを削除するようにしてください。
ワンクリックでウイルスに汚染をされる危険性もありますから。

Q◇セルに任意の数値を入力した数値を条件付き書式に反映させる◇

◇セルに任意の数値を入力した数値を条件付き書式に反映させる◇

セルに任意の数値を入力した数値を条件付き書式に反映させ、状況に応じて
色付ける幅をかえたいと思います。

その都度、指定を変更すればいいのでしょうが、広範囲なのとマクロを組んでいるので
セルに毎回違う数値を入れて条件付き書式を使用したいと思っております。

何かよい方法があれば教えて頂きたいです。
宜しくお願いします。

Aベストアンサー

例えばA2セルから下方に日付が、例えば9月1日から9月30日までが入力されているとします。
そこで例えば9月10日から9月20までのセル範囲に色を付けるためにB1セルに9/10,C1セルに9/20と入力するとします。
その後にA列で日付の入力されている範囲を選択します。上記の場合でしたらA2セルがアクティブな状態になっていることでしょう。
そこで「ホーム」タブの「条件付き書式」から「新しいルール」を選択します。
表示の画面で「数式を使用して書式設定するセルを決定」を選択し、下の窓には次の数式を入力します。

=AND(A2>=$B$1,A2>=$C$1)

その後に同じ画面の「書式」をクリックして「塗りつぶし」のタブから好みの色を設定してOKします。

これで完成ですが、入力した式ではB1セルやC1セルの日付を変更すればそれに応じて条件付き書式の条件が自動的に変わり色付く日付の範囲も変わります。参考になりましたら幸いです。

Qパソコン履歴の削除方法

こんにちは。

パソコン履歴の削除方法について質問致します。。。。(機種はXPです)

通常、共用パソコンを使用してインターネットを閲覧した後、その履歴をセキュリティやプライバシーの関係から削除する場合は。。。。。


履歴欄→右クリックでインターネット閲覧履歴を全削除。

或いは、プロパティ→インターネット一時ファイル→Cookieの削除をクリック。

又はそのまま、プロパティ→全てのファイルの削除をクリック。

更に、ページを履歴に保存する日数は通常は20日に設定されているのでこれも0日に変更。

………と、いった感じでいつも逐一削除しておりますが、友人から「これでもまだ履歴を辿ろうと思えばいくらでも調べられるよ」と言われました。

パソコンは素人ですので、更に詳しく閲覧履歴を削除出来るのでしたら尚便利かな、と思いまして今回質問致しました。。。。。

詳しいインターネット閲覧履歴の削除方法を御存知の方がいらっしゃいましたら、初歩的な質問で大変恐縮ですが、お時間のある時に教えて頂ければとても嬉しいです。

よろしくお願い申し上げます。

こんにちは。

パソコン履歴の削除方法について質問致します。。。。(機種はXPです)

通常、共用パソコンを使用してインターネットを閲覧した後、その履歴をセキュリティやプライバシーの関係から削除する場合は。。。。。


履歴欄→右クリックでインターネット閲覧履歴を全削除。

或いは、プロパティ→インターネット一時ファイル→Cookieの削除をクリック。

又はそのまま、プロパティ→全てのファイルの削除をクリック。

更に、ページを履歴に保存する日数は通常は20日に設定されているのでこれ...続きを読む

Aベストアンサー

こちらのツールを使えば完全消去できますよ。
http://www.runexy.co.jp/products/acronis-privacyexpert-9/index.html

Qエクセルの「入力規則」→「リスト」の機能を、あるセルに使った時に、そのセルにリスト以外の文字も入力出来るようにするには?

エクセルの「入力規則」→「入力値の値」の
「リスト」の機能は便利な機能だと思いますが、
急遽、リスト以外の文字も入れなければいけない事態が
あった場合に、他の文字が入力できなかったりします。
私がファイルを全て管理す分にはリストの範囲を
広げたり修正したりできるのでいいのですが、
他の(あまりエクセルを使った事がない)人が
使う場合に、他の文字をいれたい場合に、入れれないで
戸惑ってしまうかもしれません。
ドロップダウンで文字を選択する機能も残しつつ、
手入力も出来るように機能を追加する事はできますでしょうか?

Aベストアンサー

実は私も同じことで以前なやんだのですが、実は単純に
リストを設定する際に、「エラーメッセージ」タブをクリック⇒「不正なデータが入力されたらエラーメッセージを表示する」に入ってるチェックをはずす、これで、リストから選ぶまた、リストにない値を入力するということができるようになります。


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

人気Q&Aランキング

おすすめ情報