アレルギー対策、自宅でできる効果的な方法とは?

以前、複数シートを集計したい(別シートへ集計させたい)という質問をさせていただき
ご回答いただきました。
https://oshiete.goo.ne.jp/qa/9705836.html

これに似たような質問なのですが、今度は複数シートの集計だけでなく、同一フォルダにある複数のブックの複数シート(同じフォーマット)の
特定のセルを集計して、「合計」というシートに集計した数値を表示させるマクロを作成したいです。
※ブックは開かず閉じたまま実行したいです。

複数ブックはそれぞれ支店&課名になっており、シート名はその支店の担当者名になっております。
全ブックの個人シートの特定セルを合計すると「合計」というシートの各支店、各課の前年、計画、実績に数値を合計させるといった
ことができたらなと思っております。

個人別シートのそれぞれA、B、Cの黄色のセルを合計シートの月別の前年、計画、実績へ表示させたいです。

何卒、ご教授願います。

「【マクロ】同一フォルダ内の複数ブックの複」の質問画像

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

  • 合計シートサンプル画像。

    「【マクロ】同一フォルダ内の複数ブックの複」の補足画像1
      補足日時:2017/05/18 13:06
  • ※回答続きです。
    >4)集計対象ブック内の各シートのC2、C3の内容に従い、合計シートの支店名、課名が合致する箇所へ合計する。従って、1つのブック内で、支店名、課名が異なっていても、それに従い、集計する。
    例 仙台・営業.xlsxのブックがあった時
    そのブックの1枚目のシートがC2=仙台支店 C3=営業課、であれば、仙台支店の営業課へ合計する。
    そのブックの2枚目のシートがC2=大阪支店 C3=第一課、であれば、大阪支店の第一課へ合計する。
    →承知しました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/05/24 11:55
  • うーん・・・

    ※補足コメント続きです。
    >5)集計対象ブックの○○支店、○○課のデータと合計シートの○○支店、○○課の関係は以下の通り
    各月ごとに、
    集計対象ブックの1番目の合計(D列の1番目に"合計"が設定されている行)の値(前年、計画、実績)を合計シートの①の前年、計画、実績へ加算する。
    集計対象ブックの2番目の合計(D列の2番目に"合計"が設定されている行)の値(前年、計画、実績)を合計シートの②の前年、計画、実績へ加算する。
    集計対象ブックの3番目の合計(D列の3番目に"合計"が設定されている行)の値(前年、計画、実績)を合計シートの③の前年、計画、実績へ加算する。
    →仰る通りです。

    また、こちらから追加で質問です。
    マクロ実行は各ブックそれぞれをひとつづつ更新する必要があるということでしょうか?
    私の質問が説明不足、私の理解不足でしたら申し訳ありません。
    何卒、よろしくお願いいたします。

      補足日時:2017/05/24 11:57
  • うーん・・・

    また、こちらからも追加で再度質問させてください。
    集計対象すべてのブックに各シートを集計するにあたる元データが別シートとしてあります。
    ※他のブックにあるピボッドのシートをコピーしたものです。それをSUMIFS関数で集計してます。
    このピボッドを各ブック開かずに更新するようなマクロも追加したいのですが
    そういったことも可能でしょうか?

    度々恐縮ではございますが、何卒ご教授頂けますと幸いです。

    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/05/24 13:23
  • 補足要求③の画像添付します。

    「【マクロ】同一フォルダ内の複数ブックの複」の補足画像5
    No.6の回答に寄せられた補足コメントです。 補足日時:2017/05/25 15:27
  • 補足要求④の画像添付します。

    「【マクロ】同一フォルダ内の複数ブックの複」の補足画像6
      補足日時:2017/05/25 15:35
  • 申し訳ありません。
    先ほどのお礼に書かせていただいた内容が質問の返答になっていなかった点がありました。
    大変失礼いたしました。

    >この事象で考えられることは以下のどちらかです。
    >①テストデータとして合計を作ってしまった。
    >②集計対象のブックには、集計対象外のシートが(今回の合計等)があるのだが、その旨の説明が漏>れていた。
    →結果から申し上げますと、①②どちらにも該当いたします。
    マクロのブックに合計シートがありましたし、集計対象ブックには集計対象シート以外も含まれておりました。失礼いたしました。追加での質問を先ほど記載いたしましたので恐れ入りますが、ご回答いただけますと幸いです。

    No.11の回答に寄せられた補足コメントです。 補足日時:2017/05/26 10:14
  • ※個人シート画像添付します。

    「【マクロ】同一フォルダ内の複数ブックの複」の補足画像8
    No.13の回答に寄せられた補足コメントです。 補足日時:2017/05/26 13:08
  • ※それ以外シートの画像添付します。

    「【マクロ】同一フォルダ内の複数ブックの複」の補足画像9
      補足日時:2017/05/26 13:09
  • うーん・・・

    解決したといいながら申し訳ありません。
    集計用マクロの合計、それ以外シートは正しく集計されて表示されているのですが
    その集計元の各支店別の複数ブックの中にある「合計シート」、「それ以外シート」には処理完了とはなりますが#REFエラーや何も反映されず空白になってしまっています。
    原因は何が考えられますでしょうか?
    本当に何度も申し訳ありませんが、ご教授願います。

    No.15の回答に寄せられた補足コメントです。 補足日時:2017/05/29 09:57

A 回答 (19件中1~10件)

「それ以外」シートの方ですが下記URLへ格納しました。


http://climbi.com/b/10229/0

条件は、
個人シートのD列 ”売上”の行が集計対象(2つ以上あること)(上から2つまでを集計)
上記を「それ以外」シートの①②へ集計する
で行っています。
この回答への補足あり
    • good
    • 1
この回答へのお礼

助かりました

