[[20051026222803]] 『時間の計算』(みやび) ページの最後に飛ぶ

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

 

『時間の計算』(みやび)

セルの一つを30分または0.5時間として一列に24時間(A~AV)の表を作り、セル内に文字を入力した部分だけを自動で(AW)に合計時間が出るようにしたいのですがどうすればいいでしょうか?


 (MSE)
 =COUNTA(A1:AV1)*30
 とすれば分単位で、
 =COUNTA(A1:AV1)*0.5
 とすれば、時間単位で
 合計時間が出せると思いますが、
 いかがでしょう。


初歩的な質問にご指導頂きありがとうございます。
宜しければもう少し質問にご指導して頂けますでしょうか?

セルの一つをある部分は1時間と設定したいのですがどうすればいいのでしょうか?
また、セルを結合し網掛けをし先頭のセルに文字を入れた場合他のセルの情報は無効になってしまいます。どうすれば全てを有効に出来るのでしょうか?


(MSE)
 申し訳ありませんが、回答ではありません。
 私の読解力が足りないのか、いまいち質問の意味というか、
 どんなことがしたいのかが理解できません。
 具体的な例をあげるなど、もう少しわかり安く質問いただけると、
 助かります。


上手く説明出来なくて申し訳ありません。
1日の介護勤務時間を合計する表を作りたいと思います。
セルの一つを30分として24時間の表を作り一日の中で何時間働いたかを合計したいと
思っています。勤務時間は例を取れば7時〜8時(朝食・洗濯)11時〜14時(通院・昼食)17時〜18時(夕食)21時〜21時30分(就寝準備)とスケジュールを入れていった場合、一日の合計勤務時間は5時間30分になります。
セル一つを30分で設定していますので1時間の場合は二つのセルを結合して用件や
その用件に応じた網掛けを貼って勤務表を作るのですが、そうすると結合した場合は
先頭のセルのみ計算されるので30分としかカウントされません。他のセルにスペースなどをいれると出来るのですがそうすると先頭に入力した文字が枠内に表示されなくなりますし非常に面倒です。
スケジュールを入れ込んだ時(加えた時)に正確な合計時間を出せるようにしたいのです。
理解して頂けましたでしょうか?
ほんとうに面倒かけて申し訳ありません。
お付き合い頂ければうれしく思います。お願いします。


 24時間から、空白のセル数分の時間を引けばいいのでは?
