プロが教える店舗&オフィスのセキュリティ対策術

エクセルで複数シートを別のシートに一覧表として自動で反映されるようにしたいです。
関数や、マクロなら初心者なのでコードを書いていただけたら助かります
わからなくて本当に困っていますのでどうかよろしくお願いいたします・・・


①30日分のシート表を←に一覧として並べていきたい
②同じ色の場所に反映されるようにしたい
③会社名と人名はAのシートには5セット分あるから悩んでいます。シートBをする意味は、一人一人の動きや時間を一覧として出していきたいので、次郎、六郎、七郎はシートAでは1行ですがシートBには3行使って映させていきたいです
④日付はシートAが30シート=30日分なので10/1がシート1なら10/1~10/30までのシートAがあるので日付も自動で入れたい
⑤空白の分と、次のシートに対してもすべて詰めて反映させたい

「エクセルで複数シートを別のシートに一覧表」の質問画像

質問者からの補足コメント

  • tatsu99様素晴らしいです!!感動しました!!何もかも完璧です!私は勉強身の若輩者なので本当に感謝いたします。ベストアンサーしたいのですが、もしよろしければこのブックのほかの作業も教えてくださいませんか? tatsu99様の書いたコードを書き直してしてみたのですが」なにがなにやら・・・
    ★日報1~30の雛形にある表「工事内訳」「リース」「廃棄追加」「打ち合わせ・議事録」「相殺・修繕」をそれぞれ同じような感じでそれぞれの別シートに一覧化していきたいです。
    ①日報シートのリースの単価列、廃棄の単価列、金額列には計算式が入っています。
    一応画像を添付しますがやはりここまで沢山となると難しいでしょうか・・

    「エクセルで複数シートを別のシートに一覧表」の補足画像1
      補足日時:2017/09/30 01:02
  • .

    「エクセルで複数シートを別のシートに一覧表」の補足画像2
      補足日時:2017/09/30 01:03
  • .

    「エクセルで複数シートを別のシートに一覧表」の補足画像3
      補足日時:2017/09/30 01:04
  • .

    「エクセルで複数シートを別のシートに一覧表」の補足画像4
      補足日時:2017/09/30 01:04
  • .

    「エクセルで複数シートを別のシートに一覧表」の補足画像5
      補足日時:2017/09/30 01:05

A 回答 (9件)

>ファイルの中の「その他集計」シートの質問と「廃棄処分一覧」の質問は対応はできませんか?


下記URLへアップしました。
http://firestorage.jp/download/f4bb4e2f735dd47fd …
パスワード:goo

その他集計は、材料・経費等と自社車両使用・運転者について作成しました。
高速代・燃料等~使用道具・機械については、あなたの方で作成してください。
(マクロ内に作成箇所が明記してあります。同じようにすれば作成できます)

廃棄処分一覧は、module3に作ってあります。
計をsum関数で求めていますが、マクロで計も集計するようにしています。
計の行に埋め込んだ関数(SUM)を削除してください。
もし、計の行を関数で求めるなら
1)計の行のクリアをやめる
2)マクロで計を集計している箇所を削除する
の作業が必要になります。
    • good
    • 0
この回答へのお礼

tatsu99様 長い間本当に無理を言ったのにもかかわらず時間を割いて教えてくださってありがとうございました。おかげで会社にとって大事なブックになりそうです!感謝しかありません、これからたくさん勉強してtatsu99様のように出来る人材になれるように頑張ります。本当にありがとうございました。

お礼日時:2017/10/05 21:44

下記URLへアップしました。


http://firestorage.jp/download/807d67e1644968ae5 …
パスワード:goo

対応した部分ですが、このgooの質問のスレッドに提示されていた部分は、すべて対応しています。
ファイル中に記述されていた質問は、Q6(100日分のコピー)、Q7(日報1日目へダブルクリック時の処理の組み込み)のみ対応しています。
Q6ですが、日報1日目を日報2日目から日報100日目までコピーします。
(最初に日報2日目から日報100日目を全て削除しますので、以前の日報2日目から日報100日目は全てなくなります)

