• 締切済み

エクセルマクロ シートごとに分割

編集の関係上、県別にシート分けをしたいのですが マクロで出来ないでしょうか? もし出来るようでしたら教えていただけると助かります。 社名 県名 ・・・・・・ a 北海道 b 北海道 c 青森 d 青森 ・ ・ ・ ↓ シート名:北海道 社名 県名・・・・ a 北海道 b 北海道

  • sskj
  • お礼率24% (75/303)

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

オートフィルターで、極力マクロ自動記録でやってみました。元データはSheet1にあり、県名はB列とします。Sheet2に、重複しない県名リストを書き出してから処理します。元データ範囲は適宜変更してください。 XL2000のコードです。思いつきなのであまり検証してありませんので、あしからず。 Sub Macro1() Dim i As Long Dim prefname As String '重複しない県名リストを作成 Sheets("Sheet1").Range("$B:$B").AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet2").Range("A1"), Unique:=True For i = 2 To Application.WorksheetFunction.CountA(Sheets("Sheet2").Range("$a:$a")) prefname = Sheets("Sheet2").Cells(i, 1).Value Sheets("Sheet1").Select Range("A1:C5").Select '元データの範囲 'Range("A1").CurrentRegion.Select '目的の表が、ctrl+shift+:で選択できる場合 Selection.AutoFilter Field:=2, Criteria1:=prefname, Operator:=xlAnd Selection.Copy Sheets.Add Range("A1").Select ActiveSheet.Paste ActiveSheet.Name = prefname Next i End Sub

sskj
質問者

お礼

自分なりにマクロ登録のみで作成できました。 ありがとうございました。

sskj
質問者

補足

回答ありがとうございました。 実行してみましたが、よく分からない結果に・・・ 私のスキルでは修正できそうにありませんでした。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

この様な感じで? Sub test() Dim i, j Dim ws As Worksheet Set ws = ActiveSheet For j = 2 To ws.Cells(Rows.Count, 2).End(xlUp).Row For i = 1 To Worksheets.Count If ws.Cells(j, 2).Value = Worksheets(i).Name Then ws.Rows(j).Copy Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Offset(1) Exit For ElseIf i = Worksheets.Count Then Sheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = ws.Cells(j, 2).Value ws.Rows(j).Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1) ws.Select End If Next i Next j End Sub 表の有るシートを表示してから実行してください 社名 県名・・・・<<これって何処まであるの? 質問が曖昧なので、この程度のマクロしか提示できませんよ 後はご自分で修正してくださいね 参考程度に

sskj
質問者

お礼

自分なりにマクロ登録のみで作成できました。 ありがとうございました。

sskj
質問者

補足

ありがとうございます。 取り敢えずそのまま実行してみましたが、 県の最後の一行が別シートに出力されてしまうようです。 残念ながら修正できるほどのスキルは持ち合わせていません。

