
日報のシートをマクロにて100枚コピーしています。それぞれのシート名は日報1日目、日報2日目、、、のように書いています。
①その100枚ごとの日報の日付を書く場所(C2)に入力があれば、別のシート名「日報チェック表」の日報提出チェック表の日報日の欄に自動で反映されるようにしたいです。曜日は関数で表示されるようにしているので大丈夫です。
②そして実際稼働日&日報未提出の日付欄には手打ちで日付を書いていくようにしているのですが、G列にはあってB列にはない日付の横には自動で「×」がつくようにしたいです。
現場ごとに日報シート100枚をマクロでコピーしてから書くので関数ではエラーになってしまいます。
マクロなどで出来る方法はないでしょうか?


No.3ベストアンサー
- 回答日時:
以下のマクロを標準モジュールへ登録してください。
---------------------------------------------------------------
Option Explicit
Public Sub 日報チェック表集計()
Dim sh As Worksheet
Dim ws As Worksheet
Dim wday As Long
Dim row As Long
Dim sname As String
Dim pname As String
Set sh = Worksheets("日報チェック表")
sh.Range("B3:B103").Value = ""
row = 3
pname = ""
For wday = 1 To 100
sname = "日報" & wday & "日目"
Set ws = Worksheets(sname)
If ws.Cells(2, "C").Value = "" Then Exit For
sh.Cells(row, "B").Value = ws.Cells(2, "C").Value
row = row + 1
pname = sname
Next
MsgBox (pname & "迄集計完了")
End Sub
-----------------------------------------------
H列ですが、
H3へ
=IFERROR(IF(MATCH(G3,$B$3:$B$103,0),""),"×")
と記入し、オートフィルで下へコピーしてください。
お世話になっております!
長い間お世話になっているこの書類(ブック)もtatsu様のご教授で完成に近づいており、あとは私が元々入れていた計算式などをもっと簡潔にかつのちに追加入力があった時の対処などを考えて書き直すために調べているところです。
tatsu様の助けばかりで自分のふがいなさに濛々ですが、教えていただいたマクロややり方など別の書類作成時に必ず役に立たせるように頑張ります。ありがとうございました^^

No.4
- 回答日時:
No3です。
一部訂正します。H列は
H3へ
=IF(G3="","",IFERROR(IF(MATCH(G3,$B$3:$B$103,0),""),"×"))
としてください。
No.2
- 回答日時:
こんにちは
直接の回答ではありません。
>日報シート100枚をマクロでコピーしてから書くので関数ではエラーになってしまいます。
シート名は決まっているようなので、例えば、集計用のシート内に作業用として各シートのC2だけ抜き出した表を作成しておいて、チェック表はそれを参照して作成するようにすれば、関数だけでも問題なく処理できるように思います。
(関数内でエラー処理を行う必要はあるかもしれませんが…)
ご提示の図だとチェック表を2種類作成しているようですが、同じ内容にしか見えませんね。
例えば右側の表にすべての日にちが並んでいるものとして、存在するものを〇しないものを×表示するだけでも事足りるように感じられます。
場合によっては提出(あるいは未提出)の表示色を変えるとか(条件付き書式等)すれば、さらに識別しやすくなるのかも知れません。
仮にご質問の通りマクロで処理するにしても、
>日報シート100枚をマクロでコピーして~~
とのことですので、そのマクロで同時に各シートのC3の値をチェックすれば済みそうに思いますが・・?
コピーの処理を、1シートずつ順に行っているのなら、そのループ内でC3セルを参照すればよいですし、まとめてコピーしているのなら、その後で
For Each sht In Worksheets
If sht.Name <> "日報チェック表" Then
~~~~~~
~~~~~~
のような処理を行えば、各シートを順にループすることができます。
※ 作成した表を、どのような使い方をするのかがわからないので、勝手な印象で書いていますが、的外れでしたらスルーしてください。
あなた様のおっしゃる通りですね^^:
エクセルがまだ若輩者の自分に重要な書類つくりを頼まれてあたふたしていまして、もっとわかりやすくかつ簡潔な表を早く作れるようになりたいです・・
ご意見してくださりありがとうございました!
No.1
- 回答日時:
エラーが出るならエラー処理を関数で行えば良いだけ。
そこにマクロが出てくる意味が分からない。
Excel2007以降を使っているなら
IFERROR関数
が使える。
これはとても便利で、
IFERROR( 数式または数値 , 数式または数値がエラーの場合の値または数式 )
と2つ引数を指定するだけです。
VLOOKUP関数やMATCH関数を使って一致する値がない場合はエラーになるので
エラーになったときの処理を簡単に記述できる。
てことでマクロには、G列に入力をしたらその後マクロを実行したかが分かるような工夫をするだけで良い。
(G列入力中はH列のセルが薄い青色で塗りつぶされ、マクロを実行したら塗りつぶしが解除される…など)
・・・余談・・・
>曜日は関数で表示されるようにしているので大丈夫です。
関数不要なんだよなあ。
セルの表示形式のユーザー書式で"(aaa)"を指定するだけなんだよね。
だから曜日の列、たとえばC2セルなら
=B2
とするだけでいい。
ただしB列は”年”を含めた「日付」である必要がある。
”年”を表示したくないときはB列に対してセルの表示形式のユーザー書式で”m月d日”を指定すれば良い。
日報云々という事なので”年”情報を含ませることを勧めます。
詳しく回答してくださってありがとうございました!
エクセルの集計や管理に対しての日付の書き方などとても勉強になりました。
まだまだ使い下手の私には教えてくださって感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
空白のはずがSUBTOTAL関数でカ...
-
同じ名前(重複)かつ 日本 ア...
-
【マクロ】数式を入力したい。...
-
if関数の複数条件について
-
excel
-
Excelで4択問題を作成したい
-
エクセルシートの見出しの文字...
-
表計算ソフトでの様式の呼称
-
空白処理を空白に
-
【マクロ 画像あり】Exact関数...
-
エクセルでフィルターした値を...
-
【マクロ】既存ファイルの名前...
-
勤怠表について ABS、TEXT関数...
-
【マクロ】実行時エラー '424':...
-
Excel 複数のセルが一致すると...
-
Excel 日付の表示が直せません...
-
【マクロ画像あり】❶1つの条件...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報