
こんばんは。どうすることも出来ず困っています。マクロが出来ないのでエクセルで試してみましたが無理でした。説明が分かりずらいかもしれませんがご教授お願いします。
データ貼付Sheetの情報
・データ貼付Sheetにはシステムからダウンロードしたエクセルのデータを貼り付ける
・データ貼付Sheetにはシステムからダウンロードしたエクセルのデータを貼り付ける
・店コード(支店)は購入したものが無ければ店コード(支店)表示されない
・分類も購入が無ければ分類名の欄は表示されない
まとめSheetの情報
・まとめSheetは全ての店コードと分類が常に表示されている
・データ貼付Sheetにある数値をまとめに反映させたい
・データ貼付Sheetの分類(同じ色の分類の計)をまとめに反映したい
・支店が増える可能性あり
どうか皆さんのお知恵をお借りしたいです。

No.9ベストアンサー
- 回答日時:
こんばんは!
お示しのコードで黄色くなっているところを拝見すると
いままでのコードはエラー処理を一切していませんでした。
もしかして、「まとめ」シートのA列に「データ貼付」シートのA列データ(店コード)が存在しない!
または「まとめ」シートの分類群の中に「データ貼付」シートの分類名が存在しない!
というコトが考えられます。
今一度確認してみてください。
※ 「まとめ」シートに「店コード」もしくは「分類」がない場合はVBAで追加は可能ですが、
コードが長くなるので、今回は割愛させてください。m(_ _)m
何度も何度も無知な私の質問に丁寧に回答して頂き感謝しています。
今までの内容を参考にさせて頂きたいと思います。
ありがとうございました。
もっとBVAを勉強していきます。
No.8
- 回答日時:
最後の補足の件について・・・
二通りのやり方があると思います。
「データ貼付」シートの1行目項目が必ず「まとめ」シートの分類群の中にあるのであれば
「総計」の列も一緒に操作する方法です。
その場合はコード内の「-1」を2か所とも消してみてください。
そうしればそのまま「総計」列も表示されます。
もう一つの方法としては「-1」のままで「総計」列に数式を入れる方法です。
この場合、総計の列がどこになるか?によって当然SUM関数の数式範囲が変わってきますよね。
仮に「まとめ」シートの「総計」列がM列にある場合
「まとめ」シートのM2セルに
=SUM(C2:L2)
としてフィルハンドルで下へコピーしておく!
※ エラー処理まで考慮すると
=IF(COUNT(C2:L2),SUM(C2:L2),"")
といった感じでしょうか。m(_ _)m
No.7
- 回答日時:
たびたびごめんなさい。
投稿後気になったのですが、
「まとめ」シートの列数は変化するのでしょうか?
もしそうであれば、前回のコードではC~F列までしかデータ消去するようにしていません。
今までのコードはすべて消去し↓のコードに変更してみてください。
Sub Sample2()
Dim i As Long, j As Long, lastRow As Long, lastCol As Long
Dim c As Range, r As Range, wS As Worksheet
Set wS = Worksheets("データ貼付")
With Worksheets("まとめ")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column - 1 '//★①//
Range(.Cells(2, "C"), .Cells(lastRow, lastCol)).ClearContents '//★①'//
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1 '//★②//
If wS.Cells(i, j) <> "" Then
Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
Set r = .Rows(1).Find(what:=wS.Cells(1, j), LookIn:=xlValues, lookat:=xlPart)
With .Cells(c.Row, r.Column)
.Value = .Value + wS.Cells(i, j)
End With
End If
Next j
Next i
End With
End Sub
※ ★①で「まとめ」シートのC列~1行目最終列の1列左の列までのデータを一旦消去するようにしています。
※ ★②が前回投稿した「データ貼付」シートの1行目最終列の1列左の列までになります。
No.4で投稿した通り、最終列が「総計」でなく「分類」の場合
★①と★②はの「-1」は消してください。m(_ _)m
No.6
- 回答日時:
>分類(列数)もコード(縦数)もどちらもです。
「まとめ」シートの1行目に分類だけ入力済みという前提であれば、
「データ貼付」シートのA列で最終行を取得するようにしています。
A列にデータさえ入っていれば、前回の訂正で列数・行数に関係なく処理できるはずです。
※ 「まとめ」シートは行全体・列全体を対象に検索しているため・・・m(_ _)m
No.5
- 回答日時:
何度もごめんなさい。
行と列を間違っていました。
>For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
でした。
どうも失礼しました。m(_ _)m
No.4
- 回答日時:
続けてお邪魔します。
>月や時期によってコードや分類が減ったり増えたりします。
とは「データ貼付」シートの分類(列数)が一定でない!という意味でしょうか?
もしそうであれば・・・
前回のコード内の
>For j = 3 To Range("L1").Column
を
>For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Row - 1
としてみてください。
C列~「データ貼付」シート1行目項目最終列の1列前まで
となります。
※ 最終列が「総計」となっている前提ですので、最終列まで「分類」がある場合は
「-1」は消してください。m(_ _)m
No.3
- 回答日時:
No.2です。
色々な原因が考えられますが・・・
前回投稿した通り、
① シート名はちゃんと「まとめ」と「データ貼付」のシート名になっているでしょうか?
(コードに記載していとおりダブルクォーテーションで囲まれたシート名になっているか?)
シートが存在しないとそのようなエラーになる場合があります。
② 各シートの配置は前回投稿した画像通りの配置になっているでしょうか?
列・行がずれている場合もエラーになるコトがあるか、
まったく意図しない動きになるコトがあります。
実際のデータがどのようになっているのかこちらでは判断できませんので
この程度しか思いつきません。m(_ _)m
No.2
- 回答日時:
こんにちは!
カテゴリはACCESSになっていますが、Excelで良いのですね。
要するに「データ貼付」シートのデータを「まとめ」シートの1行目に分けた分類群にまとめたい!というコトですよね?
VBAになりますが、一例です。
標準モジュールにしてください。
配置は↓の画像のようになっているという前提です。
Sub Sample1()
Dim i As Long, j As Long, lastRow As Long
Dim c As Range, r As Range, wS As Worksheet
Set wS = Worksheets("データ貼付")
With Worksheets("まとめ")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
Range(.Cells(2, "C"), .Cells(lastRow, "F")).ClearContents
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
For j = 3 To Range("L1").Column
If wS.Cells(i, j) <> "" Then
Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
Set r = .Rows(1).Find(what:=wS.Cells(1, j), LookIn:=xlValues, lookat:=xlPart)
With .Cells(c.Row, r.Column)
.Value = .Value + wS.Cells(i, j)
End With
End If
Next j
Next i
End With
End Sub
※ エラー処理はしていません。
※ 「まとめ」シートのG列(総計)は普通に関数を入れておいてください。m(_ _)m