関連するQ&A

  • エクセル マクロ 対象列をコピーする

    エクセル マクロについて質問です。 下記のようなデータがありますが、【商品名】ごとにまとめたものを 別のシートへ行ごとコピーをして、商品名毎にまとめたいと思っています。 マクロの構文が思いつかず、よい方法はないでしょうか。 初歩的な質問かも知れませんがおしえてください。 マクロ実施前 【県名】  【商品名】 【売り上げ日】 【その1】 【その2】 埼玉県   A 東京都   B 神奈川県  B 千葉県 A 栃木県   C 群馬県   D マクロ実施後↓↓ Aシート 【県名】  【商品名】 埼玉県   A 千葉県 A Bシート 【県名】  【商品名】 東京都   B 神奈川県  B Cシート 【県名】  【商品名】 栃木県   C 群馬県   D Dシート 【県名】  【商品名】 群馬県   D

  • エクセルのマクロでシートを表示させる

    マクロ初心者です。 1つのブックに20シート入っているのですが、 チェックBOXにチェックを付け、該当するシートのみを表示させるマクロを教えてください。 sheet1以外の下記のシートA~Dは非表示になっており sheet1にはシート名 A B C D というチェックBOXがあり、 例えば、Bにチェックを入れるとBのシートが表示され、 AとDなど複数チェックが入るとチェックしたシートが表示される様な マクロがありましたら、教えてください。 マクロの記録で読み込ませているのですが、複数シートの為、限界を感じております。 よろしくお願い致します。

  • エクセルで並べ替えて比較をしたいのですが。

     エクセルで並べ替えて比較をしたいのですが。 現在データの集計を行っているのですが、データ(仮に都道府県名としておきます)比較をするに際して シートAにあるデータとシートBにあるデータが必ずしも全て一致するわけではなく、 シートAは47都道府県全てのデータがあり シートBには所々データが抜けていて順番もAとは全然異なる配列で並んでいます。 この際にシートBのデータをシートAのデータの順番に並び替え一つのシートにし、データの分析を行いたいのですが、シートBの並べ替え方がわかりません。是非教えてください。よろしくお願いします。 変更前 シートAシートB 県名|顧客数 県 名|a|b|c 北海道|156 秋田県|1|5|4 青森県|283 | | | 岩手県|384 岩手県|2|6|4 宮城県|294 福島県|4|6|4 秋田県|148 | | | 山形県|54   青森県|3|5|1 福島県|213  宮城県|1|2|2 変更後 シートAシートB 県名|顧客数  県 名|a|b|c 北海道|156 青森県|283  青森県|3|5|1 岩手県|384  岩手県|2|6|4 宮城県|294  宮城県|1|2|2 秋田県|148  秋田県|1|5|4 山形県|54 福島県|213  福島県|4|6|4

  • 複数エクセルシートの組合せるマクロの質問です

    以下の例のようにシート1とシート2をシート3のように組み合わせることのできるマクロを教えていただけませんか。 <sheet1> A B A C A B C A B D <sheet2> 1 1 1 0 1 1 0 1 0 1 <sheet3> A B 1 1 A B 1 0 A C 1 1 A C 1 0 A B C 1 1 0 A B C 1 0 1 A B D 1 1 0 A B D 1 0 1

  • エクセルでの計算式を教えてください。

    エクセルでC列に結果を表示させたいのですが A:社名 B:商品名 C:価格   A1が空欄 → Cも空欄に。 A1にAという社名 → B1の商品名を[シート1]から検索し、Cに価格を表示 A1にA以外の社名 → B1の商品名を[シート2]から検索し、Cに価格を表示 今までは単純にA1に社名が入っていれば[シート1]から検索すればよかったので =IF(A1="","","VLOOKUP(A1,[シート1]!A:D,3,FALSE)) とやっていました。 条件が1つ増えたので式をかえたいのですがどのようにすればいいでしょうか? マクロはさっぱりなので、IFとかORとかで式ができるのであれば教えてください。 よろしくお願いします。

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • 複数エクセルシートの組合せるマクロの質問で(2)

    ややこしくて済みません。質問の真意は以下の通りです。 <シート1>にはABCD....の2桁からの組合せ、<シート2,3,4....>には0と1の2桁、3桁、4桁....の組合せになります。そして<macro>シートには<シート1>の各桁の組合せと0,1を組合せた結果のまとめになります。以下は例文です。 <sheet>1 A B A C : : A B C A B D : : : A B C D A B C E : : : : <shee2> 1 1 1 0 : : <sheet3> 1 1 1 1 0 1 : : : <sheet4> 1 1 1 1 1 1 1 0 : : : : <macro> A B 1 1 A B 1 0 : : A B C 1 1 1 A B C 1 0 1 A B D 1 1 1 A B D 1 0 1 : : : A B C D 1 1 1 1 A B C D 1 1 1 0 A B C E 1 1 1 1 A B C E 1 1 1 0 : : : : 以上、マクロの組み方あるいは関数などで解決できる方法を教えていただきたいです。

  • エクセルの事について、教えてください。

    エクセルの事について、教えてください。 ネットで色々探しましたが、やりたい事を見つける事が出来ませんでしたので、こちらに来ました。 エクセルでやりたいことは、次の通りです。 Sheet1には、県別リストがあります。 Aの縦にNo.(1~48)の数字 Bの縦に都道府県名(上から北海道・青森・~・鹿児島・沖縄) Cの縦に商品aの数 Dの縦に商品bの数 Eの縦に商品cの数 Fの縦に商品abcの合計 例) A1に1、B1に北海道、C1に○○商品、D1に△△商品、E1に□□商品、F1にC1+D1+E1=合計 A2に2、B2に青森県、C2に○○商品、D2に△△商品、E2に□□商品、F2にC2+D2+E2=合計 ↓    ↓       ↓      ↓       ↓      ↓    A46に46、B46に鹿児島県、C46に○○商品、D46に△△商品、E46に□□商品、F46にC46+D46+E46=合計 A47に47、B47に沖縄県、 C47に○○商品、D47に△△商品、E47に□□商品、F47にC47+D47+E47=合計 A48とB48に合計の文字、C48に○○商品の合計、D48に△△商品の合計、E48に□□商品の合計、F48にC48+D48+E48=合計 Sheet2は、今月ある○○県に売り上げがあれば、No.と県名。そして、どの商品(abc)がいくつ売れたかをメモのように入力します。(メモとは言え、あとでプリントアウトして使用します) Sheet2で県名・商品の数等を入力しますが、県の順番はばらばらです。 例えば、今月は青森・東京・宮城・広島・他県等で商品abcがいくつ売れた。 来月は大阪・静岡・新潟・福岡・他県等で商品abcがいくつ売れた。 Sheet2で入力した、県名・商品abcの数値をSheet1のリストに反映させたいのですが、このような事は出来ますでしょうか? 言葉にすると難しいですね。私のやりたい事、おわかりになりましたでしょうか? 私は簡単なリストの作成や合計、また数値を入力したら指定の場所へその数値を飛ばす事位しか出来ません。こんな私でも出来るかな~?(ちょっと心配・・・) 出来ましたら、具体的にわかりやすくご教授をお願い致します。エクセルは、2003です。 以上 宜しくお願い致します。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • エクセル 2つのシートの抽出

    シート1 コード|地域|住所 0001|青森A|青森県青森市○丁目○-○ 0002|青森D|青森県青森市×丁目×-× 0003|岩手B|岩手県岩手市○丁目○-○ 0004|岩手D|岩手県岩手市×丁目×-×         シート2   コード|(住所を抽出したい) 0003| 0001|  シート1は一覧表で、シート2は今回の対象だとします。 シート2のコードとシート1のコードが一致したら、 シート2のB列にシート1の住所を抽出したいのですが、どのような方法があるのでしょうか?教えて下さい。

専門家に質問してみよう