[[20150228022109]] 『1週間のうち特定の曜日を利用する方の、1か月分の』(アリア) ページの最後に飛ぶ

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

 

『1週間のうち特定の曜日を利用する方の、1か月分の利用日を入力したい』(アリア)

こんばんは、初めて質問させていただきます。

印刷して使う表で毎日出席した方の情報などを記録しています。
日付を手書きで記入するための空欄が31行分あり、出席する日のみを手書きで記入しています。

例えば、2015年の2月のうち月,水,金に来られる方であれば

2月2日(月)
2月4日(水)
2月6日(金)
2月9日(月)
2月11日(水)
2月13日(金)

2月27日(金)

上記のような感じで、本当に出席した日のみを記入する方式になっています。

利用者によって利用する曜日は決まっているので、日付と曜日を連動させて、2月分の(月、水、金)に該当する日付をオートフィルなどで入力したいのですが、うまくいきません。

一か月分の日付を入力してからのフィルタリングで、月,水,金のみソートも試してみたのですが、フィルタリングをすると元の表自体まで短くなってしまい、予定以外の日などに
利用があった場合の記入するための空欄まで表示されなくなってしまうので、困っています。

どうか助言をお願いします。

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


 別のシートでフィルタして、コピーして張り付けたらどうですか?
(稲葉) 2015/02/28(土) 06:13

 数式で頑張ってみようとしましたが挫折して、結局マクロに逃げました。
 印刷範囲外(下記ではAA1以降)に印刷条件を書いて実行する例です。

 	AA	AB	AC	AD	AE	AF	AG
 [1]	2015/2/1
 [2]	月	火	水	木	金	土	日
 [3]	○		○		○		

 のように印刷条件をしてします。3行目はリスト選択にしておくとよいと思います。

 Sub Sample()
    Const 開始日位置 = "AA1"
    Const 曜日範囲 = "AA2:AG3"
    Const 記入範囲 = "A1:A31"

    Dim 曜日 As Range
    Dim 有効曜日
    For Each 曜日 In Range(曜日範囲).Resize(1, 7)
        If 曜日.Offset(1, 0) <> "" Then 有効曜日 = 有効曜日 & 曜日
    Next

    If Len(有効曜日) = 0 Then
        MsgBox "曜日が選択されていません。"
        Exit Sub
    End If

    Dim 開始日 As Date
    開始日 = CDate(Range(開始日位置).Value)

    Dim 日付 As Date
    日付 = 開始日

    Dim 記入セル As Range
    Set 記入セル = Range(記入範囲).Cells(1, 1)

    Range(記入範囲).ClearContents
    Range(記入範囲).NumberFormatLocal = "m月d日(aaa)"

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    Do While Month(開始日) = Month(日付)
        If InStr(有効曜日, Format(日付, "aaa")) > 0 Then
            記入セル.Value = 日付
            Set 記入セル = 記入セル.Offset(1)
        End If
        日付 = 日付 + 1
    Loop

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
 End Sub

(Mook) 2015/02/28(土) 10:54


 A1に「年」、A2に「月」を入れてもらうとして
 B1に =DATE(A1,A2,0)+CHOOSE(WEEKDAY(DATE(A1,A2,0)),1,2,1,2,1,3,2)
 B2に =IF(B1="","",IF(MONTH(B1)=MONTH(B1+CHOOSE(WEEKDAY(B1),1,2,1,2,1,3,2)),B1+CHOOSE(WEEKDAY(B1),1,2,1,2,1,3,2),""))
      必要行フィルドラッグ。
 	[A]	[B]	[C]
  [ 1]	2015	2/2	月
  [ 2]	2	2/4	水
  [ 3]		2/6	金
  [ 4]		2/9	月
  [ 5]		2/11	水
  [ 6]		2/13	金
  [ 7]		2/16	月
  [ 8]		2/18	水
  [ 9]		2/20	金
  [10]		2/23	月
  [11]		2/25	水
  [12]		2/27	金
  [13]			
  
(HANA) 2015/02/28(土) 11:34

皆様、ありがとうございます。無事に解決しました。とても助かりました。
(アリア) 2015/03/02(月) 00:03

コメント返信:

[ 一覧(最新更新順) ]


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