[[20161206130707]] 『カレンダーから、』(たぬき) ページの最後に飛ぶ

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

 

『カレンダーから、』(たぬき)

シート2に自作で作ったカレンダーがあります。

 A  B  C
1 2016/10/1 土 
2 2016/10/2 日
3 2016/10/3 月 特定A
4 2016/10/4 火

シート1に測定等の表があり

A1に2016年10月限
(書式でそのように表示しているので実際は2016/10/1と入れています。)

A3から以下、A1の10月限情報を元に、土日(祝日含む)を除いた日を付けたいです。
また、シート2でC列に特定Aが付いているものがあれば二行分と作成したいのです。(特定Aは月曜日対象,月曜日が祝日の場合は翌日になる)

    A
3  2016/10/3
4  2016/10/3
5  2016/10/4
6  2016/10/5
7  2016/10/6
8  2016/10/7
9  2016/10/12
10 2016/10/12
11 2016/10/13

知識付属のため、このように出す関数が分からなく行き詰ってしまいました。
何卒ご指導よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 Sheet2って必ず 1日〜月末までの日付が羅列されてるの?

(GobGob) 2016/12/06(火) 14:02


 >特定Aは月曜日対象,月曜日が祝日の場合は翌日になる

 特定Aは、Sheet2を見るまでもなく、決定されるルールなんですか?

 それとも、たぬきさんが実際に「特定A」と入れた日に限るんですか?

(半平太) 2016/12/06(火) 14:05


祝日はどこかにまとめて列挙しておき、その値範囲に「祝日」という名前を付けておきます。
A3セル以降の式は、以下。
=WORKDAY($A$1-1,ROW()-2,祝日)
(???) 2016/12/06(火) 14:07

あ、特定Aだと2行なんですか。ならばそのカウント数も考慮しないとですね。
(???) 2016/12/06(火) 14:09

 たとえば Sheet2のデータで10月が 3日、4日、6日、12日のみなら

 この4つのみ抽出するの? 3日〜12日の土日除く分を抽出するの?
 それとも10月全部(土日除く)抽出するの?
 
(GobGob) 2016/12/06(火) 14:10

数式だと面倒過ぎたので、マクロ案なぞ。Sheet1のシートモジュールに貼ってください。

 Sub test()
    Dim i As Long
    Dim iR As Long

    iR = 2
    With Sheets("Sheet2")
        For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
            If .Cells(i, "A").Value = WorksheetFunction.WorkDay(.Cells(i, "A").Value - 1, 1, Range("祝日")) Then
                iR = iR + 1
                Cells(iR, "A").Value = .Cells(i, "A").Value
                If .Cells(i, "C").Value = "特定A" Then
                    iR = iR + 1
                    Cells(iR, "A").Value = .Cells(i, "A").Value
                End If
            End If
        Next i
    End With
 End Sub

でもって、Sheet1とSheet2の日付を一致させ、一方だけ休日を除く、なんて事をしなければ、こんな面倒な事をしなくとも良いように思えるのですけどねぇ。 ロジックを考えるより、レイアウトを簡単にする事を考えては?
(???) 2016/12/06(火) 15:05


仕事しており、返事がおそくなりました。

>Sheet2って必ず 1日〜月末までの日付が羅列されてるの?

そうです。シート2でA列に2016/10/1から2017/9/31まで並んでおり、
C列に決定される日ではなく自ら特定Aと入れております。
今回は月曜日に特定A入れました。

普通にやるとどうしても特定A入れた所2行にならないから
どうやるのかなと思いました。

>それとも10月全部(土日除く)抽出するの?

そうです。土日除く平日を抽出です^^:

なぜこのようなことが起きたのかというと
こちらでシンプルなレイアウト(直接入力)するにしても
時間取られるので、このように出来れば、1つのデータだけではなく
様々なデータに活用できると思ったからです。。。

VBA確認します^^。

色々とすみません。

(たぬき) 2016/12/06(火) 15:39


 A3 =WORKDAY(A1-1,1)
 A4 =IF(A3="","",IF(AND(VLOOKUP(A3,Sheet2!$A$1:$C$16,3)="特定A",COUNTIF(A$3:A3,A3)=1),A3,IF(MONTH(WORKDAY(A3,1))=MONTH(A$1),WORKDAY(A3,1),"")))
 A4 下へコピー。

 で、いいの?
(GobGob) 2016/12/06(火) 15:57

 Sheet3のA列に2016/10/1から2017/9/30の期間内にある祝日を入れ、その範囲に「祝日」と名前を付ける

 そしてGobGobさんの式を勝手に拝借して
 A4:=IF(A3="","",IF(AND(VLOOKUP(A3,Sheet2!A:C,3)="特定A",COUNTIF(A$3:A3,A3)=1),A3,IF(MONTH(WORKDAY(A3,1,祝日))=MONTH(A$1),WORKDAY(A3,1,祝日),"")))
(bi) 2016/12/06(火) 16:38

コメント返信:

[ 一覧(最新更新順) ]


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