• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelシートのデータを複数シートに一括転送したい)

Excelシートのデータを複数シートに一括転送したい

このQ&Aのポイント
  • Excelシートのデータを複数シートに一括転送する方法を教えてください。
  • データの内容に応じて複数のシートにデータを転送したいです。具体的な方法を教えてください。
  • Excelのデータを店舗コード毎に分割して転送する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

> もう一件教えて頂きたいのですが、店舗コード別ではなくロケコード別等 > 最初の見出しを変える場合は式のどこを変更すれば良いでしょうか? お礼欄に「できた」とありますが、補足欄とどちらのコメントが先(´・ω・`)? 追加質問が後という前提で回答しますね。 #1 のコードのうち     ' 見出し行を取得します     Set rMidasi = Range("A1:C1") ここで見出しの範囲を設定してます。したがって、実際は A1~J1 が見出しなら     ' 見出し行を取得します     Set rMidasi = Range("A1:J1") のように変更します。次に     ' 店舗コードのセル参照     Set rCode = Sh.Cells(i, "A") ここで、A 列の店舗コードを参照しています。ロケコードというものが、例えば F 列にあるなら、     ' ロケコードのセル参照     Set rCode = Sh.Cells(i, "F") のように修正します。 > 何度も申し訳ありません。 別に構いませんよ。それよりも折角なので、無理のない範囲で結構ですから マクロのカスタマイズにチャレンジしてみてほしい...と思います。 キー列を切り替えるのに都度コードを修正するのは面倒なので、一歩踏み込んで マクロ実行時にどの列でシートを切り分けるか問い合わせて、指定できるように してみて下さい。 参考)INPUTBOX を使います。これをどこに入れたら良いか...考えてみて下さい。 sCol = InputBox("A~C のどれか1文字を半角で入力して下さい", "シート切り分けのキー列指定") If sCol = "" Then Exit Sub ~(略)~ ' キー列のセル参照 Set rCode = Sh.Cells(i, sCol)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> マクロは・・・どのように設定すればいいのでしょうか? 【マクロの貼り付け方】 1. Excel 画面で[Alt]+[F11]キーを押す   Visual Basic Editor (以下 VBE )起動 2. VBE 画面で[挿入]-[標準モジュール]をクリック 3. #1 の「Sub 店舗コード別にシート切り分け()」 から 「End Sub」の行を   コピーし、2. の操作で開いたスペースに貼り付け 4. VBE を閉じる 【実行準備】 > 上記のようなデータがシート1にあるとして、店舗コード毎に他のシートに > データを転送したいと思っています。 とありましたので、データのあるシート名は「シート1」にしてます。Sheet1 などに変更したい場合は、#1 のコードのうち以下の部分を修正して下さい。 なお、修正は VBE で行います。   ' データシート参照   Set Sh = ThisWorkbook.Sheets("シート1") マクロを実行すると、店舗コードに対応したシートを自動で挿入していきますの で、予め用意する必要はありません。 【実行手順】 1. Excel 画面で[ツール]-[マクロ]-[マクロ] から実行します。 【注意点】 このマクロはデータシート「シート1」にあるデータを既に転記済みであるか どうかを問わずに全て店舗コード別に対応するシートに振り分けます。 つまり、一度シートに振り分けたら「シート1」の内容をクリアしておかないと 古いデータが重複して転記される恐れがあるので、運用に注意して下さい。 文章にすると大変そうですが、一度やってしまえばたいした作業ではありません。 では、頑張って下さい。 # マクロではなく、オートフィルターによる方法もご提案しました。 # こちらもご検討下さい。

cmaoma
質問者

お礼

で、できました~!!!!!! ご丁寧に教えて頂き本当に感謝です。 例では少量のデータでしたが実際は膨大なデータ数なのでオートフィルタではめんどうだなと思っていました。 式の内容はわかりませんが、もっと勉強したいと思います。 本当にありがとうございました。

cmaoma
質問者

補足

ごめんなさい。 もう一件教えて頂きたいのですが、店舗コード別ではなくロケコード別等最初の見出しを変える場合は式のどこを変更すれば良いでしょうか? 何度も申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 ▼ 提案 1   オートフィルターで店舗コード毎にそれぞれ抽出したデータを   コピーして、シートに貼り付け   長所:目視しながらの作業なので確実、重複データを誤って貼り付けても      「やり直し」ボタンで元に戻せる   短所:件数が多いと面倒   # そもそもオートフィルターという便利な機能があるので、シートに切り   # 分ける必要は無い気もします。後々のデータ加工で面倒になりますよ。 ▼ 提案 2   マクロによる解決(参考コード)   長所:マクロ実行のボタンポッチで完了する。楽ちん。   短所:現状では既に転記済みかどうかを判定するフラグがないので      誤って複数回マクロを実行すると重複転記の危険性がある。      やり直しはできない。<-- 重要なのでご注意を ' 場所は「標準モジュール」 Sub 店舗コード別にシート切り分け()   Dim Sh   As Worksheet   Dim lRownum As Long   Dim i    As Long   Dim rCode  As Range   Dim rDest  As Range   Dim rMidasi As Range      ' データシート参照   Set Sh = ThisWorkbook.Sheets("シート1")   With Sh     ' 見出し行を取得します     Set rMidasi = Range("A1:C1")     ' データ最終行を求めます     lRownum = .UsedRange(.UsedRange.Cells.Count).Row   End With      Application.ScreenUpdating = False      ' データ2行目から最終行までループ   For i = 2 To lRownum     ' 店舗コードのセル参照     Set rCode = Sh.Cells(i, "A")     If rCode.Text <> "" Then       On Error GoTo ERROR_NOEXIST_SHEET       ' 転記先セルを参照       ' エラー発生ならシートがないので、エラーハンドラに       ' 飛ばしてシートを追加してリトライ       Set rDest = ThisWorkbook.Sheets(Trim$(rCode.Text)) _             .Cells(Rows.Count, "A").End(xlUp).Offset(1)       On Error GoTo 0       ' 行全体をコピーして転記       rCode.EntireRow.Copy Destination:=rDest     End If   Next i   ' 後始末   Sh.Activate   Set rDest = Nothing:  Set rCode = Nothing   Set rMidasi = Nothing: Set Sh = Nothing   Application.ScreenUpdating = True   MsgBox "終わったみたい(´・ω・`)", vbInformation   ' 終了   Exit Sub    ERROR_NOEXIST_SHEET:   ' シートが存在しない場合のエラーハンドラ   Err.Clear   On Error Resume Next   With ThisWorkbook.Worksheets.Add(After:=Sheets(ThisWorkbook.Sheets.Count))     .Name = Trim$(rCode.Value)     rMidasi.Copy Destination:=.Cells(1, "A")   End With   If Err Then     ' ここでエラーが再び発生するようなら店舗コードがシート名として     ' 相応しくないデータである...かも。 -->強制終了     MsgBox Err.Description, vbCritical     End   Else     ' エラーをクリアしてリトライ     Err.Clear     Resume   End If End Sub

