• ベストアンサー

【エクセル】シートを分割するマクロを教えてください

deecyanの回答

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.3

これだけでは分かりませんね AddNewSheets のサブルーチン と GetUniqueArrayのファンクション は長いですか? 提示してもらえませんか?

00buchan00
質問者

補足

回答ありがとうございます。 続きを提示させていただきます。 よろしくお願いいたします…。 Sub AddNewSheets(NewName As Variant, us As Range, CodeIndex As Integer) Dim AnotherSheet As Worksheet Application.StatusBar = NewName & "について検索中" us.AutoFilter Field:=CodeIndex, Criteria1:=NewName Set AnotherSheet = Worksheets.Add us.SpecialCells(xlVisible).EntireRow.Copy (AnotherSheet.Cells(1, 1)) AnotherSheet.Name = NewName End Sub Function GetUniqueArray(us As Range, CodeIndex As Integer) As Variant Dim NewSheet As Worksheet Set NewSheet = Worksheets.Add us.Columns(CodeIndex).AdvancedFilter _ Action:=xlFilterCopy, _ copyToRange:=NewSheet.Range("A1"), _ criteriaRange:=us.Columns(CodeIndex), _ Unique:=True GetUniqueArray = NewSheet.UsedRange Application.DisplayAlerts = False NewSheet.Delete Application.DisplayAlerts = True End Function Function UniqueDataCount(CodeIndex As Integer) As Long Dim us As Range Dim UniqueArray As Variant Set us = ActiveSheet.UsedRange us.Columns(CodeIndex).AdvancedFilter _ Action:=xlFilterCopy, _ copyToRange:=ActiveSheet.Range("G1"), _ criteriaRange:=us.Columns(CodeIndex), _ Unique:=True End Function

