[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『土日祝日抜きの表を作成』(ca)
08年12月 A B C D E F G H I 〜・・・ 1 1日 2日 3日 4日 5日 合計 6日 7日 〜・・・ 2 ○県 3 4 3 4 1 13 2 3 〜・・・ 3 ○県 2 1 4 2 1 10 2 3 〜・・・ 4 ○県 3 2 1 3 1 10 2 3 〜・・・ 5 ○県 5 4 3 2 1 15 2 3 〜・・・ 6 合計 13 11 11 11 4 48 2 3 〜・・・
上記のような表を利用して、一週間毎に集計を取ってるのですが 数県毎に1ブックづつ分かれている為に 毎月毎日、日付を付けて作成するのが大変になってきました。
その為、日付だけはエクセルのカレンダーのように 月だけ入力すれば関数で自動入力出来ませんでしょうか?
後、カレンダーとは違い土日祝日は、無くし合計欄を作成できるでしょうか?
環境は、XPのエクセル2003です。 マクロは、自動入力とネット上からコピペしてイジるくらいです。
カレンダーの質問は多くあります。 全文検索で探してみてください。 [[20031018171450]] など参考になるものは多いと思います。 (bbq)
すいません。質問が悪かったようです。 タイトルを変更致しました。
正確には表を作成したいのですが、日付入力を関数かマクロで自動にし その上で土日祝日は、入力しない形にしたいのです。
また、週毎に集計(合計)の欄を挿入したいのです。
そういった事は可能でしょうか? (ca)
貼り付けたリンクが不適切でした。 検索すると色々参考になるスレッドはあります。 [[20030613134733]] (bbq)
そのシートの\Sheet1/を右クリック→コードの表示 下のコードをコピペ
戻ってA1に2008年12月などと書き込んでみませう。 どうでっか、こんな塩梅で? (弥太郎) '---------------- Option Explicit Option Base 1 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer, n As Integer, p_data As Date, data, ary, ary08 Dim t As Integer, ary_data, ary09, x() With Target If .Address(0, 0) <> "A1" Then Exit Sub If .Count > 1 Then Exit Sub Application.EnableEvents = False ary08 = Array("1/1", "1/14", "2/11", "3/20", "4/29", "5/5", "5/6", "7/21", "9/15", _ "9/23", "10/13", "11/3", "11/24", "12/23") ary09 = Array("1/1", "1/12", "2/11", "3/20", "4/29", "5/4", "5/5", "5/6", "7/20", "9/21", _ "9/22", "9/23", "10/12", "11/3", "11/23", "12/23") data = StrConv(Replace(.Value, "年", "/"), vbNarrow) ary = Array(31, IIf(Year(data) Mod 4 = 0, 29, 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) Range("b1").Resize(, 31).ClearContents ary_data = IIf(Format(data, "yy") = "08", ary08, ary09) For n = 1 To ary(Month(data)) p_data = Format(data, "yyyy/m") & "/" & n If IsError(Application.Match(Format(p_data, "m/d"), ary_data, 0)) And _ Format(p_data, "aaa") <> "日" Then t = t + 1 ReDim Preserve x(1 To t) x(t) = p_data If Format(x(t), "aaa") = "土" Then x(t) = "合計" t = IIf(n = 1, t - 1, t) End If End If If n > 1 Then If n = ary(Month(data)) And x(t) <> "合計" Then t = t + 1 ReDim Preserve x(1 To t) x(t) = "合計" End If End If Next n Cells(1, 2).Resize(, t).NumberFormatLocal = "d日" Cells(1, 2).Resize(, t) = x End With Application.EnableEvents = True End Sub
bbq様、何度もお返事ありがとうございます! 悩んでいるところへの参考は大変助かります!
弥太郎様、うまく動きました! ありがとうございます!
何度か試してみたところ 土曜が1日の月は 「インデックスが有効範囲にありません。」とエラーになってしまいますが どのように直せばいいでしょうか?
頂いたお答えにわがままを言ってすいません。
デバックを押すと If n = ary(Month(data)) And x(t) <> "合計" Then の部分が黄色くなっています。
(ca)
遅くなってすびません。出かけておりました。 えと、n>1をn>20とでもしておけばエラーは出まへんワ。 (弥太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.