[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カレンダーから、』(たぬき)
シート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
たとえば Sheet2のデータで10月が 3日、4日、6日、12日のみなら
この4つのみ抽出するの? 3日〜12日の土日除く分を抽出するの? それとも10月全部(土日除く)抽出するの? (GobGob) 2016/12/06(火) 14:10
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.