こんばんは。どうすることも出来ず困っています。マクロが出来ないのでエクセルで試してみましたが無理でした。説明が分かりずらいかもしれませんがご教授お願いします。
データ貼付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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
ExcelのVlookup関数の制限について
-
Excel の複数シートの列幅を同...
-
【VBA】複数のシートの指定した...
-
Excel VBA ピボットテーブルに...
-
VBAで繰り返しコピーしながら下...
-
Excelのセルの色を変えた行(す...
-
エクセル マクロ 標準モジュー...
-
文字の色も参照 VLOOKUP
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
Excelに自動で行の増減をしたい...
-
【マクロ】対象データを別シー...
-
EXCEL VBAのコンボボックスに取...
-
スプレッドシートでindexとIMPO...
-
エクセルの列の限界は255列以上...
-
オートフィルタ使用時にCOUNTIF...
-
エクセルで横並びの複数データ...
-
シートをまたぐ条件付き書式に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
エクセルの保護で、列の表示や...
-
Excel の複数シートの列幅を同...
-
Excelでの並べ替えを全シートま...
-
エクセル マクロ 標準モジュー...
-
VBAで繰り返しコピーしながら下...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excel VBA ピボットテーブルに...
-
エクセルで、チェックボックス...
-
SUMPRODUCTにて別シートのデー...
-
スプレッドシートでindexとIMPO...
-
VLOOKアップ関数の結果の...
-
【VBA】ピボットテーブルを既存...
-
【VBA】複数のシートの指定した...
-
Excelのセルの色を変えた行(す...
-
Excelに自動で行の増減をしたい...
-
エクセルで横並びの複数データ...
-
エクセルVBA 行追加時に自...
おすすめ情報
ありがとうございます。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の設定が間違っているのかもしれないですね・・・・