(純丸)(o^-')b

 純丸さんに質問〜

 >1時間の場合は二つのセルを結合して
 と、結合を希望しているようなのですが、
 COUNTBLANK関数や、(範囲="") 等で行っても、先頭セル以外も空白のセルとして
 数えられてしまいました・・・
 純丸さんは、どのような方法をとって出来ました?

 それ以外思いつかなかった・・・orz
 (キリキ)(〃⌒o⌒)b


 m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m 
 ごめんなさぁい。検証せずに回答してました、、、。
 結合セルも数えてしまうんですね。みやびさん、すみません。
 上の私の回答は間違ってますので無視して下さい。
(純丸)(o^-')b

 ありゃりゃ、、、
 そうだったんですか。。。
 突っ込みすいませんでしたm(_ _)m

 マクロで考えてみました。
 シートモジュールにコピペ
'-------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim data As Variant, adrs As Variant
Dim x As Variant
Dim r As Long, c As Long
adrs = Target.Address
    If Target.Count <> 1 Then: Exit Sub
    If Left(Range(adrs), 7) <> "miyabi(" Then: Exit Sub
    data = Split(Range(adrs).Value, "(")(1)
    If data = "" Then: Exit Sub
    data = Left(data, Len(data) - 1)
    Application.EnableEvents = False
    Target = ""
    r = Range(data).Row
    c = Range(data).Column
    Do
        Cells(r, c).Select
        If Cells(r, c) <> "" Then
            x = x + Selection.Count
            c = c + Selection.Count - 1
        End If
        c = c + 1
    Loop Until c = Target.Column
    Range(adrs) = x / 2
    Application.EnableEvents = True
End Sub

 使用している Sheet のタブを、右クリック
 「コードの表示」を選んで、出てきた画面に上記コードをコピペ

 使用方法は、時間を出したいセル(今回の場合は AV )に
 =(イコール)を付けずに
 miyabi(A2:AV2)
 のように入力してみてください。

  ※無理やり、Select して、Selection をカウントしてみました・・・
 (キリキ)(〃⌒o⌒)b 今日はもうレス出来ません。。。


 >ありゃりゃ、、、
 >そうだったんですか。。。
 >突っ込みすいませんでしたm(_ _)m

 いえいえ、こちらこそご指摘ありがとうございました。

 さてこちらはユーザー関数を作ってみました。範囲の空白以外の
 セル数を数えます。結合セルは結合されているセル数で数えます。
 下記マクロを標準モジュールにコピペ後、=cellcnt(A2:AV2)*0.5 と
 入力して下さい。
 範囲にデータを入力したり消したりすれば再計算されますが、
 セルを結合したり解除したりしただけでは再計算されませんので
 注意が必要です。(F9キーを押してもダメです) 
(純丸)(o^-')b

 Function cellcnt(myr As Range) As Integer

 Dim i As Integer
 Dim r As Range
 For Each r In myr
   If r.Value <> "" Then
     i = i + r.MergeArea.Count
   End If
 Next r
 cellcnt = i

 End Function


 セルの内容は用件や時間であるのなら、0を使ってこんなのはいかが?
 先頭セルに0を入力し、AV列までコピー。
 ツール → オプション → 表示タブのウィンドウオプションでゼロ値のチェックをはずす。
 AWに =24-COUNTIF(A1:AV1,0)*0.5 とすると1.5等と時間で求められます。
 (かなれっと) 0入力が手間〜だとか、0値を表したいセルがある、だと役に立ちませんが^^;
 うっ 計算間違えた;; AWに =24-COUNTIF(A1:AV1,0)*0.25 *0.25じゃなく*0.5でした…
 訂正。。。

____
(キリキ)さん、(純丸)さん、ありがとうございます。
色々試してみましたが0を使っての計算が簡単そうで良かったです。
と言うよりも他のは実行してみると####がでたりmiyabiとそのまま出たり・・・。
きっと無知な私のやりかたが変なんだと思います。これから頑張って勉強させていただきます。
 そこでもう一つ教えて頂きたいのですが、0を使っての計算で実行しているのですが、介護時間の中で二人で入る仕事があります。例えば「15時〜16時入浴」の場合は二人のスタッフを派遣しますのでそこだけ×2の勤務時間を認識させて合計に入るようにする仕方ってありますでしょうか?何度も申し訳ありません。


 う〜ん^^; 
 入浴という文字が入っていればそれは必ずスタッフ2人なのか? とか 
 入浴は毎回1時間と決まっているのか? とか
 その他にスタッフの増員要件はないのか? とか
 時間帯によって同じ仕事でも人数増えたり減ったりするのか? などなど。
 ご提示の条件だけでは、表の仕様といいますか、基本的条件がハッキリしません。
 条件を整理され、簡単な表の例をつけて、問題点をご相談されてはいかがでしょう?
 ちなみに私が想定していたのは、下記のような表です。
    A    B    C    D    …    AU    AV    AW
 1  0時       1時       …    23時       合計
 2   0    0   文字(結合) …    文字  0     1.5  ←スタッフA
 3  文字  0    0    0    …     0    0     0.5  ←スタッフB

 と、これだけではナンなので。
 =24-COUNTIF(A1:AV1,0)*0.5+COUNTIF(A1:AV1,"*入浴*")*0.5 とすると、
入浴という文字が含まれるセルの数を数えて、0.5時間単位で加算します。
入浴の仕事は必ず1時間かかり、セルは結合される、という条件でしたら、
+COUNTIF(A1:AV1,"*入浴*")*0.5 の*0.5を削除されればいいかと思います。 (かなれっと)

コメント返信:

[ 一覧(最新更新順) ]


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