廃棄追加のシートについては、提示例とexcel内のセルの位置が違っていましたので、excel内の当該シートを優先して作成しました。
(マニフェスト番号が2つある方です)

リースについては、提示例で示された部分の単純なコピーのみ対応しています。
(リースシート中に記述されていた要望には対応していません)

一旦、excel2007の形式に変換していますので、このファイルは劣化している可能性があります。マクロ以外の部分は、運用には使用しないでください。(マクロだけを抜き取ってください)
    • good
    • 1
この回答へのお礼

ファイルの中の「その他集計」シートの質問と「廃棄処分一覧」の質問は対応はできませんか?
後は試行錯誤で試し中なのですが、上記の二つは100日分のシートの集計表なのでマクロを使用するほかなくて困っています。。

お礼日時:2017/10/03 01:17

>アップロードしたURLは

http://firestorage.jp/download/543f4b2d8e8dbabfc …です。
>やり方が違っていたら連絡ください(汗)

ファイルのダウンロードが完了しました。
正しくアップロードできています。

このファイルを開こうとしたところ、こちらのexcelのバージョンが古いため(excel2007)
正しく、開けませんでした。
使用版のexcel2013を使用すると正しく開けたのですが、既に試用期間が期限切れになっており、
多くの機能が制約されており、excel2007用に変換することができませんでした。
再度、excel2013の全機能が使用可能になるように現在調整中です。従って、回答までに時間がかかると思いますので、
ご了承ください。

No6の質問の回答をまだ、いただいておりません。こちらもお願いします。
    • good
    • 0
この回答へのお礼

そんな難しい問題があるのですね。私がファイルの種類をEXCEL97-2003ブック に変えて保存して再度アップロードしても無理なのでしょうか?
tatsu99様ばかり手間をさせているので申し訳ないので私が何ができることがあればと。

追加の質問の方ですが、「工事項目」の欄の文字列が「⑫追加」という文字であるならです。リストにして選択する形なので文字が違ってたりとかはないと思います。

お礼日時:2017/10/02 12:59

追加の質問です。


作業追加ですが、
C列の「工事項目」に「追加」という文字が入ってたら「作業追加」シートに・・・・
となっていますが、これは、
①C列の「工事項目」に"追加"という文字が含まれるなら・・・
②C列の「工事項目」が"追加"という文字であるなら・・・・

上記①②のどちらの意味でしょうか?
    • good
    • 1

No4です。


>★日報1~30の雛形にある表「工事内訳」「リース」「廃棄追加」「打ち合わせ・議事録」「相殺・修繕」をそれぞれ同じような感じでそれぞれの別シートに一覧化していきたいです。

テスト環境をこちらで作成するのが大変なので、実際のファイルを直接操作したいと思います。
(又、そのほうがカラム位置等の間違い等がなくなります)
申し訳ありませんが、サンプルのブックを下記URLを使用してアップロードしていただけませんでしょうか。
http://firestorage.jp/

私が、作成したマクロのブックを下記URLにアップロードしました。
http://firestorage.jp/download/d302773daad260d91 …
ここからダウンロードしてください。パスワード:goo

同じようにして、サンプルのブックをアップロードしていただけませんでしょうか。(個人情報などが洩れぬようデータは改ざんしてください)
実際に内容が記入されたものが良いです。(どのように記入されているのかも分かるため)
記入内容は全て、個人情報(会社情報)に絡むものは、適当に改ざんしてください。
日報は、1日目と2日目のみデータが記入されていれば構いません。
    • good
    • 1
この回答へのお礼

