アプリ版:「スタンプのみでお礼する」機能のリリースについて

休日日数(連休日数)を表示させたいです。

A列には日付がカレンダー通りに並びます。
(日付が飛ぶ・前後するという事はありません)

B列にはA列に並んだ日付に対応して土日祝日を判定し、該当する場合1が表示されます。

そこで、C列にB列の小計を出したいのですが、どうしたら良いでしょうか?
(例 単独の休日なら1、土日なら2、土日を含む3連休なら3)

但し、表示箇所は小計するセルの2行上(2日前)のセルとしたいです。
よろしくお願いします。

A 回答 (2件)

簡単な方法で・・・。



まず、最大の連休日数を考慮します。
ゴールデンウィーク・お盆・年末年始でしょうか。
これを固定しないと難しいと思います。

C列の(A列に日付のある)一番上に、下記の指揮を入力します。(3行目とします)

=IF(B3=0,0,IF(B4=0,1,IF(B5=0,2,IF(B6=0,3,IF(B7=0,4,IF(B8=0,5,IF( ... )))))))

「...」のところは、同じく「IF(B?=0,n,IF(」が再帰的に入ります。
IF()のネストの最大値がExcelのバージョンによって違いますので、それ以上はできません。

別海としてはVBAで関数を作成する方法です。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
大変参考にになりました。

お礼日時:2008/09/14 13:04

関数でやると難しいのではないかな。

下記で言う「連」の開始行は順次動くが、これをうまく捉えるのが難しい。
ーー
>表示箇所は小計するセルの2行上(2日前)のセルとしたいです
の意味が良くわからない。具体例を挙げて説明のこと。
「連」の開始の2行前(上)だと、平日行に来ることも起こり、見た目混乱すると思うので、そういうことではないでしょうが。
ーー
質問は、下記のように抽象化できるのかと思う。
A2以下に「1」が、単独、2行連続、3行連続など空白セルを「連」の間に挟んで入っている。「連」の行数を「連」の開始開始行のB列に入れる(出す)ことにする。
こういうことでよいかな。
A列  B列  
11


12
1


12
1

13
1
1

11
ーー
標準モジュールに
Sub test01()
d = Range("A65536").End(xlUp).Row
dt = 0
For i = 2 To d
If Cells(i, "A") = "" Then
If dt = 0 Then
Else
If i - dt < 2 Then
p = 2
Else
p = i - dt
End If
Cells(p, "B") = dt
dt = 0
End If
Else
dt = dt + 1
End If
Next i
Cells(i - dt, "B") = dt
End Sub
をコピペして実行。
結果は上記B列。
ーー
上記コードで質問者の場合にあわせること。
コードの中に列を示す「A」「B」の文字があるが
その「A」を「>該当する場合1が表示されます。」の列の列番号に置き換えること。
「B」は結果を出したい列の列番号に置き換えてください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
大変参考にになりました。

お礼日時:2008/09/14 13:04

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