こんにちは。
Excelを使った日報を使っており、集計シートを作成しています。
日報は1日ごとに1枚のシートを振り分けていて、必要項目だけを抽出して【1日】【2日】【3日】…と続けて集計シートに転記したいです。
シート【1日】は問題なく転記出来たのですが、【2日】を転記すると【1日】のデータに上書きされてしまいます。
【2日】以降を【集計シート】の最終行を取得して次の行から貼り付けていく方法を教えていただけないでしょうか?
日毎の日報シートA列(非表示にしています)に抽出対象がありますが、こちらは【集計シート】へは表示していません。
また【1日】から【31日】までのシートを連続で抽出貼り付けが出来るVBAも教えていただけると嬉しいです。
ただシートは【月集計】と日毎のシート以外にもいくつかあるため(集計シートは実際の日報だと4枚目にあります)、「【月集計】以外のシートで指定」するコードは使えないです。
Sub 抽出3()
'抽出
Dim i, j As Long
i = 5
j = 3
With Worksheets("1日")
Do While .Cells(i, "B").Value <> ""
If .Cells(i, "A").Value <> "" Then
For x = 1 To 13
Worksheets("月集計").Cells(j, x).Value = .Cells(i, x + 1).Value
Next x
j = j + 1
End If
i = i + 1
Loop
End With
End Sub
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
No4です。
>1.レイアウトですが、15行目、30行目にスペースがあります。なので設備2は16行目から、設備3は31行目から始まります。このスペースは削除可能です。
回答:B列に日付が入っていれば問題ないので、このままで構いません。
>2.歯抜けを防ぐため非表示のB列5行目~44行目まで日付を入力しています。
>3.B列には歯抜けを防ぐため日付が入ってるため空のセルはありません。
抽出条件はD列のNo.が30000以下の場合 A列に●が入るようにしてあり、その●がついた行だけを月集計のシートに転記していきたいのですが、可能でしょうか?
回答:上記の件、了解しました。
下記へアップしました。
不明点があれば、補足してください。
https://ideone.com/4OUJYW
tatsumaru77さん、ばっちりでした!
ありがとうございます!
ネットや本で調べて色々思考錯誤しながら1か月ほど頑張ってみたんですが全然思うようには動かすことが出来ず、半ば諦めかけていたので。
実行してあっという間に転記されたのを見て感動しました。
こちらで相談して、そしてtatsumaruさんの目に止めてもらえてよかったです。
本当にありがとうございました。
No.4
- 回答日時:
No1です。
補足ありがとうございました。
最終確認です。
1.レイアウト確認
日報シートのレイアウトは、以下の内容で間違いないでしょうか。
1行~2行 設備1
3行~4行 設備1の見出し
5行~14行 設備1のデータ
15行~17行 設備2
18行~19行 設備2の見出し
20行~29行 設備2のデータ
30行~32行 設備3
33行~34行 設備3の見出し
35行~44行 設備3のデータ
マクロが転記対象とするのは、以下の
5行~14行 設備1のデータ
20行~29行 設備2のデータ
35行~44行 設備3のデータ
になります。
2.設備ごとの処理
各設備のデータは、前詰めで格納されている前提です。歯抜けのデータ行はないものとします。
歯抜けの行があった場合は、その設備の処理を打ち切り、次の設備の処理に移ります。
例
設備1で
5行 データ有
6行 空行
7行 データ有
の場合、6行で歯抜けがあるので、5行のみ転記します。
7行目以降は転記せず、設備2の処理に移ります。
3.データの有無の判定
B列にデータがある場合、データ有の行と判定します。(A列は参照しません)
B列が空の場合は、C列等にデータがあっても、空行とみなします。
上記の仕様で、宜しいでしょうか。
No.2
- 回答日時:
部分的な回答です
>シート【1日】は問題なく転記出来たのですが、【2日】を転記すると【1日】のデータに上書きされてしまいます。
これは変数jが定数3から始まっている為です
変数jを月集計シートの最終行の下、新規行番号を取得するようにすれば良いです
変数宣言をするならしっかりと書きましょう
例
'抽出
Dim i As Long, j As Long
Dim x As Long
i = 5
j = Application.Max(Worksheets("月集計").Cells(Rows.Count, 1).End(xlUp).Row + 1, 3)
月集計シートの1列目を対象に最終行番号+1で新規行番号
End(xlUp).Row + 1で3より小さい行番号が取得された場合
Max関数でスタート行ナンバー3を代入しています
>また【1日】から【31日】までのシートを連続で抽出貼り付けが出来るVBAも教えていただけると嬉しいです。
表組を見ると単純な疑問が出てきますが、単純にA・B列の条件に合致する
1~13列内のセルデータを ブック内の1日~31日シートで繰り返すならば
(条件が出そろっていないので)合理的ではないかも知れませんが
シート全部に対して条件を設けて実行すればよいですね
簡単に書き加えると
Sub 抽出3()
'抽出
Dim i As Long, j As Long
Dim x As Long, n As Long
Dim sh As Worksheet
Dim flag As Boolean
For Each sh In Worksheets
flag = False
For n = 1 To 31
If StrConv(sh.Name, vbNarrow) = StrConv(n & "日", vbNarrow) Then
flag = True
Exit For
End If
Next
If flag Then
i = 5
j = Application.Max(Worksheets("月集計").Cells(Rows.Count, 1).End(xlUp).Row + 1, 3)
With sh
Do While .Cells(i, "B").Value <> ""
If .Cells(i, "A").Value <> "" Then
For x = 1 To 13
Worksheets("月集計").Cells(j, x).Value = .Cells(i, x + 1).Value
Next x
j = j + 1
End If
i = i + 1
Loop
End With
End If
Next sh
End Sub
ブックや表組、VBA実行トリガ、データの扱いなどを見直した方が良さそうですが・・・
No.1
- 回答日時:
不明点です。
1.左側の画像が月集計で、右側の画像が日報シート(1日、2日、・・・)でしょうか。
画像が不鮮明なので、状況がよくわかりません。
画像を別々にして、アップすると、多少は鮮明になります。
別々にアップしていただけませんでしょうか。(特に日報シートのほうを優先でお願いします)
尚、画像が不鮮明なのは、あなたのせいではありません。
このサイトに、大きい画像をアップすると、このサイトに仕様で不鮮明になってしまいます。
2.右側が日報シートの前提ですが、提示されたマクロをみると、
設置1のデータしか転記してないように見えます。
設置2、設置3は転記しなくて良いのでしょうか。
(書かれている字が読めないので、○○1、○○2、○○3の○○を設置と書いています)
3.1日のデータを転記する場合は、提示されたマクロになりますが、
2日以降は、どうされるつもりなのでしょうか。
With Worksheets("1日")の "1日"を毎回、"2日"とか"3日"とかに変えて、実行されるつもりでしょうか。
4.1日~31日までのシートを連続で抽出貼り付けが出来るマクロも作成したいとのことですが、
今年の2月分なら、1日~28日までになります。
2月分を処理するばあいでも、1日~31日のシートを処理して良いのでしょうか。
その場合は、29日以降のシートのデータ行は空にしておく必要があります。
もし、今年の2月分は、1日~28日までにしたいということであれば、
処理対象となる年月(例2025年2月)の情報がどこかにないと、そのような処理ができなくなります。
5.日報シートのA列とB列の具体的な内容がわかりませんが、
1つの行で、考えられるデータの有無のケースは、
①A列がデータ有り、B列がデータ有りのケース
②A列がデータ有り、B列がデータ無しのケース
③A列がデータ無し、B列がデータ有りのケース
④A列がデータ無し、B列がデータ無しのケース
が考えられます。②③のケースもあるのでしょうか。
もし、ある場合は、転記対象になるのでしょうか、ならないのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
-
4
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
5
VBAでセルの書式を変えずに文字列を置換する方法をご教示ください
Visual Basic(VBA)
-
6
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
7
VBA 入力箇所指定方法
Visual Basic(VBA)
-
8
vbe でのソースコード参照(msgbox)について
Excel(エクセル)
-
9
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
10
VBAで特定の文字が入った行をコピーして貼り付けたい
Visual Basic(VBA)
-
11
Excel いい方法教えてください。
Excel(エクセル)
-
12
不要項目の行削除方法について
Visual Basic(VBA)
-
13
vbaマクロについて
Visual Basic(VBA)
-
14
ExcelVBA修正のお願い
Visual Basic(VBA)
-
15
VBAコードのインデント表示
Visual Basic(VBA)
-
16
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
17
VBAの間違い教えて下さい
Visual Basic(VBA)
-
18
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
19
pdfファイルの複数添付 引数の型
Visual Basic(VBA)
-
20
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
質問58753 このコードでうまく...
-
Vba WorkBooks.Openについて教...
-
以下のプログラムの実行結果は...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excelマクロで、ピボットテーブ...
-
VBA ユーザーフォーム ボタンク...
-
【ExcelVBA】値を変更しながら...
-
VB.net(VB)で、フォームにExcel...
-
[Excel VBA]特定の条件で文字を...
-
ExcelからVisual Basicを開くと...
-
Excel VBAについて。こんな動作...
-
Vba 型が一致しません(エラー1...
-
2つのマクロでチェックボックス...
-
【VBA】 結合セルに複数画像と...
-
vbaマクロについて
-
[VB.net] ボタン(Flat)のEnable...
-
VBA レジストリの値の読み方に...
-
Visualbasicの現状について教え...
-
Web画面の文字をVB6で取得したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.net 文字列から日付型へ変更...
-
VBA 最終行の取得がうまくいか...
-
VBAでエクセルのテキストデータ...
-
【ExcelVBA】5万行以上のデー...
-
VBAについてです。 データのチ...
-
エクセルVBAで在庫の組み換え処...
-
VBAから書き込んだ条件付き初期...
-
エクセルのVBAコードについて教...
-
VBAでユーザーフォームを指定回...
-
エクセルのVBAについて教えてく...
-
vbaマクロについて
-
ExcelのVBAコードについて教え...
-
【VBA】 結合セルに複数画像と...
-
WindowsのOutlook を VBA から...
-
質問58753 このコードでうまく...
-
ExcelのVBAコードについて教え...
-
Excel VBAについて。こんな動作...
-
[Excel VBA]特定の条件で文字を...
-
[VB.net] ボタン(Flat)のEnable...
-
ExcelからVisual Basicを開くと...
おすすめ情報
回答ありがとうございます。
今手元にデータがないため文章での補足でもよろしいでしょうか?
1.画像左が月集計で右が日報シートの1日となり、そこから右側に2日、3日…と31日までシートがあります。
2.設置ではなく設備になります。右側の日報シートに設備1~設備3とあり、抽出条件が合えば3つとも転記しています。
3.試しに作成してみようと思って1日分だけ作成したもので、できれば31日分まとめて処理できたらと思っています。
4.全ての月で31日分のシートを準備してます。月に合わせて増減はさせていないです。
5.①になります。
日報シートのA列はA列に値が入力されたら抽出するという抽出対象で、これは月集計シートには転記していません。
日報シートB列には日付→月集計シートのA列に、日報シートC列には設備名→月集計シートのB列に転記されるようになっています。
よろしくお願いします。
回答ありがとうございます。
日報シート、作成したので添付します。
画像、少しは見えやすくなったでしょうか?
質問をさせていただくのが今回初めてで不慣れなもので、申し訳ないです。
非表示にしていたA列~C列も表示しました。実際の日報は非表示になります。
1.レイアウトですが、15行目、30行目にスペースがあります。なので設備2は16行目から、設備3は31行目から始まります。このスペースは削除可能です。
転記対象は上記の通りです。
2.歯抜けを防ぐため非表示のB列5行目~44行目まで日付を入力しています。
3.B列には歯抜けを防ぐため日付が入ってるため空のセルはありません。
抽出条件はD列のNo.が30000以下の場合 A列に●が入るようにしてあり、その●がついた行だけを月集計のシートに転記していきたいのですが、可能でしょうか?
よろしくお願いします。