日が空いてしまい申し訳ありません。個人情報の書き換えや質問などを書き足すのに時間がかかってしまいました。
ファイル名「題名考案中」のエクセルファイルを貼られていたURL(http://firestorage.jp/)から入りアップロードしてみたのですが無事見れましたでしょうか?
アップロードしたURLはhttp://firestorage.jp/download/543f4b2d8e8dbabfc …です。
やり方が違っていたら連絡ください(汗)
エクセルの中身はシート名が赤色にしているシートが作成に難儀している箇所で、計算式やマクロなどを使って従業員の方がわかりやすい雛形に作っていきたいです。お力を貸していただけれたらと思っています。

お礼日時:2017/10/02 10:18

2回目です。


-----------------------------
'1行分の日報集計
Public Sub edit1line(ByVal row As Long)
Dim kaicol As Variant
Dim jincol As Variant
Dim i As Long
Dim kai As String
Dim jin As String
Dim ctr As Long
kaicol = Array("H", "K", "N", "P", "S")
jincol = Array("J", "M", "O", "R", "U")
'作業内訳が空白なら処理しない
If ws.Cells(row, "D").Value = "" Then Exit Sub
'作業時間チェック
If ws.Cells(row, "V").Value = "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "作業時間未設定")
ws.Activate
ws.Cells(row, "V").Select
End
End If
ctr = 0
'5人分繰り返す
For i = 0 To UBound(kaicol)
kai = ws.Cells(row, kaicol(i)).Value
jin = ws.Cells(row, jincol(i)).Value
If kai <> "" And jin <> "" Then
sh.Cells(lsrow, "A").Value = ws.Cells(2, "C").Value '日付
sh.Cells(lsrow, "B").Value = ws.Cells(row, "C").Value '作業項目
sh.Cells(lsrow, "C").Value = ws.Cells(row, "D").Value '作業内訳
sh.Cells(lsrow, "D").Value = ws.Cells(row, kaicol(i)).Value '会社名
sh.Cells(lsrow, "E").Value = ws.Cells(row, jincol(i)).Value '人名
sh.Cells(lsrow, "F").Value = ws.Cells(row, "V").Value '作業時間
lsrow = lsrow + 1
ctr = ctr + 1
ElseIf kai <> "" And jin = "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "人名" & i + 1 & "未設定")
ws.Activate
ws.Cells(row, jincol(i)).Select
End
ElseIf kai = "" And jin <> "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "会社名" & i + 1 & "未設定")
ws.Activate
ws.Cells(row, kaicol(i)).Select
End
End If
Next
If ctr = 0 Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "会社名・人名未設定")
ws.Activate
ws.Cells(row, kaicol(0)).Select
End
End If
End Sub
-------------------------------
日報に未記入項目があった時、その箇所で停止します。
その場合は、その内容を修正し、再度、マクロを実行してください。
マクロは何度でも実行可能です。
    • good
    • 0

新しい質問が削除されたので、こちらに、回答します。

(個人宛の質問は規約違反になるようです)
標準モジュールに以下のマクロを登録してください。
文字数オーバーなので2回に分けて投稿します。
---------------------------------------
Option Explicit
Dim sh As Worksheet '人役一覧シート
Dim ws As Worksheet '日報シート
Dim lsrow As Long '人役一覧の行番号
Public Sub 日報集計()
Dim maxrow As Long '最大行番号
Dim day As Long '日数
Dim name As String '日報名
Dim name2 As String '集計済み日報名
Set sh = Worksheets("人役一覧")
maxrow = sh.Cells(Rows.Count, "A").End(xlUp).row '最終行を求める
If maxrow > 1 Then
'A~F列を最終行までクリア
sh.Range("A2:F" & maxrow).Value = ""
End If
lsrow = 2
name2 = ""
'1日~30日まで繰り返す
For day = 1 To 30
name = "日報" & day & "日目"
Set ws = Worksheets(name)
'1日分の日報を集計する
If edit1day() = False Then Exit For
name2 = name
Next
If name2 = "" Then
MsgBox ("集計対象日報なし")
Else
MsgBox (name2 & "迄集計完了")
End If
End Sub
'1日分の日報集計
Public Function edit1day() As Boolean
Dim row As Long
edit1day = False