関連するQ&A

  • エクセル:シートの分割

    お世話になります。 エクセルで、あるシートに任意の行数のファイルがあります。 1~6行目はタイトル行扱いで、7行目からがデータ部分になります。 この7行目からはじまるデータ部分を25行分ずつシート単位で分割したいのです。 1つ目のシートが分割前の本データとすると、2つ目のシートには1~6行目と7~31行目、2つ目のシートは1~6行目と32~56行目… というように。 必ず各シートの先頭は1~6行目部分になります。 1つ目のシートが分割前のシートで、2つ目以降に25行分ごとに分割されたシートがどんどん追加されていくイメージです。A列には必ずデータが入っているので、A列にデータが入っている最終行までが処理の対象になります。 追加するシート名は、分割1、分割2…というようにしたいです。 このような処理を自動化するマクロができれば教えてください。

  • エクセルの各シートをアクセスで結合するには

    お世話になります。 1つのエクセルファイルに同じ書式のシートが複数あります。1行目がタイトル行で2行目以降にデータが入っています。 この各シートのA2セルからM列の最終行までの範囲のデータを順番にアクセスに取り込み一つのテーブルを作成したい。各シートのデータを縦に結合するイメージです。行数は各シートバラバラです。また各シートの列数はM列より多いが必要なのはM列までです。 最初のシートだけタイトルが必要なのでA1セルから取り込みます。 縦に並べるとエクセルの最大行数を超える可能性があるので一旦エクセル上で縦に並べることは考えません。 アクセスに取り込んだ際、主キーになる項目がないので左端に1からの連番の列を作ります。 以上のことをするためにはどのようにすれば良いのでしょうか?シートがかなりあるので自動化できればうれしいです。 空シートはありませんが、空白のセルはあります。 よろしくお願いします。

  • データ抜き出し・別シートへ貼付マクロ

    WinXP、Office2003を使用しています。 Sheet1に入力されている情報から、下記条件を抜き出し、あらかじめ用意 してある別シートに書き出したいをしたいと思っております。 業務が多く恥ずかしながら手が回らず、少しでも負荷を軽くしたいのですが ご存知の方がいらっしゃいましたらマクロを教えていただけませんでしょうか? なお、1行目にはタイトルが入っており、2行目以降に情報が入っています。 【実施したい処理】 ・B2セルに「/愛知」と入っていたら、A2・B2・C2セルの値を あらかじめ作成してある "/愛知"シートへ書き出す。 ・B2セルに「/東京」と入っていたら、A2・B2・C2セルの値を あらかじめ作成してある "/東京"シートへ書き出す。 ・B2セルに「/大阪」と入っていたら、A2・B2・C2セルの値を あらかじめ作成してある "/大阪"シートへ書き出す。 ※2000行ぐらい情報が入っています。 【イメージ(処理前)】        A列          B列         C列 1行目  A列タイトル      B列のタイトル     C列のタイトル 2行目 あああ/1234/111  あああ/1234/111/愛知   56789 3行目 ててて/2222/987  ててて/2222/987/東京   11122 4行目 くくく/5467/232  くくく/5467/232/愛知   65656 5行目 ままま/5555/741  ままま/5555/741/大阪   33444 【イメージ(処理後)】 愛知シート        A列          B列         C列 1行目  A列タイトル      B列のタイトル     C列のタイトル 2行目 あああ/1234/111  あああ/1234/111/愛知   56789 3行目 くくく/5467/232  くくく/5467/232/愛知   65656 東京シート        A列          B列         C列 1行目  A列タイトル      B列のタイトル     C列のタイトル 2行目 ててて/2222/987  ててて/2222/987/東京   11122 大阪シート        A列          B列         C列 1行目  A列タイトル      B列のタイトル     C列のタイトル 2行目 ままま/5555/741  ままま/5555/741/大阪   33444 わかりにくくて申し訳ございませんが、よろしくお願い致します。

  • エクセルの各シートをアクセスで縦に結合するには

    お世話になります。 1つのエクセルファイルに同じ書式のシートが複数あります。1行目がタイトル行で2行目以降にデータが入っています。 この各シートのA2セルからM列の最終行までの範囲のデータを順番にアクセスに取り込み一つのテーブルを作成したい。各シートのデータを縦に結合するイメージです。行数は各シートバラバラです。また各シートの列数はM列より多いが必要なのはM列までです。 最初のシートだけタイトルが必要なのでA1セルから取り込みます。 縦に並べるとエクセルの最大行数を超える可能性があるので一旦エクセル上で縦に並べることは考えません。 アクセスに取り込んだ際、主キーになる項目がないので左端に1からの連番の列を作ります。 以上のことをするためにはどのようにすれば良いのでしょうか?シートがかなりあるので自動化できればうれしいです。 よろしくお願いします。

  • エクセルで複数のシートのピボットテーブルを使用する方法

    ひつのシートのピボットテーブルでは、ウィザードを使って、レイアウト選択メニューで行・列それぞれ必要とする項目名(フィールド)をドラッグ選択できますが、複数シートで作成すると行・列それぞれが「行」「列」の表示だけで任意の項目を選択できません。試しに複数のシートで同じフォームで全てのセルにデータが存在すれば可能なようですが・・・ 問題のファイルは、各シートのデータフォームが若干異なっています。ただし、項目名の一部は共通です。また、シートによって入力していないの項目列があります。ただし、ピボットテーブルで必要とするデータの行列ともに同一項目名でデータは存在しています。例 データ列 A~J列の10列分、シート1は全て入力済、シート2は3・4列目が未入力(空白)、シート3は9・10列目が未入力(空白)。レイアウトで任意の項目をドラッグ出来ず「列」「行」としか選択出来ません。それぞれA~J列を選択して、1・5・6・7列のデータの表示をしたいのですが、どなたか教えてください。よろしくお願いします。

  • マクロを利用して各シートのデータを一枚のシートへコピーペーストする方法

    エクセルのマクロを利用して各シートのデータを一枚にまとめたいと考えています。 方法がわかる方いらっしゃいましたら教えてください。 1.【Sheet1からSheet19】のデータをシート【Sheet0】にコピーし一枚にしたい。  Sheet20以降はコピーしない。 2.【Sheet1からSheet19】の行【12】と【Sheet0】の行【14】には同じタイトルが入っています。  【Sheet1からSheet19】のタイトル列を参照して【Sheet0】の同じタイトル列にコピーしたい。 3.コピーしたい行は【Sheet1からSheet19の15】行目から以下になります。  【Sheet0の17】行目以降にコピーするようにしたい。 4.【Sheet1】のコピーが終わったら【Sheet1】の最後の行に  【Sheet2】からコピーを開始するような形にしたい。以下【Sheet19】まで繰り返す。 以上よろしくお願いします。

  • エクセルでのマクロを教えて

    下記のようなものをみたすマクロは組めますか? ファイルにシートが何種類かあります。 sheet1には各店の集計データーがあります。 その中にA列には集計の項目名がAZ列まであり 1行目には店舗名が10種類あります。 sheet2からはsheet名をsheet1に記入されている1行目にしている店舗名にしてあります。 またA列には集計の項目名がありますが sheet1にある項目と全く同じではなく 項目は少なくなっています。 また、sheet2からの店舗名にはsheet1の集計表にはない 店舗名もあります。 このsheet1のデーターをもとに sheet2の1行目の項目と一致する項目の値や数字を sheet1からコピーするというものです。 よろしくお願いします。

  • フィルタで選択した行を別シートにコピーするマクロ

    よろしくお願いします シート1 の一行目にタイトルがあって 二行目以降にデータ(30列目まで)が 入っております そのデータをオートフィルタで抽出して 抽出されたデータ(タイトル行は不要)を 選択してシート2のデータ最終行の 一行下へ貼り付けたいのですが。 シート1で Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 30)).Select こうやって選択した後の記述がわかりません。 このままシート2の最終行を 選択貼り付けしようとするとシート1の選択内容が 消えてしまう(シート2が最新の選択になるため?) 挿入の際に「下へ」「右へ」など聞かれるのも 面倒なので行選択したいのですが 御教授ねがいます

  • 【再】エクセル2013 マクロをご教示ください

    Sheet1で選択しているセルの行をSheet2に転写したいです。 Sheet1とSheet2の4行目に見出し。 Shet1にはA~U列までデータがあります。(途中空白セルの場合もあり) Sheet1の5行目以降の、あるセルを選択してマクロを実行すると Sheet1のC~S列までをSheet2のA~Q列へコピペしたいです。 Sheet1は H列に必ずデータがあるので それらを最終行の判断基準とします。 Sheet1での選択セルは複数の場合もあります。 ただし、同じ行のセルを複数選択しても Sheet2への貼り付けは1行とします。 マクロを実行する度に、Sheet1での選択セルの該当行が Sheet2へ追加されるようにしたいです。 (Sheet2へコピペされたデータは残します) また、Sheet2への貼り付け内容が同じだった場合は 注意喚起のため メッセージで 「重複データが存在します」を表示したいです。 重複の判断基準はSheet2の B、D、F列とします。 宜しくお願い致します。

  • ■ エクセルのマクロで出来ますか?

    エクセルマクロの初心者です。 現在、業務で以下の様な表を作成し、請求書の発行を行っています。 「sheet1」A列のNo.を「sheet2」のA列(例えばセルA1)に入力すると VLOOKUP関数で必要項目が請求書の雛形に表示される仕組です。 複数行を抽出する場合は、複数のNo.(例: 1,3,10)を手入力(例: A1,A2,A3・・・)しております。 ----- <sheet1>    A列  B列   C列   D列  ・・・ 1行 No.  項目1  項目2  項目3 ・・・ 2行  1   値1   値2   値3  ・・・ 3行  2   値4   値5   値6  ・・・ 4行  3   値7   値8   値9  ・・・ <sheet2> 請求書の雛形 セルA1~A10に請求書を発行したい<sheet1>A列のNo.を入力。 ----- これを、A列の左に行を挿入、各行にチェックボックスを配置し、 チェックボックスをオンにした行のB列(行挿入前はA列)の値(No.)を 「sheet2」のA列(例えばA1/複数の場合はA1,A2,A3・・・10行程度)に コピーを行う仕組を作ることを検討しています。 複数のNo.をチェック(1,3,10)した場合は、 「sheet2」のA1,A2,A3の様に、上から順になれば理想的です。 説明が悪く、意図が伝わり難いこととは思いますが、 これらの作業を行うマクロ(他の方法も可)を組むことは可能でしょうか。 ご教授いただければ幸いです。 よろしくお願いいたします。