No.1
- 回答日時:
>・データ貼付Sheetにはシステムからダウンロードしたエクセルのデータを貼り付ける
>・データ貼付Sheetにはシステムからダウンロードしたエクセルのデータを貼り付ける
…(´・ω・`)違いが分からない。
・・・本題・・・
で、代わりに作ってくれという事でしょうか。
関数の使い方が分からないので教えて欲しいという事でしょうか。
質問の仕方を見ると「代わりに作って♪」のように受け取れるのですが…。
それって「質問」ではありませんよね。
具体的に何が分からないのかを示しましょう。
「関数の○○の使い方が分かりません」
「この場合は、この関数を使えばいいのでしょうか」
「ここにこのような式を入れたのですがエラーになります。原因を教えてください」
のように具体的に質問するようにしましょう。
でないと、目の前にある疑問を先送りにするだけになってしまいます。
それって疑問の解決ではありませんよね。
・・・余談・・・
半角カナは見づらいなあ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
VBAで繰り返しコピーしながら下...
-
Excelに自動で行の増減をしたい...
-
エクセルで横並びの複数データ...
-
エクセルのブック分割マクロを...
-
エクセル マクロ 標準モジュー...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
【エクセル】1列のデータを交...
-
VLOOKアップ関数の結果の...
-
Excelでの並べ替えを全シートま...
-
Excel 2段組み
-
エクセルの列の限界は255列以上...
-
【VBA】シート名と見出しが一致...
-
【VBA】複数のシートの指定した...
-
excel 複数のシートの同じ場所...
-
エクセルで、チェックボックス...
-
エクセルで、book全体の検索&...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
Excel の複数シートの列幅を同...
-
Excelでの並べ替えを全シートま...
-
VBAで繰り返しコピーしながら下...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
エクセルの列の限界は255列以上...
-
VLOOKアップ関数の結果の...
-
Excelに自動で行の増減をしたい...
-
エクセル マクロ 標準モジュー...
-
【VBA】複数のシートの指定した...
-
Excel VBA ピボットテーブルに...
-
エクセルで横並びの複数データ...
-
【VBA】シート名と見出しが一致...
-
Excel 2段組み
-
SUMPRODUCTにて別シートのデー...
-
スプレッドシートでindexとIMPO...
おすすめ情報
ありがとうございます。VBAで標準モジュールに貼り付けましたが、「実行エラー インデックスが有効範囲にありません。のエラーが表示されます。これはどうすればいいのでしょうか。
ご指摘頂きありがとうございます。初めてだったので仕組みがよくわからないまま投稿してしまいました。今後は気を付けます。
ご指摘の①と②を確認しました。②の各シートの一番上の列からではなく2列目から配置しておりましたので削除しました。「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている」のエラーが出ました。マクロ有効の設定したのですが、同じエラー表示になります。
マクロの設定方法が間違っているのかもしれません。再度やり直ししてみます。それと大変失礼な質問ですが、関数ではこの設定は無理でしょうか?
すみません、何度かチャレンジしたら出来ました!先ほどの補足は無視してください。
違うデータをダウンロードして、データ貼付けsheetに貼り、試してみました。すると分類が増えていた所が反映されていませんでした。ダウンロードしたデータは月や時期によってコードや分類が減ったり増えたりします。←ここがネックです。(まとめSheetのコードと分類が全てです)
>月や時期によってコードや分類が減ったり増えたりします。
とは「データ貼付」シートの分類(列数)が一定でない!という意味でしょうか?
↑ 分類(列数)もコード(縦数)もどちらもです。
何度も補足ばかりですみません(泣)
こちらこそこんなに遅い時間までお付き合い頂きすみません。
最終列が「総計」と設定されている定義なので、「分類」になった場合は
↓にするのですね。了解しました。
>No.4で投稿した通り、最終列が「総計」でなく「分類」の場合
>★①と★②はの「-1」は消してください。m(_ _)m
集計ボタンを作りそこをぽちっと数回押すと、「総計」が倍・倍に増えていくのはそのせいですね。
No.2の投稿で「総計」に関数を入れるとありましたが「SUM」でいいのでしょうか?
今夜は遅いのでまた明日にでも返信頂ければ嬉しいです。
余談ですが、「ベストアンサー」をtom04に差し上げたいのですが押してしまうと締切になってしまうのでしょうか。
試してみました。
>「データ貼付」シートの1行目項目が必ず「まとめ」シートの分類群の中にあるのであれば
「総計」の列も一緒に操作する方法です。←「まとめ」にはすべての分類が常時表示してます。
>コード内の「-1」を2か所とも消してみてください。←消してみるとこんな表示が・・(画像参照)
次に下記を試してみました。
>もう一つの方法としては「-1」のままで「総計」列に数式を入れる方法
「まとめSheet」の「総計」は常にG2にありますので、G2に =IF(COUNT(C2:F2),SUM(C2:F2),"")を入れ、実行すると「総計」の数式が消え「総計」の数字が最初にした方法の合計の倍の数字になりました。
私のVBAの設定が間違っているのかもしれないですね・・・・