cmaoma
質問者

補足

お忙しい中ご回答ありがとうございます。 マクロは・・・どのように設定すればいいのでしょうか? 何もわからなくてすみませんが教えて下さい。 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数シートに振り分けたデータをそれぞれ集計したい

    こんにちは。 商品コード 名称  金額      業者 100    PC1  10,000  ア 110    PC2  10,000  ア 200    PC3  20,000  イ 300    PC4  30,000  イ 上記のようなデータがシート1にあるとして、業者毎に他のシートにデータを転送するまでは何とか無事にマクロを組むことが出来ました。 この後、業者毎に分けたそれぞれのシートの最終行で金額の集計をしたいのです。 例えばシート2の業者アのデータであれば↓ 商品コード 名称  金額      業者 100    PC1  10,000  ア 110    PC2  10,000  ア 総計          20,000   同じようにシート3の業者イのデータ、シート4の業者ウのデータ・・・を集計したいのですが、どの様なマクロを組めばそれぞれのシートの最終行で集計が表示されるのでしょうか? ちなみに、商品数、業者数とも変動するため、固定値が入れられません。 本やインターネット等でいろいろ調べてみたのですが、分かりませんでした。 お分かりになる方がいらっしゃいましたら、どうかご教示ください。 宜しくお願い致します。

  • Excelでシート間のデータの抽出方法

    1つのブックに集計用のシートと、A店、B店、C店という各店舗別の売上シートがあります。 Sheet集計用のA1にA店のコード(A店は001、B店は002というようなコード)を入れると、Sheet集計用のB列の上期売上、C列の下期売上にSheetA店のB列の上期売上、C列の下期売上のデータが入るようにすることは可能でしょうか? Sheet集計用のA1のコード変更することによってデータを引っ張ってくるシートが変わる様にしたいということなんですが、Excelでどのようにすればいいかわかりません。 各店舗のシートのA1のセルにも、その店舗のコードが入力されています。

  • フォルダ内の複数ファイルから特定のシートを一括削除

     Excel2003環境です。  VBの使い方自体まだよく判ってない初心者ですが、質問させてください。  一つのフォルダ内に、複数(だいたい300くらい)のエクセルファイルがあります。  これらは、同一の原型ファイルを基にリネームした資料なのですが、これら全てに入っている特定のシートを一括削除したいのですが、その方法を知りたいと思います。  具体的には、 Sheet1/見積り資料 Sheet2/記入例 Sheet3/部品単価 Sheet4/(Sheet3の内容をVLOOKUPで引っ張っているデータ一覧) という構成&シート名です(Sheet4は名称を特に定めてません)。 すべてのファイルに上記シートが設定されてますが、このうち「Sheet3/部品単価」を全て削除したいのです。 勿論、これによりSheet4が崩れても構いません(というか存在は無視します)。 そのような方法はありませんでしょうか? また、VBのコードと一緒に、それを使用するためにどのような準備をするべきか、そちらもお教えいただければと思います。 (コードの書き込みと保存はわかりますが、上記の場合どこに書き込んでどう保存すべきかよくわかっていません) 以上、どうぞよろしくお願い致します。

  • エクセル 複数シートのデータをまとめたい

    他の質問を参照したのですが、できないのでお願いします。 新しいシート(ブックでもいいです)に次のデータを ひとまとめにしたい。 外国語テストのデータです。 (1)ひとつのブックにシートが十枚ある (2)列a2~h2 行2~29までデータがある。 (3)列a番号(a2が1、a29が28)  列b空欄  列c日本語  列d外国語 この構造を倍にしているのでa~hにデータが並んでいる。 これを、 つまり、8×28のデータが各シートにあるわけですが 【ひとつ】 できればシート1のデータの下 29行目からシート2のデータ、58行目からシート3… というように並べたい。 【ふたつ】 更にできるならa~dの下にe~hを持ってきて 4×56の並びにして 57行目からシート2のデータ…というように並べたい。 データの並びは列a列eの番号順を保持できたらうれしいです。 どうぞよろしくお願い致します。

  • excel vba 複数シートをまとめる

    お世話になります。 A.xlsというブックがあります。 その中に[集計]というシートがあります。 このシートに[ボタン]を配置してクリックしたら以下の動作を実現させたいのです。 (1)[集計]シートのA2に位置セット (2)[東京]、[大阪],[名古屋]という名称のシートの列=A2~A62、行=A2~データ最下行にある全データを[集計]シートにどんどんコピー貼り付けして追加していきたいのです。 上記動作を実現するVBAのロジックをどなたかご教授いただけますでしょうか。 よろしくお願い致します。

  • エクセルデータを照合したいのですが・・・

    データの照合でかなり時間を使っているので、何とか効率を図りたくて、でも、知識なくわからないので、どなたか教えてください。 シート1 No. JANコード 数量 単価 金額 その他データ シート2 No. JANコード 数量 単価 金額 その他データ と、同じようなデータが別々の場所から抽出されます。その他データには、それぞれ少しずつ違う内容が入って、一行になっています。 No. JANコード 数量 単価 この4項目が一致したら、シート1とシート2のデータで一致するものを、 シート1の一致するシート2のデータを表示させたいのですが、そのようなことがそもそもできるのか、できるなら方法を教えていただきたいのですが・・・ よろしくお願いいたします。

  • エクセル:別シートの複数ある同じデータを一発検索したい!

    長文ですみません。 家計簿を我流でエクセル管理しています。日々の支出のみのシートは、列に日を、行には摘要、数量、金額、分類、などを入れるスタイルです。日が前後してもあとで並べ替えできるのでどんどん思いつきで羅列しています。 ちなみにブックの構成は、上記の出納帳のようなシートのほかに、そのシートのデータを月別にわけた複数のシートと、携帯電話支払い金額や、保険、教育費、光熱費のそれぞれのシート、収入をまとめたシート、そしてそれらをリンクさせてきてまとめた合計金額シート、などからなっています。ピボットテーブルも月の締めくくりで使っていますが、これとはまた求めるものが違うので・・・。 質問事項は、上記の月別にわけた複数シートから、データの中で何度も出る品名について過去のデータの金額の傾向を調べたいのです。イメージとしては、別の画面上で検索ボタンに目的の品名を入れると、複数のシートから探してきてすべてを一覧表示させていついつに、どんな値段で購入されているかがわかるようにさせたいのです。簡単な関数なら扱えるようになっていますが、教えてください。わかりにくければまた補足いたしましう。よろしくお願いいたします!

  • エクセルの2つのシートを使ったデータ加工について

    (1) 項目1 項目2 ・・・  目標 金額(前月) 目標-金額 (2) 項目1 項目2 ・・・  目標 金額(今月) 目標-金額 というようなそれぞれ2つのシートがあります。 この2つのシートから、 項目1 項目2 ・・・  目標 金額(前月) 金額(今月) 目標-金額 前月-今月 といったような新しいシートを作成したいです。 ただ、ここで問題なのが、(1)と(2)のデータ列の数や並びが同じでないことなんです。 (1)にはあるが(2)にはないデータがあったり、逆に(1)にはないが(2)にデータがあったりなどです。 (1)と(2)に共通(重複)しているデータについてはVLOOK関数などで金額を抽出できそうですが、 そうでないものの処理をどうしたらいいのか…。 (1)と(2)で共通(重複)してないものを見つけて、その部分をコピー&貼り付けすればできなくはありませんが、大量のデータで、かつ何度も同じことをするのが非効率に感じます。 エクセルで上記のようなことが簡単?にできるのかどうか、詳しい人がいたら教えて下さい。 よろしくお願い申し上げます。 ちなみに、マクロは素人です。

  • エクセルのデータ転送

    エクセルのデータ転送 ど素人で困っています エクセルで作成したデータをCDへの送り方が分かりません Sheet1~5まであります よろしくお願いします

  • エクセル2002 複数シートの一括変更

    エクセル初心者ですので、説明が長く解りづらいと思いますが、困っていますので回答よろしくお願いします。 「名称」「所在」「日付」の共通した項目のある複数のシート「Aシート」「Bシート」「Cシート」を一つのブック(仮にファイル名ブック1とします)にまとめています。AシートのA1セル、BシートのA1セル、CシートのA1セルに同じ項目(名称・所在・日付)を入れたい場合、1回の入力で全てのシートの同一項目が変更できるようにBシート、Cシートに「=Aシート!A1」の式を入れ、AシートのA1セルに名称等を記入すればBシート、Cシートの同一項目も一括して書き換わるようにしています。 同一ブックで使っている分には、上記の方法で共通した項目を一括変更できるのですが、別のブックからシートをコピーした場合、「=Aシート!A1」の式がかわってしまいコピーしてきたシートの項目だけが変わらない状態になります。 例えば、ブック1と書式が同じブック2(シートA’、シートB’、シートC’の複数シートで構成され各シートはブック1のシートA・B・Cと同じ書式)がありブック1にブック2のシートB’をコピーした場合シートB’のA1セルは、「=[ブック2.xls]Aシート!A1」となり自動的にこのシートの項目が変換されません。このとき、[ブック2.xls]の部分だけを毎回消して使っていますが、シートが増えると作業時間もかかりますし、複数のスタッフで使う場合この使い方をそれぞれに説明する必要があり困っています。 解りづらい説明で申し訳ありませんが回答よろしくお願いします。

専門家に質問してみよう