[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『土日祝日抜きの表を作成』(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.