[[20051116131027]] 『L列に日付を入れるとM列に○がインプット』(よみの) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『L列に日付を入れるとM列に○がインプット』(よみの)

[Lの列に日付を入れると隣のM列のセルに○がインプットされる方法、ほか]

以下の使用法を考えています。
良い方法がありましたら是非ご教示下さい。
excelの初心者ですがなにとぞよろしくお願いいたします。

 1)Lに日付を入れるとMに自動で○がつく
 2)Lに日付を入れるたびにN列に回数がカウントされる
   (日付を削除したりする時はカウントされない。日付入力時のみ)
 3)M、N列に文字や数字とか記入されているものは
   普通のセルのようににデリートすることが出来る(日付は残っている)

   A   B   ・・・・・・ k    L   M    N ・・・
 1 番号 名前         進度  日付  貸出中 回数 ・・・
 2 1   山田         1   5/6   ○   1  ・・・
 3 1   川田         1   6/6   ○   2  ・・・

 無理なお願いを言うようですが、是非よろしくです。

〔Excel2003,Windows2000〕


 こんにちは
3つの条件を全て満たす回答ではありませんが、とっかかりに

 1)と3)の条件を満たすには、こんな方法はどうでしょう?
M列に条件付書式を次のように設定する。
 =COUNTA($L2:$M2)=1 として塗りつぶしの書式を設定する。
 こうすると、日付を入力するとM列が塗りつぶされ、M列に数値や文字が入力されると
塗りつぶしの色が消えます。

 2)は関数でするなら、
 作業列を使用して
O列に =COUNTA($L2:$M2) として O列を非表示に
N列に =IF($O2<>1,"",COUNTIF($O$2:O2,O2)) とすると
       L      M    N   O 
1     日付	貸出中	回数	
2    月6日		1	1
3   6月6日	故障		2
4   6月7日		2	1
5  6月10日		3	1

 このようになりますが、
3)のようにN列を消すと、そこに入力された関数自体も消えますので、マクロに
なると思います。(マクロの達人の回答をお待ちください)
                             (oni) 14:15式を訂正しました。(*_ _)人


 回答ではありませんが。
 最新の情報のみあればよい、というのであれば回数カウントでもよいのでしょうが、
 データベースとして残したい、月別に集計したい、前年比も出してみたい、etc.
 という要望が出た時に、過去の履歴が残っていないのでは、それも叶わず。
 すべての情報をただ打ち込むデータシートもあってよいのでは、と老婆心。
 (代奈)


 こんにちわ。

 >2)Lに日付を入れるたびにN列に回数がカウントされる
 >  (日付を削除したりする時はカウントされない。日付入力時のみ)
 >3)M、N列に文字や数字とか記入されているものは
 >  普通のセルのようににデリートすることが出来る(日付は残っている)

 2)入力されている日付と違う日付が入力された場合ですか?
 3)「文字や数字とか記入されているもの」とは、L列の日付で導かれた値のことですか?
 (seiya)


 seiyaさんの仰る通り、チョット理解できていないかもしれませんが、、、
 σ(^o^;)なりに、解釈して作ってみました。

 シートモジュールにコピペ
'--------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Target.Column <> 12 Then: Exit Sub
If Target.Count <> 1 Then: Exit Sub
Application.EnableEvents = False
r = Range("A" & Rows.Count).End(xlUp).Row
If IsDate(Target) = True Then
    Target.Offset(, 1) = "○"
    If r > Target.Row Then
        r = Target.Row
    End If
    Target.Offset(, 2) = Application.WorksheetFunction.CountIf(Range(Cells(2, 13), Cells(r, 13)), "○")
End If
Application.EnableEvents = True
End Sub

 (キリキ)(〃⌒o⌒)b


 シートモジュールに貼り付けてください。

 Private myDate

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 myDate = Target.Cells(1, 1).Value
 End Sub

 Private Sub Worksheet_Change(ByVal Target As Range)
 With Target.Cells(1, 1)
    If .Row < 2 Or .Column <> 12 Then Exit Sub
    If Not IsDate(.Value) Then Exit Sub
    If IsEmpty(.Cells) Then Exit Sub
    If .Value = myDate Then Exit Sub
    .Offset(, 1) = "○"
    .Offset(, 2) = .Offset(, 2) + 1
 End With
 End Sub

 (seiya)


oniさん、代奈さん、seiyaさん、キリキさん

 早速の回答有難うございます。
  seiyaさん、キリキさんのおっしゃるとおり説明不足でしたすみません。

 >>2)Lに日付を入れるたびにN列に回数がカウントされる
 >>  (日付を削除したりする時はカウントされない。日付入力時のみ)
 >>3)M、N列に文字や数字とか記入されているものは
 >>  普通のセルのようににデリートすることが出来る(日付は残っている)

 >2)入力されている日付と違う日付が入力された場合ですか?
 >3)「文字や数字とか記入されているもの」とは、L列の日付で導かれた値のことですか?

 まさしくそうです。
 2)は新しい日付がどんどん上書きされていく予定ですので、
   入力されている日付と違う日付が入力された場合のみカウントされるということです。
 (いちばん最初に入力した時はカウントは1ですよね。以降、入力されている日付と違う
  日付を入力(更新?)するたびにカウントされる感じです。様は更新回数がわかる形にしたいのです。)
 3)L列の日付で導かれた値のことです。M列の○とN列のカウント数を削除してもL列はそのままということです。
 (文字、数字というのは適切ではないので訂正します。M列の○とN列のカウント数ですね。すみません)

いちばんイメージに近いのはseiyaさんのです。有難うございました。他の皆さんのも大変勉強になりました。有難うございます。感謝です。

 (よみの)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.