お礼が遅くなり、申し訳ありません。
それ以外シートの件、ご教授頂きましてありがとうございました。
ご教授頂いたマクロで実行し、無事解決いたしました。
本件、何度もお手数をおかけして申し訳ありませんでした。
本当に助かりました。また、大変勉強になりました。
ありがとうございました。

お礼日時:2017/05/29 09:39

>今回、ご教授頂いた集計用マクロで集計したファイルをそれぞれのブックへ参照させるようにしますのでご対応不要です。


了解しました。
    • good
    • 1

>集計用マクロと同じように各支店の個人シートをすべて集計したものを


>各支店ごとのブックにある合計シート、それ以外シートへ反映させたいのです。
>各支店ごとにブックが分かれているので、各支店ごとにブックを開けば全支店の数値を把握できるようにしたいのです。

ということは、仙台が3課まであるとすると
①仙台一課.xlsx内の山田、田中のデータをそのブック内の合計シートに集計
②同上データを仙台二課、仙台三課、及び他の全支店の合計シートにも集計
のように、他のブック(②)に集計することも要求されていますか。
もし、そうであれば、大幅な、変更になりますので、今回は対応できません。(①だけなら修正量はすくなく対応可能ですが)

又、要件が上記の①②のことだとすると、
マクロのあるブックの合計シートと、各集計元ブックの合計シートは、全く同じ内容が設定されることになりますが、
そのようなことを望まれていたのでしょうか。
    • good
    • 1
この回答へのお礼

助かりました

>>集計用マクロと同じように各支店の個人シートをすべて集計したものを
>>各支店ごとのブックにある合計シート、それ以外シートへ反映させたいのです。
>>各支店ごとにブックが分かれているので、各支店ごとにブックを開けば全支店の数値を把握できるようにしたいのです。

>ということは、仙台が3課まであるとすると
>①仙台一課.xlsx内の山田、田中のデータをそのブック内の合計シートに集計
②同上データを仙台二課、仙台三課、及び他の全支店の合計シートにも集計
>のように、他のブック(②)に集計することも要求されていますか。
>もし、そうであれば、大幅な、変更になりますので、今回は対応できません。(①だけなら修正量はすくなく対応可能ですが)
>又、要件が上記の①②のことだとすると、
>マクロのあるブックの合計シートと、各集計元ブックの合計シートは、全く同じ内容が設定されることになりますが、
>そのようなことを望まれていたのでしょうか。
→はい、おっしゃる通りで①②どちらも希望しておりました。
 ですので、当初私が作成した表ですと①の作業をSTART、ENDというシートで個人シートを挟んで合計シートに集計したものを
 それぞれ各支店ブックの合計シートへ参照させておりました。
 今回、ご教授頂いた集計用マクロで集計したファイルをそれぞれのブックへ参照させるようにしますのでご対応不要です。
 本当に何度も無理難題なことを申し上げ、お手数をおかけして申し訳ありませんでした。
 大変助かりました。ありがとうございます。

お礼日時:2017/05/29 17:01

>→私の説明不足で正確な情報を伝えられていなかったのだと思います。

申し訳ありません。
>各支店の集計用ブックにそれぞれ個人シートと合計、それ以外シートがあり、マクロ用で集計後
>各支店分の合計、それ以外シートにもすべて反映できるようにとお伝えしたつもりでした。

要件の追加は、
①各支店の集計用ブックの合計シート
②各支店の集計用ブックのそれ以外シート
上記シートへも集計したい(上記シートへ合計を加算したい)。
ということでしょうか。

現行のマクロへの影響が少ないようであれば、検討してみます。
上記①②のシートの画像及び集計したいセルの情報を提示していただけますか。
又、1つのブック内の個人シートのデータを同じブック内の合計シート(又はそれ以外シート)に集計(加算)と理解していますが、あってますか。
(他の各支店のブックの合計シート(又はそれ以外シート)に集計することはない。)
    • good
    • 1
この回答へのお礼

>>→私の説明不足で正確な情報を伝えられていなかったのだと思います。申し訳ありません。
>>各支店の集計用ブックにそれぞれ個人シートと合計、それ以外シートがあり、マクロ用で集計後
>>各支店分の合計、それ以外シートにもすべて反映できるようにとお伝えしたつもりでした。

要件の追加は、
①各支店の集計用ブックの合計シート
②各支店の集計用ブックのそれ以外シート
上記シートへも集計したい(上記シートへ合計を加算したい)。
ということでしょうか。
→説明が下手でしたイメージがつきずらく申し訳ありません。。。。
集計用マクロと同じように各支店の個人シートをすべて集計したものを
各支店ごとのブックにある合計シート、それ以外シートへ反映させたいのです。
各支店ごとにブックが分かれているので、各支店ごとにブックを開けば全支店の数値を把握できるようにしたいのです。


>現行のマクロへの影響が少ないようであれば、検討してみます。
>上記①②のシートの画像及び集計したいセルの情報を提示していただけますか。
>又、1つのブック内の個人シートのデータを同じブック内の合計シート(又はそれ以外シート)に集計(加算)と理解していますが、あってますか。
>(他の各支店のブックの合計シート(又はそれ以外シート)に集計することはない。)
→上記でも記載させていただいておりますが、他の各支店のブックの合計シート、それ以外シートにも集計させて全体の数値を把握したです。
画像は、集計用マクロの際補足で添付させていただいたものと同じものになります。
もし、現行のマクロにに影響があるようでしたら本件につきましては割愛いただいて結構です。
お手数をおかけして申し訳ありません。

お礼日時:2017/05/29 16:07

>集計用マクロの合計、それ以外シートは正しく集計されて表示されているのですが


回答:今回のマクロでは、
①集計用マクロのある合計シート
②集計用マクロのあるそれ以外シート
のみが集計対象です。

