• ベストアンサー

一月の連休の求め方

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.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

hinmi
質問者

お礼

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

その他の回答 (1)

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

マクロは判りますか?一般の関数では難しいですがユーザー関数なら割と簡単ですから。また休日のセルには「休」等の文字はありますか?

hinmi
質問者

補足

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

関連するQ&A