[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『土日祝日盆正月を除く日付』(take)
Sub getWeekDay() Dim regExp As Object Set regExp = CreateObject("VBScript.RegExp") regExp.Pattern = "[日土祝]" Dim lastLine As Long lastLine = Range("A65535").End(xlUp).Row Dim wdLine As Long wdLine = 2 For i = 2 To lastLine If Not regExp.test(Cells(i, "B").Value) = True Then Cells(wdLine, "C").Value = Cells(i, "A").Value Cells(wdLine, "D").Value = Cells(i, "B").Value wdLine = wdLine + 1 End If Next End Sub
を厚かましくコピペ使って作りました。
後、12月29日、30日、31日、1月2日、3日、8月13、14日、15日を
VBAで除く方法を教えて貰えませんか?
VBAは詳しくないので出来ればまたコピペ出来るようにお願い出来ませんか?
宜しくお願いします。
βさんありがとうございます。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
こんばんは
あちらにコメントした
この形で対応するなら、12月29日や30日のB列を 休(月) や 休(火) という形にして regExp.Pattern = "[日土祝]" を regExp.Pattern = "[日土祝休]" とすればいけるんじゃない?
これではだめですか?
(β) 2015/01/18(日) 00:36
一応、正攻法(??)も。 同じシートでも別シートでもいいので、祝祭日や会社の休みの日を yyyy/mm/dd で ずらっと登録し その日付リストに名前を "休日" と設定してください。
なお、以下のコードではB列の値は無視して、A列の日付から曜日を判定しています。
Sub Sample() Dim c As Range Dim z As Long Dim i As Long Dim x As Variant Dim flag As Boolean
Application.ScreenUpdating = False
i = 2 Range("C2:D2").Resize(ActiveSheet.UsedRange.Rows.Count - 1).ClearContents
For Each c In Range("A2", Range("A" & Rows.Count).End(xlUp))
z = Weekday(c.Value) flag = False
Select Case z Case vbSaturday, vbSunday flag = True Case Else x = Application.Match(c.Value, Range("休日"), 0) If IsNumeric(x) Then flag = True End Select
If Not flag Then Cells(i, "C").Resize(, 2).Value = c.Resize(, 2).Value i = i + 1 End If
Next
End Sub
(β) 2015/01/18(日) 01:23
◆関数による方法です(参考にしてください) ◆A3から直接「土日祝日」を除いた日付を表示させます 1)C2から祝日および、年始・年末・お盆休みを入力して、 2)そのリストに「祝日」と名前を付けます 3)A1に「西暦年」、A2に「月」を入力するようにします 4)A3=WORKDAY(DATE(A1,A2,1),1,祝日) 5)A4=IF(A3="","",IF(MONTH(WORKDAY(A3,1,祝日))=$A$2,WORKDAY(A3,1,祝日),"")) 6)A4の式を下にコピーします 7)B3=TEXT(A3,"aaa") 8)B3の式を下にコピー
________A_________B______C 1____2015_______________祝日 2______1______________2015/1/1 3____2015/1/5____月___2015/1/2 4____2015/1/6____火___2015/1/3 5____2015/1/7____水___2015/1/12 6____2015/1/8____木___2015/2/11 7____2015/1/9____金___2015/3/21 8____2015/1/13___火___2015/4/29 9____2015/1/14___水___2015/5/6 10___2015/1/15___木___2015/5/4 11___2015/1/16___金___2015/5/5 12___2015/1/19___月___2015/8/13 13___2015/1/20___火___2015/8/14 14___2015/1/21___水___2015/8/15 15___2015/1/22___木___2015/7/20 16___2015/1/23___金___2015/9/21 17___2015/1/26___月___2015/9/22 18___2015/1/27___火___2015/9/23 19___2015/1/28___水___2015/10/12 20___2015/1/29___木___2015/11/3 21___2015/1/30___金___2015/11/23 22____________________2015/12/23 23____________________2015/12/29 24____________________2015/12/30 25____________________2015/12/31
(maron) 2015/01/18(日) 07:59
もう目に留まらないかもしれませんが・・・
こちらでは問題なく処理できているので【VBAではうまく出来ませんでした・】が気になります。 もしかして・・休日のリストに名前を付けるというところを、そのリストがあるシート名を休日としたのかな・・??
(maron)さんの例を借りると、C2:C25 に 【名前の定義】で、「休日」(maronさんの場合は「祝日」) とするんですけど そうしてもなお、うまくいかなかったということでしょうかねぇ?
(β) 2015/01/18(日) 10:59
関数による方法が上がっていますが、
> 4)A3=WORKDAY(DATE(A1,A2,1),1,祝日)
これだと月初が平日であっても除外されてしまいませんか?
A3: =WORKDAY(DATE(A1,A2,0),1,祝日) ~~~ (JKT) 2015/01/18(日) 12:07
>これだと月初が平日であっても除外されてしまいませんか? ◆そうですね、買い物に行くのに急いでいたので(ちょっと言い訳・・・)
(maron) 2015/01/18(日) 12:17
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.