>その集計元の各支店別の複数ブックの中にある「合計シート」、「それ以外シート」には処理完了とはなりますが#REFエラーや何も反映されず空白になってしまっています。
>原因は何が考えられますでしょうか?
回答:これは、そもそも最初の要件に含まれていないと考えています。
集計元の各支店別の1つのブックを○○支店.xlsxとすると、そのブック内に左から順に
①田中
②山田
③合計
④任意の名称のシート、以降同様
とあるとすると、
①、②のセルを読み込み、マクロのある合計シート(若しくはそれ以外シート)に加算します。
③の合計シートは、そのシート名が”合計”であることを検知した時点で、処理を打ち切ります。
    • good
    • 1
この回答へのお礼

助かりました

早々にご回答いただきましてありがとうございます。

>>集計用マクロの合計、それ以外シートは正しく集計されて表示されているのですが
>回答:今回のマクロでは、
>①集計用マクロのある合計シート
>②集計用マクロのあるそれ以外シート
>のみが集計対象です。
→私の説明不足で正確な情報を伝えられていなかったのだと思います。申し訳ありません。
各支店の集計用ブックにそれぞれ個人シートと合計、それ以外シートがあり、マクロ用で集計後
各支店分の合計、それ以外シートにもすべて反映できるようにとお伝えしたつもりでした。
大変失礼いたしました。
ただ、集計用マクロではご教授頂いたマクロで無事集計完了できております為
こちらで完了とさせて頂きます。ありがとうございました。
そして、いろいろとお手数をおかけしてしまい、申し訳ありませんでした。

お礼日時:2017/05/29 11:14

>また、今回の合計シートと同じように個人シートのD列に「売上」となっているものを


>集計して別シートとして「それ以外シート」に集計結果を表示させたいのですが
>どこの部分のモジュールを書き換えたらよいでしょうか?
>ちなみにそれぞれのブックの個人シートの②と③の売上とつくセルの数値を
>それ以外シートの①(個人シートの②)、②(個人シートの③)へ集計結果を表示させたいです。
>※個人シートの合計にはこの部分は含まれていない為、別シートで集計したいです。
>画像を添付いたしましたので、再度で恐縮ではございますがご教授願います。

別マクロでの提供になります。
修正&こちらでの動作確認は終了していますがclimbiが不調なため、そちらに投稿できません。
このgooに書こうとすると文字数オーバーで書けません。
このgooのサイトは、マクロの空白のインデントがめちゃくちゃになるので、できればclimbiにしようかと思っています。
来週明けまでに、climbiが復旧しない場合は、来週明けにこのサイトに複数回に分けて、マクロを提示します。
それで、良いでしょうか。

また、「それ以外シート」を除いて、本件は完了と考えて良いでしょうか。
(他に追加・変更の要件はないと考えて良いでしょうか)
    • good
    • 1
この回答へのお礼

助かりました

ご返信ありがとうございます。
別マクロ、climbiの不具合の件承知いたしました。
何度もお手数をおかけして申し訳ありません。
週明けでかまいませんので、何卒よろしくお願いいたします。

>また、「それ以外シート」を除いて、本件は完了と考えて良いでしょうか。
(他に追加・変更の要件はないと考えて良いでしょうか)
→はい、完了という認識で問題ありません。
 ご丁寧にご教授頂き感謝いたします。ありがとうございました。

お礼日時:2017/05/26 14:30

いま、climbiがアクセス不能の為、下記URLの内容を修正したものを、climbiに格納できません。


http://climbi.com/b/10215/1

前回、提示したマクロの83行目付近のRead1Bookを修正します。

'1つのブックを処理する
Private Sub Read1Book(ByVal bookname As String)
Dim ws As Worksheet
Dim i As Long
Workbooks.Open Folder & "\" & bookname
For i = 1 To Worksheets.Count
Set ws = Worksheets(i)
If ws.Name = "合計" Then Exit For '追加①
Call Read1Sheet(bookname, ws)
Next
Workbooks(bookname).Close
End Sub

追加①の行を追加してください。
シート名が”合計”の時、繰り返しを打ち切ります。(合計の左側のシートのみ処理します)
この回答への補足あり
    • good
    • 1
この回答へのお礼

お忙しい中、大変お手数をおかけいたしました。
テストとして2ブックでマクロ実行しましたが、無事解決いたしました。
また、二重に開くと~というメッセージでしたが今回はでませんでしたが
こちらは仰る通り、様子を見たいと思います。
ありがとうございます。

また、今回の合計シートと同じように個人シートのD列に「売上」となっているものを
集計して別シートとして「それ以外シート」に集計結果を表示させたいのですが
どこの部分のモジュールを書き換えたらよいでしょうか?
ちなみにそれぞれのブックの個人シートの②と③の売上とつくセルの数値を
それ以外シートの①(個人シートの②)、②(個人シートの③)へ集計結果を表示させたいです。
※個人シートの合計にはこの部分は含まれていない為、別シートで集計したいです。
画像を添付いたしましたので、再度で恐縮ではございますがご教授願います。

お礼日時:2017/05/26 13:08

>マクロと集計対象ブックの仕様は下記の認識で合ってますでしょうか?


>認識が相違しておりましたら申し訳ありません。
>↓
>①マクロのあるブックには合計シートのみ。
回答:ほかにあっても構いません。マクロのあるブックは合計シートのみ参照/更新します。
>②集計対象となるブックはxlsxのもののみ。
回答:あっています。

>また、集計対象となるブックには、個人のシート(複数)と合計シート、参照元データのピボッドの3部門の
>コピーシートがある。(前年、本年とあるので計6シートあり)
>集計対象シートは個人のシートのみです。
>私の説明不足で申し訳ありません。
>対象外のシートも含まれている為、合計シートより左側に置いたもののみ集計等、条件が必要でしょうか?
回答:はい、必要になります。
方法1:対象外シートの名称に規則性があれば、シート名でそれをスキップすることは可能です。(今後他のシートが追加されることがないことが条件になりますが)
方法2:”合計”のシートが全てのブックに必ず存在するなら、合計シートより左側に置いたもののみ集計し、合計シート以降のシートをスキップすることは可能です。
どちらか、あなたが運用しやすい方を、選択してください。

また、
>営業部.xlsx(テストブック)はすでに開いています。のメッセージについてですが
>他に開いている人はおらず、私だけなのですが。。なぜか出てしまいます。
回答:現状では、なぜメッセージが表示されるのか判りません。今後、同じフォルダ内の他のブックも同じ現象が起こるのか等の確認を行いながら
様子を見たいと考えます。(とりあえず試験は出来そうですので)
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございます。
インラインにて追記いたします。

>>マクロと集計対象ブックの仕様は下記の認識で合ってますでしょうか?
>>認識が相違しておりましたら申し訳ありません。
>>↓
>>①マクロのあるブックには合計シートのみ。
回答:ほかにあっても構いません。マクロのあるブックは合計シートのみ参照/更新します。
→承知いたしました。
>>②集計対象となるブックはxlsxのもののみ。
回答:あっています。
→承知いたしました。

>>また、集計対象となるブックには、個人のシート(複数)と合計シート、参照元データのピボッドの3部門の
>>コピーシートがある。(前年、本年とあるので計6シートあり)
>>集計対象シートは個人のシートのみです。
>>私の説明不足で申し訳ありません。
>>対象外のシートも含まれている為、合計シートより左側に置いたもののみ集計等、条件が必要でしょうか?
回答:はい、必要になります。
方法1:対象外シートの名称に規則性があれば、シート名でそれをスキップすることは可能です。(今後他のシートが追加されることがないことが条件になりますが)
方法2:”合計”のシートが全てのブックに必ず存在するなら、合計シートより左側に置いたもののみ集計し、合計シート以降のシートをスキップすることは可能です。
どちらか、あなたが運用しやすい方を、選択してください。
→対象シートに規則はなく、今後シートが増える場合もある為、方法2で運用したいと考えております。

また、
>>営業部.xlsx(テストブック)はすでに開いています。のメッセージについてですが
>>他に開いている人はおらず、私だけなのですが。。なぜか出てしまいます。
回答:現状では、なぜメッセージが表示されるのか判りません。今後、同じフォルダ内の他のブックも同じ現象が起こるのか等の確認を行いながら
様子を見たいと考えます。(とりあえず試験は出来そうですので)
→承知いたしました。いろいろとありがとうございます。

以上、よろしくお願いいたします。

お礼日時:2017/05/26 10:40

>ブック名=営業部.xlsx シート名=合計


営業部.xlsxには全て、個人の名のシートが入っている前提です。
そのC2、C3が空白の為、エラーが発生しています。
そもそも、集計対象のブックには、”合計”のようなシートがないことが前提です。

この事象で考えられることは以下のどちらかです。
①テストデータとして合計を作ってしまった。
②集計対象のブックには、集計対象外のシートが(今回の合計等)があるのだが、その旨の説明が漏れていた。

①の場合は、そのシートを削除して試験続行してください。
②の場合は、仕様変更となる。その場合は、集計対象外となるシートの条件を明記してください。

>営業部.xlsx(テストブック)はすでに開いています。
このメッセージの原因は、不明です。営業部.xlsxを事前に必ず、閉じてから行ってますでしょうか。
また、あなた以外のだれかが、開いているということはないですか。
この回答への補足あり
    • good
    • 1
この回答へのお礼

うーん・・・

再度、ご教授頂きましてありがとうございます。

マクロと集計対象ブックの仕様は下記の認識で合ってますでしょうか?
認識が相違しておりましたら申し訳ありません。

①マクロのあるブックには合計シートのみ。
②集計対象となるブックはxlsxのもののみ。

また、集計対象となるブックには、個人のシート(複数)と合計シート、参照元データのピボッドの3部門の
コピーシートがある。(前年、本年とあるので計6シートあり)
集計対象シートは個人のシートのみです。
私の説明不足で申し訳ありません。
対象外のシートも含まれている為、合計シートより左側に置いたもののみ集計等、条件が必要でしょうか?

また、
>営業部.xlsx(テストブック)はすでに開いています。のメッセージについてですが
他に開いている人はおらず、私だけなのですが。。なぜか出てしまいます。

本当に何度も申し訳ありませんが、再度ご教授頂ければ幸いです。

何卒、よろしくお願いいたします。

お礼日時:2017/05/26 09:51

下記URLへ保存しました。


http://climbi.com/b/10215/1

最後は、画像のように 支店名が「全体合計」になっていることが必須です。
また、この名称は変更しないでください。(変更すると正しく動作しません)
    • good
    • 1
この回答へのお礼

うーん・・・

何度もご教授頂きましてありがとうございます。
新たに頂いたマクロを下記手順で実行しましたところ、下記のような表示がされます。
私の実行過程もしくはシート等にエラーが出る原因があるのだと思いますが、どこが原因か恐れ入りますがご教授願います。

★テストとしてマクロが登録されている【マクロ】というテストブックでマクロ実行→「営業部.xlsx(テストブック)はすでに開いています。二重に開くと、これまでの変更内容は破棄されます。開きますか?」のメッセージ→「はい」→ファイル更新(ピボッド)→「ブック名=営業部.xlsx シート名=合計の支店名・課名(l)が合計シートに未登録と出ます。」のメッセージが表示されます。

お礼日時:2017/05/25 17:23

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

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

このQ&Aと関連する良く見られている質問

Q複数シートを集計したい(別シートへ集計結果を表示させたい)

シートごとに月別の取引先別商品別の計画と実績が入っています。
(※シートフォーマット参照)
この表に関してはすでに数式を組んでいるのですが、この取引先別の複数シートのデータを
一つに集計する別シートを作成したいです。(※合計フォーマット参照)
※取引先CDは7桁、商品CDは12桁