'日付が空白なら集計対象外
If ws.Cells(2, "C").Value = "" Then Exit Function
'11行目~24行目まで繰り返す
For row = 11 To 24
'1行がデータのある行なら集計を行う
If CheckState(row) = True Then
Call edit1line(row)
End If
Next
edit1day = True
End Function
'未設定状態チェック
Private Function CheckState(ByVal row As Long) As Boolean
CheckState = False
Dim val1 As String
Dim val2 As String
Dim val3 As String
val1 = ws.Cells(row, "C").Value '工事項目
val2 = ws.Cells(row, "D").Value '作業内訳
val3 = ws.Cells(row, "V").Value '作業時間
'3項目揃っているので正常
If val1 <> "" And val2 <> "" And val3 <> "" Then
CheckState = True
Exit Function
End If
'作業内訳と時間が未記入なら処理しない(正常)
If val2 = "" And val3 = "" Then Exit Function
'以下、異常ケース
If val1 = "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "工事項目未設定")
ws.Activate
ws.Cells(row, "C").Select
End
End If
If val2 = "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "作業内訳未設定")
ws.Activate
ws.Cells(row, "D").Select
End
End If
If val3 = "" Then
MsgBox (ws.name & "の" & row & "行" & vbLf & "作業時間未設定")
ws.Activate
ws.Cells(row, "V").Select
End
End If
End Function
    • good
    • 0

補足ありがとうございました。


1)1つのブック内に作業に要したぶんの日報があるということであってますか。(他のブックに分散されているということではないですね)
2)そのブック内には、日報のシートと一覧シートだけがあるという前提で良いですか。
3)一覧シートをブックの一番左側に配置することは可能ですか。
そうすると、左側から2番目以降が、日報シートになり、それを順番に最後まで処理すれば、良いことになります。
4)その日報の並び順は、左側から順に日付順に並べることは可能でしょうか。
そうすれば、左側から2番目以降を順番に処理すればよいことになります。
これが、日付順に並んでいないと後でソート等の作業があり、複雑になります。
5)その日報が、5日分で終わっていたとすると、6日目のシートは雛形だけのなにも記入されていないシートになりますが、
この雛形だけのシートと何かが記入されたシートの区別は、どうやって判断しますか。
例では、A2に項目番号1がありますが、A2が空白なら、なにも記入されていないシートと判断して良いですか?
6)その日報の日付は、どこをみれば、わかりますか?
シートのどこかのセルに日付があれば、わかるのですが、そのようなものは、ないのでしょうか。
    • good
    • 0
この回答へのお礼

https://oshiete.goo.ne.jp/qa/9963199.html

タイトルが「 tatsu99様」と書いた質問を作りました。新たな画像を添付したかったので、面倒だとは思いますが拝借していただけたらとおもいます

お礼日時:2017/09/28 13:59

私が回答できる保証はありませんが、他の回答者も同じだと思いますので、いくつか不明点をあげておきます。


1)30日分のシートがあるということですが、1か月分ではないでしょうか。
(2月で30日分は考えられない。30日分だとすると10月31日はなぜ不要なのかがよくわからない)
2)シート名とそのシートに対応する日付の関係がよくわからない。
(シート名で"10/1"のようなものは、作成できません。)
実際のシート名とそのシート名からどうやって10月1日等の日付が導けるのか、その関係を提示してください。
3)30日分のシートと一覧にまとめたシートは、同じブック内にある前提でよいのでしょうか。
    • good
    • 0
この回答へのお礼

勉強不足で説明下手で申し訳ありません。30枚のシートは何月何日からの1か月分と決まっているわけではなくで、1現場にかかった日数分の日報です。なのでAの現場は1月10日から7日で終われば7日分の各日報の一部のデータを一覧化させて上から詰めて自動コピーしてほしいのです。現場によっては10日で終わることもあれば1か月以上かかることもあるので一応30日分の同じ雛形の日報シートをブックに挿入していて、30枚使わないときもあります。
無知なのでこのようなやり方しかわからなくて作成中なのですが、ほかにブック自体の作り方を変えた方が良ければ作り直す覚悟はできています。大事な集計データになるのでどうかよろしくお願いいたします。

お礼日時:2017/09/28 11:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています