- ベストアンサー
一月の連休の求め方
エクセルで勤務表を作っています。 平等に休暇を取得するために、勤務表の中で連休(二連休・三連休)が何回あるか一目で分かるように表したいとき、どんな計算式を入れたらよいですか?
- みんなの回答 (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
その他の回答 (1)
- yokomaya
- ベストアンサー率40% (147/366)
マクロは判りますか?一般の関数では難しいですがユーザー関数なら割と簡単ですから。また休日のセルには「休」等の文字はありますか?
補足
マクロは不得意です。 日勤-1 休日-10 年休-11 特別休暇-12 数字を入れることによりその日の勤務が表示されます。 休日なら、10を入れます。 因みに初歩的なミスですが、二連休(10+10=20)で1回、三連休(10+10+10=30)で1回としてみたら、三連休を20と20で分けてしまい、二連休2回となってしまいました。 どうぞユーザー関数教えて下さい。
お礼
ありがとうございます。 なかなか理解ができなくて、「#VALUE!」が出てしまいます。どこが違っているのでしょう。