それぞれのシートの下のほうに数量、売上、仕入、粗利益(売上@、仕入@は数量で割る)の合計欄を設けているのでその数字を集計した別シートへ表示させたいです。

取引先別のシートのフォーマットは同じですが、取引先ごとに商品数が違う為、合計欄の行数が異なります。
複雑すぎて、関数でやったら良いのかマクロでやったら良いのか?
また、それぞれの場合どういった関数を組めばorマクロを組めばご教授願います。

Aベストアンサー

No4です。
No7は無視してください。
エラーが発生する原因は、セルの内容に数値でないものが設定されていることと考えられます。
数値でないセルを検出時、合計シートのそのセルのアドレス(行列)と内容をエラー表示するようにしました。
エラーメッセージが表示されたセルの内容をご確認ください。
又、データの作成されていない月については、データの加算をしないようにしました。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
下記URLに修正版を登録しました。

http://climbi.com/b/9943/2

実際に変えたのは、
'エリア合計
Private Sub AreaGoukei(ByVal title As String, ByVal gs As Worksheet, ByVal rowstart As Long, ByRef rowg As Long)

'東・西日本合計
Private Sub AllGoukei(ByVal title As String, ByVal gs As Worksheet, ByVal rowE As Long, ByVal rowW As Long, ByRef rowg As Long)
の2つのプロシージャです。(これ以外は変えていませんで、この2プロシージャのみ置き換えても構いません)
これで、再確認してください。

No4です。
No7は無視してください。
エラーが発生する原因は、セルの内容に数値でないものが設定されていることと考えられます。
数値でないセルを検出時、合計シートのそのセルのアドレス(行列)と内容をエラー表示するようにしました。
エラーメッセージが表示されたセルの内容をご確認ください。
又、データの作成されていない月については、データの加算をしないようにしました。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
下記URLに修正版を登録しました。

http://climbi.com/b/9943/2

実際に変...続きを読む

QExcelを使って行列変換をしたい(大量件数)

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeeeee oooooo
◆test2 kaaaaaa kiiiiiiiii kuuuuuuuuu keeeeee koooooooo

のように変換する必要がでてしまいました。

マクロなどで一括で変換できないでしょうか。
当方知識が乏しいため困っております。

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeee...続きを読む

