Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
特定の曜日を抜き出す
投稿日時: 17/10/21 10:15:13
投稿者: VBA勉強中

  A  B   C
1祝日 休日 営業日
2 1  水   ? 
3   金土  ?
 
上記のようにセルに項目が入っています。
これをマクロによって以下のようにすることはできますでしょうか。
 
  A  B      C
1祝日 休日    営業日
2 1  水  月,火,木,金,土,日  
3   月木  火,水,金,土,日,祝
 
2行目・A列の祝日に1が入っていれば休みとみなし、営業日に祝は入りません。
3行目・A列の祝日に1が入っていなければ祝日営業とみなし、営業日に祝が追加されます。
B列の休日に入っている曜日は、営業日には入らないようにします。
 
どなたか、教えていただければ幸いです。
 
 

回答
投稿日時: 17/10/21 18:30:14
投稿者: simple

説明文をいれて投稿しなおしました。
 

Sub test()
    Dim s As String
    Dim holidays As String
    Dim h As String
    Dim k As Long
    Dim j As Long

    For k = 2 To 4  '適当に修正のこと。B列の最終行とか。
        s = "月,火,水,木,金,土,日,祝"
        
        ' 最初に指定した曜日を除外する
        holidays = Cells(k, 2).Value
        For j = 1 To Len(holidays)
            h = Mid(holidays, j, 1)
            s = Replace(s, h & ",", "")
        Next
        '祝日が対象なら、それを除外する
        If Cells(k, 1).Value = 1 Then s = Replace(s, ",祝", "")
        
        Cells(k, 3).Value = s
    Next
End Sub

投稿日時: 17/10/22 03:07:53
投稿者: VBA勉強中

simple様
 
Replace関数というものを知りませんでした。
これを使うと置換だけでなく、文字を入れたり削除したりすることができるんですね。
とても勉強になりました。
教えていただいたコードを用いて、自分でさらに応用していきたいと思います。
ありがとうございました!