電子書籍の厳選無料作品が豊富!

エクセルで勤務表を作っています。
平等に休暇を取得するために、勤務表の中で連休(二連休・三連休)が何回あるか一目で分かるように表したいとき、どんな計算式を入れたらよいですか?

A 回答 (2件)

遅くなりました。


ツール→マクロ→VisualBasicEditorで挿入→標準モジュールを選び
表示される空白の部分に下記のプログラムを貼り付けると
ユーザー関数連休が使えるようになります。
但し条件があり連休は必ず隣接セルであること、
複数行にまたがらないことを条件にしてください。
例えば=連休(C5:AM5)等という感じで指定すれば
表示されると思うので試してください。
-------------------------------------------------
'
'連休をカウントします。
'2連休は1の桁に3連休は10の桁に4連休は100の桁に、5連休は1000の桁に返ります。
'

Function 連休(r As Range) As Long
Dim keta(10) As Integer, cnt As Integer

For i = 0 To 9
keta(i) = 0
Next
cnt = 0
For Each c In r
If c.Value > 9 Then
cnt = cnt + 1
Else
If cnt > 1 Then
keta(cnt - 2) = keta(cnt - 2) + 1
End If
cnt = 0
End If
Next
If cnt > 1 Then
keta(cnt - 2) = keta(cnt - 2) + 1
End If

For i = 0 To 6
連休 = 連休 + WorksheetFunction.Power(10, i) * keta(i)
Next
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
なかなか理解ができなくて、「#VALUE!」が出てしまいます。どこが違っているのでしょう。

お礼日時:2006/11/11 22:50

マクロは判りますか?一般の関数では難しいですがユーザー関数なら割と簡単ですから。

また休日のセルには「休」等の文字はありますか?

この回答への補足

マクロは不得意です。
日勤-1 休日-10 年休-11 特別休暇-12 数字を入れることによりその日の勤務が表示されます。
休日なら、10を入れます。
因みに初歩的なミスですが、二連休(10+10=20)で1回、三連休(10+10+10=30)で1回としてみたら、三連休を20と20で分けてしまい、二連休2回となってしまいました。
どうぞユーザー関数教えて下さい。

補足日時:2006/11/04 15:59
    • good
    • 0

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