Aベストアンサー

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
Else
wS.Cells(cnt, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(i, "A")
End If
Next i
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(...続きを読む

Q<エクセル>2つのデータに間違いがないかをチェックしたい

エクセルで入力したデータが、ルールに基づいて正しく入力できているかどうかを確認するような関数はありますか?

例として(添付画像もつけさせていただきました)「粉薬」と「飲薬」を入力し、各容量を入力します。
「粉薬」と「××g」、「飲薬」と「××」は必ずセットで入力されていることが必須です。
もし誤って「粉薬」のときに「××」と入力をした場合に、間違った入力がされていることが表示されるような関数はありますでしょうか?
枠外に〇や×として表示される
セルに色がつく・・・等

色々検索をして試してみたのですがうまくいきません。
VBAなども出てきたのですが私自身知識が全くないことと、作成したデータをあまりエクセルが得意ではない人が使う可能性などを考え、できれば関数などでできれば・・・と考えています。

Aベストアンサー

=IF(NOT(ISERROR(FIND("粉薬",B2))),IF(NOT(ISERROR(FIND("g",C2))),"○","×"),"・")
b2に粉薬の文字がある場合で、かつ、(c2にgの文字がある場合には、○を表示、ない場合は×を表示)、左記以外は・を表示

QExcel 2010 VBAの改変

下のVBAを使ってデータの抽出とコピーを自動でやっていたのですが、
業務変更?により、ブック内のシート名を変更しなければいけなくなりました。
"R-1", "R-2", "R-3", "R-4", "A-1start", "Z-1start"という6つのシート名を
→R-1→"弘前りんご", R-2→"夕張メロン", R-3→"白い恋人",R-4→ "じゃがぽっくる", A-1start→"札幌ラーメン", Z-1start→"白いブラックサンダー"
……といったように変更しなければならないのですが、
VBAの初心者なので、正直どこをいじっていいのか全くわかりません。

どなたかシート名を変更してもマクロが実行できるように直してはいただけないでしょうか。

Sub Sample()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim hizuke As String, wnum As String
Dim rng As Range
Dim i As Long, imax As Long
Dim j As Variant, c As Long
Dim sname As String
Dim fsh As Variant
fsh = Array("R-1", "R-2", "R-3", "R-4", "A-1start", "Z-1start")
hizuke = InputBox("日付を入力して下さい")
If hizuke = "" Then Exit Sub
If IsDate(hizuke) = False Then
MsgBox "日付不正"
Exit Sub
End If
Set sh1 = Worksheets("おみやげ表")
With sh1
Set rng = .Range(.Cells(4, 5), .Cells(4, .Cells(4, Columns.Count).End(xlToLeft).Column))
End With
j = Application.Match(CLng(CDate(hizuke)), rng, 0)
If IsError(j) Then
MsgBox "該当日付がありません"
Exit Sub
End If
wnum = InputBox("週を入力して下さい")
If wnum = "" Then Exit Sub
If wnum < 1 Or wnum > 5 Then
MsgBox "週不正"
Exit Sub
End If
Application.ScreenUpdating = False
c = wnum * 2 + 3
For Each sh2 In Worksheets
For i = 0 To 5
If sh2.Name = fsh(i) Then
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
Exit For
End If
Next i
Next sh2
With sh1
imax = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 6 To imax
If .Range("A" & i).Value <> "" Then
sname = .Range("D" & i).Value
Select Case sname
Case "R-1", "R-2", "R-3", "R-4"
Case Else
If (Left(sname, 3) = "A-1" Or Left(sname, 3) = "Z-1") And InStr(sname, "人気商品") = 0 Then
sname = Left(sname, 3) & "start"
Else
sname = ""
End If
End Select
If sname <> "" Then
Set sh2 = Worksheets(sname)
sh2.Cells(sh2.Cells(Rows.Count, c).End(xlUp).Row + 1, c).Value = .Cells(i, j + 4)
End If
End If
Next i
For i = 32 To 40
Set sh2 = Nothing
Select Case i
Case 32
Set sh2 = Worksheets("A-1start")
Case 33
Set sh2 = Worksheets("Z-1start")
Case 35
Set sh2 = Worksheets("R-1")
Case 37
Set sh2 = Worksheets("R-2")
Case 38
Set sh2 = Worksheets("R-3")
Case 40
Set sh2 = Worksheets("R-4")
End Select
If Not sh2 Is Nothing Then
.Cells(i, j + 4).Value = sh2.Cells(sh2.Cells(Rows.Count, c + 1).End(xlUp).Row, c + 1).Value
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "終了しました"
End Sub

下のVBAを使ってデータの抽出とコピーを自動でやっていたのですが、
業務変更?により、ブック内のシート名を変更しなければいけなくなりました。
"R-1", "R-2", "R-3", "R-4", "A-1start", "Z-1start"という6つのシート名を
→R-1→"弘前りんご", R-2→"夕張メロン", R-3→"白い恋人",R-4→ "じゃがぽっくる", A-1start→"札幌ラーメン", Z-1start→"白いブラックサンダー"
……といったように変更しなければならないのですが、
VBAの初心者なので、正直どこをいじっていいのか全くわかりません。

どなたかシート...続きを読む

Aベストアンサー

すみません。NO2で提示したマクロに誤りがありました。

If Left(sname, 6) = "札幌ラーメン" And InStr(sname, "人気商品") = 0 Then
sname = Left(sname, 6)
ElseIf Left(sname, 10) = "白いブラックサンダー" And InStr(sname, "人気商品") = 0 Then
sname = Left(sname, 10)
Else
sname = ""

上記が正しいマクロです。
今の状態のマクロは、赤字で表示される個所があるかと思います。
上記に変えれば、全て、黒字でマクロが表示されるはずです。
それを確認したのち、再度実行していただけ間瀬でしょうか。

すみません。NO2で提示したマクロに誤りがありました。

If Left(sname, 6) = "札幌ラーメン" And InStr(sname, "人気商品") = 0 Then
sname = Left(sname, 6)
ElseIf Left(sname, 10) = "白いブラックサンダー" And InStr(sname, "人気商品") = 0 Then
sname = Left(sname, 10)
Else
sname = ""

上記が正しいマクロです。
今の状態のマクロは、赤字...続きを読む

QVBAで抽出とコピペのループがうまくいかない?

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロなんですが、実際に通しても数値が0となってしまいます。
メッセージボックスで入力した後、「終了しました」と出るのですが期待通りに抽出してコピー&ペーストができていないようで困っています。
だれかたすけていただけませんか。

※抽出する項目
lightening※1
fire※2
water
leaf
wind
dragon

※1抽出する際、テキストフィルターのユーザー設定で
「lightening」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。
※2抽出する際、テキストフィルターのユーザー設定で
「fire」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。

Sub Pokemon()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim hizuke As String, wnum As String
Dim rng As Range
Dim i As Long, imax As Long
Dim j As Variant, c As Long
Dim sname As String
Dim fsh As Variant
fsh = Array("lightening", "fire", "water", "leaf", "wind", "dragon")
hizuke = InputBox("ポケモンを捕まえた日付を入力して下さい")
If hizuke = "" Then Exit Sub
If IsDate(hizuke) = False Then
MsgBox "日付不正"
Exit Sub
End If
Set sh1 = Worksheets("ポケモン図鑑")
With sh1
Set rng = .Range(.Cells(4, 5), .Cells(4, .Cells(4, Columns.Count).End(xlToLeft).Column))
End With
j = Application.Match(CLng(CDate(hizuke)), rng, 0)
If IsError(j) Then
MsgBox "該当日付がありません"
Exit Sub
End If
wnum = InputBox("選択した日付が何週目になるかを入力して下さい")
If wnum = "" Then Exit Sub
If wnum < 1 Or wnum > 5 Then
MsgBox "週不正"
Exit Sub
End If
Application.ScreenUpdating = False
c = wnum * 2 + 3
For Each sh2 In Worksheets
For i = 0 To 5
If sh2.Name = fsh(i) Then
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
Exit For
End If
Next i
Next sh2
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
End If
Next sh2
With sh1
imax = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 6 To imax
If .Range("A" & i).Value <> "" Then
sname = .Range("D" & i).Value
Select Case sname
Case "lightening","fire","water", "leaf", "wind", "dragon"
Case Else
sname = ""
End If
End Select
If sname <> "" Then
Set sh2 = Worksheets(sname)
sh2.Cells(sh2.Cells(Rows.Count, c).End(xlUp).Row + 1, c).Value = .Cells(i, j + 4)
End If
End If
Next i
For i = 32 To 40
Set sh2 = Nothing
Select Case i
Case 1
Set sh2 = Worksheets("lightening")
Case 2
Set sh2 = Worksheets("fire")
Case 4
Set sh2 = Worksheets("water")
Case 6
Set sh2 = Worksheets("leaf")
Case 7
Set sh2 = Worksheets("wind")
Case 9
Set sh2 = Worksheets("dogagon")
End Select
If Not sh2 Is Nothing Then
.Cells(i, j + 4).Value = sh2.Cells(sh2.Cells(Rows.Count, c + 1).End(xlUp).Row, c + 1).Value
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "ポケモン抽出コピペ終わり!"
End Sub

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロ...続きを読む

Aベストアンサー

プログラム自体の動きは全くチェックしていません。
色々おかしいところがありますが 自分でデバッグくらいできるように
ならないとダメだと思います。

42行目と 50行目の「End If」はどこに掛かっていますか?
51行目の Next sh2はどこに掛かっていますか?
最後の方の「dogagon」てつづりは合ってますか?
61行目の「End If」と 62行目の「End Select」の順番は合ってますか?
67行目の「End If」はどこと以下同文

初心者レベルでいいので VBAについての勉強を先にすべきだと思います。

Q元データ(ピボッド)を開かずマクロで更新したい。

同一フォルダ内の複数ブックの中に同じフォーマットの複数シートがあります。
その複数シートにSUMIFS関数で集計用の数式を組んでおり、その参照先元データ(ピボッド)が別ブックにあります。

以前、SUMIFS関数が別ブック参照エラーになる関数だと知り、数式を他の関数で組むか元データのピボッドをシートごとコピーするか?と教えていただいたので、元データシートを複数ブックにそれぞれコピーする方法を選択しました。
その各ブックにコピーした元データシートを元データを更新すると開かずともすべて更新できるようなマクロを組みたいです。

もしくは、他に何か良い方法があればご教授頂ければ幸いです。
何卒、よろしくお願いいたします。

Aベストアンサー

エラーメッセージは、
①○○○○○が存在しません
②○○○○○内に支店別&課別(個人データ)ブックが存在しません。
のうち、①のほうで間違いないでしょうか。○○○○○は、実績ファイル名です。

①の場合、以下の確認作業を行ってください。(②なら計画フォルダ内に支店別&課別のブックがないエラーなので論外です)

80行以降を以下のように変更する
'売上明細ブック名設定
Uri_path = Jis_folder & "\" & Uri_book
MsgBox ("ファイル名<" & Uri_book & ">") '追加①
MsgBox ("フルパス名<" & Uri_path & ">") '追加②
MsgBox (GetAttr(Uri_path)) '追加③
If Dir(Uri_path) = "" Then
MsgBox (Uri_path & "が存在しません")
Exit Sub
End If

追加①②は、昨日追加分
追加③が今回追加分です。

ケースA:追加③でエラーが発生した場合、物理的にそのファイルが存在しません。
ケースB:追加③でエラーが発生しない場合は、数字が表示されます。32が正常値です。
34又は35の場合、隠しファイルになっている可能性があります。
32又は34の場合、「○○○○○が存在しません」のエラーメッセージが表示されます。

ケースA,Bのどちらになるか、確認をお願いします。

エラーメッセージは、
①○○○○○が存在しません
②○○○○○内に支店別&課別(個人データ)ブックが存在しません。
のうち、①のほうで間違いないでしょうか。○○○○○は、実績ファイル名です。

①の場合、以下の確認作業を行ってください。(②なら計画フォルダ内に支店別&課別のブックがないエラーなので論外です)

80行以降を以下のように変更する
'売上明細ブック名設定
Uri_path = Jis_folder & "\" & Uri_book
MsgBox ("ファイル名<" & Uri_book & ">") '追加①
MsgBox ("フルパス名<" & Uri_path & ">...続きを読む

Q【補足回答希望】同一フォルダ内の複数ブックの複数シートの特定セルの集計を出したい

すみません、下記質問をすでに締め切ってしまった為
再度投稿しました。
1点再度ご教授願います。
https://oshiete.goo.ne.jp/qa/9760333.html

下記のマクロは合計シートの集計の際のマクロなのですが
合計シートより左側のシートを集計するという指示だと思うのですが
それ以外シートという別シートでも別の項目を集計する為、集計する際、それ以外シートが合計シートの右側にある為、エラーが出てしまいます。
そういった場合は、どういった内容に修正すればエラーにならずに処理できますでしょうか?

'1つのブックを処理する
Private Sub Read1Book(ByVal bookname As String)
Dim ws As Worksheet
Dim i As Long
Workbooks.Open Folder & "\" & bookname
For i = 1 To Worksheets.Count
Set ws = Worksheets(i)
If ws.Name = "合計" Then Exit For '追加①
Call Read1Sheet(bookname, ws)
Next
Workbooks(bookname).Close
End Sub

すみません、下記質問をすでに締め切ってしまった為
再度投稿しました。
1点再度ご教授願います。
https://oshiete.goo.ne.jp/qa/9760333.html

下記のマクロは合計シートの集計の際のマクロなのですが
合計シートより左側のシートを集計するという指示だと思うのですが
それ以外シートという別シートでも別の項目を集計する為、集計する際、それ以外シートが合計シートの右側にある為、エラーが出てしまいます。
そういった場合は、どういった内容に修正すればエラーにならずに処理できますでしょうか?
...続きを読む

Aベストアンサー

合計シートの右側でも「それ以外」シートは処理したいということでしょうか。
処理対象となるのは
①合計シートの左側のシート
②それ以外シート(どこにあっても良い)
となります。

'1つのブックを処理する
Private Sub Read1Book(ByVal bookname As String)
Dim ws As Worksheet
Dim i As Long
Dim flag As Boolean
flag = True
Workbooks.Open Folder & "\" & bookname
For i = 1 To Worksheets.count
Set ws = Worksheets(i)
If ws.name = "合計" Then
flag = False
End If
If flag = True Or ws.name = "それ以外" Then
Call Read1Sheet(bookname, ws)
End If
Next
Workbooks(bookname).Close
End Sub

合計シートの右側でも「それ以外」シートは処理したいということでしょうか。
処理対象となるのは
①合計シートの左側のシート
②それ以外シート(どこにあっても良い)
となります。

'1つのブックを処理する
Private Sub Read1Book(ByVal bookname As String)
Dim ws As Worksheet
Dim i As Long
Dim flag As Boolean
flag = True
Workbooks.Open Folder & "\" & bookname
For i = 1 To Worksheets.count
Set ws = Worksheets(i)
If ws.name = "合計" Then
...続きを読む

QCOUNTIF関数:前年データと本年データと照合して重複していない取引先をチェックしたい。

シート1 本年データ
A列:請求先名
B列:商品コード 4.5.6

シート2 前年データ
A列:請求名
B列:商品コード 4.5.6

前年データにある取引先と本年データを照合して、前年取引がなかった取引先を
チェックしてシート1の本年データのC列に☆印をつく数式にしたいのです。

IFとCOUNTIF関数を組み合わせて重複のチェックをしたいのですが
基本的な式は理解しているのですが、複数の条件で。。となるといろいろ調べたのですが
わからず質問させていただきました。
→1つの条件の場合は=IF(COUNTIF($A$2:A2,A2)>1,”☆","")だと思うのですが。。

また、本年データ中の取引先名によっては同一取引先名が存在する為
同一取引先名を1とカウントしたうえでチェックしたいです。
→これに関しては解決したのですが、この式とどう組み合わせ方がわかりません。。。
=IF(COUNTIF($A$2:A2,A2)=1,"☆","")

基本的な質問で申し訳ありませんが、何卒ご教授願います。

Aベストアンサー

こんばんは!

要は「前年データ」シートのA列にデータがなく、
「本年データ」シートの最初に出現した行のC列に「☆」を表示すれば良いのでしょうか?

「本年データ」シートのC2セルに
=IF(COUNTIF(前年データ!A:A,A2),"",IF(COUNTIF(A$2:A2,A2)=1,"☆",""))

という数式を入れ下へコピーしたらどうなりますか?

※ 的外れならごめんなさい。m(_ _)m

Qエクセルでの在庫管理表を作っているのですが・・・

初めての投稿なので質問の仕方が悪ければご指南頂ければと思います。

現在仕入・在庫の管理表をエクセルで作成しているのですが、
画像にあるように同じものを仕入れた時に単価と諸費用を過去の仕入を含めた平均を別のデータというシートに反映させたいのですがどのようにすれば宜しいでしょうか?

データシートは
各列ごとに
B:商品NO   
C:商品名
E:在庫数   =H2-G2
F:在庫金額  =E2*(I2+J2)
G:総販売数
H:総仕入れ数 =SUMIF(仕入!A:A,"1",仕入!E:E)
I:平均単価  =AVERAGEIF(仕入!A:A,"1",仕入!D:D)
J:平均諸費用 =AVERAGEIF(仕入!A:A,"1",仕入!F:F)
が入っております

仕入シートの所には
A:商品ID
B:商品名   =VLOOKUP(A2,データ!B:X,2,FALSE)
C:日付
D:仕入単価
E:仕入数
F:諸経費単価   =G2/E2
G:諸経費合計
上記の通りとなっております。

この場合だと「諸費用単価の合計/仕入れの回数」で平均単価が出てしまいます。
仕入単価の場合も同様です。
これを「諸費用単価の合計/仕入数の合計」にしたいのですがどのようにすれば宜しいでしょうか?
宜しくお願い致します。

初めての投稿なので質問の仕方が悪ければご指南頂ければと思います。

現在仕入・在庫の管理表をエクセルで作成しているのですが、
画像にあるように同じものを仕入れた時に単価と諸費用を過去の仕入を含めた平均を別のデータというシートに反映させたいのですがどのようにすれば宜しいでしょうか?

データシートは
各列ごとに
B:商品NO   
C:商品名
E:在庫数   =H2-G2
F:在庫金額  =E2*(I2+J2)
G:総販売数
H:総仕入れ数 =SUMIF(仕入!A:A,"1",仕入!E:E)
I:平均単価  =AVERAGEIF(...続きを読む

Aベストアンサー

=SUMIF(仕入!$A:$A,B2,仕入!$F:$F)/SUMIF(仕入!$A:$A,B2,仕入!$E:$E)

かな?

今後もExcelを活用していくなら、基本的なところは参考書籍など購入されて、学ばれると良いかと思います。
色々なWebサイトがありますが、初歩の初歩的なところを教えてくれているところって案外少ないんですよね。
最初を乗り越えれば、応用は、自分で調べるのが容易くなってくると思います。
頑張ってください。

Q【マクロ】値で貼り付けをしたい

---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
maxRow1 = Worksheets(sh1).Cells(Rows.Count, "A").End(xlUp).Row 'コピー元のA列最大行取得
maxrow2 = Worksheets(sh2).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
maxrow3 = Worksheets(sh3).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
MsgBox ("maxrow1=" & maxRow1 & " maxrow2=" & maxrow2 & " maxrow3=" & maxrow3) '①追加
rg1 = "A2:AD" & maxRow1
rg2 = "A" & (maxrow2 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)
rg1 = "D2:D" & maxRow1
rg3 = "A" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "H2:I" & maxRow1
rg3 = "B" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "K2:L" & maxRow1
rg3 = "D" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
End Sub
---------------------------------------------------------------------------------------------------------
以前、上記マクロをご教授頂いたのですが、
下記のところだけF列へ貼り付けをする際、値で貼り付けをしたいです。
Sh1のAE:AI列に数式が入っている為です。

rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)

値で貼り付けというのが「PasteSpecial Paste:=xlPasteAll」というのは調べてわかったのですが
どう繋げたら良いのか?ご教授頂ければ幸いです。

何卒、ご教授願います。

---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
...続きを読む

Aベストアンサー

例えば値だけを貼り付ける例(2行にする)
xlPasteAllだと、値も式も色も背景、罫線なども全てが貼り付きます。


Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh2).Range(rg2).PasteSpecial Paste:=xlPasteValues


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報