単二電池

ご回答者様

いつもお世話になっております。
表題の件、VBAに関する質問です。
現在、(得意先別)、(初期マスタ)、(元データ)というシートがあります。
(元データ)よりsumifs関数を用いて各得意先別の前年比データを作成しております。
得意先ですが200程度ある為、200枚シートを作成して得意先別に前年比データを作成すると
エクセルがフリーズしてしまいます。
その為、初期マスタに下記内容を記載しております。

C列:得意先コード
D列;得意先名

上記コードをキーにしてsumifs関数を用いて元データから前年比を求めておりますが
下記内容はVBAで対応可能でしょうか。

1.C列の得意先コードがC2より開始しているのでその最終行までを取る
2.最終行に達するまで(1)以下のマクロを実施する
(1)得意先コードを(得意先別)シートのA列5行目に貼り付ける(1得意先コードのみ。sumifs関数の主キーにするため)
(2)sumifs関数で再計算が終了した後に新しいシートとしてコピーをする
(3)シート名は(得意先別)シートのD3に表示されているのでそちらをシート名にする(数式で得意先名を表示させています)
(4)そのシートをコピーする(数式は全削除するソースがあります)
(5). (1)から(4)を得意先コードが最終行になるまで繰り返す。

ご多忙の中、恐れ入りますが何卒宜しくお願い致します。

A 回答 (5件)

こんにちは



内容をキチンと把握できてはいませんが・・・

>下記内容はVBAで対応可能でしょうか。
処理内容としては値のコピペに近いものばかりなので、問題なく対応可能と思いますが…

>得意先別に前年比データを作成すると
>エクセルがフリーズしてしまいます。
と同じことをVBAでやろうとしているように読み取れます。
であるなら、No2様もおっしゃっているように、手作業でフリーズすることをVBAでやればできるのかと言えばはなはだ疑問です。

想像するところメモリの問題などが懸念されますが、
 ・全体的にもっとコンパクトにできないのか
 ・データや処理を分割することで、軽量化できないか
 ・他の方法(Access等)を利用できないか
など、基本的な構成から再考なさった方が良いのではないかと感じられます。
    • good
    • 0
この回答へのお礼

お世話になっております。
アクセスですがまだ使用したことがないですが調べて使ってみます。
メモリは32GBのデスクトップパソコンにリモートアクセスしているので比較的大きいかと存じますが最近扱う内容が変わってきたのでアクセスをした方がよいかもしれませんね。

お礼日時:2020/11/06 20:00

オススメ書籍はないけど、まずは図書館で超入門を二、三冊斜め読みするのがいい。


それで何が出来るのかが大体わかるよ。
    • good
    • 0

自動取得は リンクを貼るのではなく


自身が意図したイベント
(コマンドボタンほか各種動作タイミング)
によって 対象とするブックをひとつずつ開いて
データを取得するものです
ブックの数が増えるほど当然時間がかかりますので、
運用上の工夫をするのが良いでしょう
    • good
    • 0

200シートは現実的でないと思います


PCのスペックなどに多大な影響を受けるからです

200シートではなく 200ブックとし
それらのデータを必要なタイミングで自動取得するほうが良いのでは
ないでしょうか
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
自動取得する方法があるのですね。
調べてみます

お礼日時:2020/11/06 08:14

Access使った方が早い。


一か月頑張れば出来る。
    • good
    • 0
この回答へのお礼

ありがとう

お世話になります。
アクセス、使った事が無く…
かなり毛嫌いしてしまっています。
入門書でおすすめは御座いますでしょうか。

お礼日時:2020/11/06 08:13

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


おすすめ情報