
表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、
マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。
まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。
これを自動で複製して、B1セルの日付を9月2日 9月3日…
シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り
ひとつのbookにしたいと考えております。
また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、
シート名に色を付けたいと思っています。
(因みにB1セルの日付はシリアル値で入れていて、
書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は
赤文字になるよう、別シートに祝日リストも作って
条件付き書式で設定してあります。)
Excelの関数は使えても、マクロは全く分からないので
どうかよろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3 です。
連続での投稿すみませんが、書き忘れたことを補足させていただきます。No.3 の帳票の日付を例えば「9/7」と指定すると、記録側で「メモ」の列が空白になっているので、そのままでは帳票側に「0」が表示されます。
これを表示したくないという場合は、F8 セルの書式を設定すれば、ゼロになるときだけ非表示にできます。具体的には、セルを右クリックするなどして「セルの書式設定 > 表示形式タブ > ユーザー定義 > 種類ボックス」に、「[=0]"";G/標準」などを記入します。
No.3
- 回答日時:
コピーしたり色塗ったりということは、No.1 さんが教えてくださっているとおり、至って簡単にできます。
ベストアンサーは辞退します。ですがその前に是非、1 か月 30 日分のシートを用意するというシステムが本当に最善なのか、見直してみてください。
例えば日誌だとか売上伝票だとか、何らかの毎日の記録を残すのが目的であれば、1 日 1 行ずつ記入していく「記録」シート 1 枚と、このシートから日付あるいは何らかのコードを指定することで特定の行の情報を写し取り、PDF や紙媒体に印刷する「帳票」シート 1 枚、合計でたったの 2 枚だけ用意すれば、事足りてしまったりしませんか?
添付図の例では、次式を記入しています。
F6 =vlookup($G$3,記録!$A$2:$D$4,2,)
G6 =vlookup($G$3,記録!$A$2:$D$4,3,)
F8 =vlookup($G$3,記録!$A$2:$D$4,4,)
あるいは、F6 の数式中の「2」という部分は、次のとおり関数で上書きしてもいいです。この場合、F6 セルをコピーし、G6、F8 にそれぞれ貼り付け。
F6 =vlookup($G$3,記録!$A$2:$D$4,match(f5,記録!$A$1:$D$1,),)
それと次回からは、業務委託ではなく、ぜひ始めから「質問を」してください。お待ちしています。

No.2
- 回答日時:
>・1日シートのB1に年/月/1の日付が記入してある
>これは書式の設定で、m月d日(aaa)と表示するようにしてあるのですが
>年/月/1と表示させていないため、うまくマクロが動いてくれないのでしょうか?
書式は関係ありません。勿論条件付き書式も無関係です。
>B1セルの日付が飛び飛びに
>こちらは日曜・祭日の色付けがおかしくなってしまいました。
補足された全てのご説明は、肝心の1日シートのB1セルの「具体的な中身」が「シリアル値で記入されていない」など、何かご説明とは異なる状況であることを示唆しています。
再掲:
>1日シートのB1に年/月/1の日付が記入してある
繰り返しますが書式は無関係で、まず次の通りに「記入」してから、マクロを実行してください。
1日シートのB1セルの今の内容を消去し、あなたのご説明の通りに
2013/9/1
と生日付を手で記入、セルの書式設定の表示形式は
m月d日(aaa)
としてもう一回マクロを実行します。

No.1
- 回答日時:
準備
・元になる「1日」シートを用意してある(全角半角の間違いも無いこと)
・1日シートのB1に年/月/1の日付が記入してある
・「別シート」シートのA列に祝日一覧が年/月/日で記入してある
手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
sub macro1()
dim i as integer
dim e as integer
dim m as integer
’前掃除
on error resume next
application.displayalerts = false
for i = 2 to 31
worksheets(i & "日").delete
next i
application.dispayalerts = true
on error goto 0
’準備
e = day(dateadd("m", 1, worksheets("1日").range("B1")) - 1)
worksheets("1日").select
’作業 1日シートタブの色付けも忘れず行う
for i = 1 to e
if i <> 1 then worksheets("1日").copy after:=worksheets(worksheets.count)
range("B1") = range("B1") + i - 1
activesheet.name = i & "日"
if weekday(range("B1")) = 1 _
or application.countif(worksheets("別シート").range("A:A"), range("B1").value) > 0 then
activesheet.tab.color = vbred
else
activesheet.tab.color = false
end if
next i
end sub
ファイルメニューから終了してエクセルに戻る
ALT+F8を押してマクロを実行する。
この回答への補足
括弧内の説明が、少し不足していたので補足しておきます。
B1セルの日付はシリアル値で入れていて、
書式で○月○日となるように表示していて、日付が日曜に当たる場合は
赤文字になるよう、条件付書式でWEEKDAY関数を入れ
祝日の場合は、「祝日リスト」シートを作り
条件付き書式でMATCH関数で設定してあります。
回答ありがとうございます。
早速使わせていただいたのですが、
B1セルの日付が飛び飛びになってしまい、
シート名30日のB1セル日付が、2014年12月10日になってしまいました。
シート名の方は2日 3日…と、きちんとキレイに複製できているのですが
こちらは日曜・祭日の色付けがおかしくなってしまいました。
準備として
・元になる「1日」シートを用意してある(全角半角の間違いも無いこと)
これはOKなのですが
・1日シートのB1に年/月/1の日付が記入してある
これは書式の設定で、m月d日(aaa)と表示するようにしてあるのですが
年/月/1と表示させていないため、うまくマクロが動いてくれないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
同じ名前(重複)かつ 日本 ア...
-
【マクロ】数式を入力したい。...
-
excel
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
エクセルシートの見出しの文字...
-
エクセルの複雑なシフト表から...
-
グループごとの個数をカウント...
-
エクセルについてどう関数を使...
-
表計算ソフトでの様式の呼称
-
エクセルでフィルターした値を...
-
勤怠表について ABS、TEXT関数...
-
【マクロ】excelファイルを開く...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】【画像あり】4つの...
-
オートフィルターの絞込みをし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
Office2021のエクセルで米国株...
-
【画像あり】オートフィルター...
-
vba テキストボックスとリフト...
-
他のシートの検索
-
【マクロ】【相談】Excelブック...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
【マクロ】左のブックと右のブ...
-
エクセルの関数について
-
エクセルのリストについて
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】excelファイルを開く...
-
【関数】3つのセルの中で最新...
-
エクセルの複雑なシフト表から...
-
【マクロ】【画像あり】❶ブック...
-
LibreOffice Clalc(またはエク...
おすすめ情報