• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで抽出結果を別シートにコピーするマクロ)

エクセルで抽出結果を別シートにコピーするマクロ

このQ&Aのポイント
  • エクセルで抽出結果を別シートにコピーするマクロの操作方法や回避方法について教えてください。
  • 初心者がエクセルでの抽出結果のコピーについて困っています。東京などの地域を条件に抽出し、別シートにコピーしたいのですが、混乱が生じています。どのような方法がありますか?
  • 東京という文字が混乱を招いてしまうエクセルの抽出結果のコピーについて、回避方法を教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 とても残念な結果だと思います。 うまく行かない理由は、それは、位置の違いだと思います。 ともかく、エラーメッセージが出ないとしたら、とりあえず、問題は発生していないということになります。 こちらも思惑で作っていますので、位置関係自体は、確認していません、出来れば、コードのいくつかの時点で、正しく値を確保しているか、チェックすればよいのですが。 ただ、もう、成功しているなら、あえて、どちらでもよいことだと思います。 ただ、お使いになっているコードは、最近、似たようなコードは見かけますが、私ならあちこち直したいなって思います。こちらのコードが一発で動かないなら、何を書いても、話なんかにはなりませんけれどね。(^^; このチェックの仕方は、フィルタオプションを、手動でやっていただくしかありません。こちらでは、どうしようもないことです。あえて、無理強いはしません。しょうがないです。 'r列MyRow行の文字をp2に Range("p2") = Cells(MyRow, "r")    ↓ Range("p2").FormulaLocal = "=IF(A2=""" & Cells(MyRow, "r").Value & """,TRUE)" P1 は、何も入れてはいけません。(文字が入っていれば出来ません) P2 に、=IF(A2="東京西",TRUE) で、A1 が、タイトル行で、A2 が、データの場合になりますが、False で、フィルタオプションで抽出が出来るかどうか? 私のほうのコードは、VBE の左の縁のところをクリックすると、●のブレークポイントがつきますから、そこで、とめて、ローカルウィンドウで変数をクリックして値の中身を調べてもらうしかありませんね。 ポイントとなる部分は、  Places 'この中身  シートをクリア ●    For i = 1 To ListCount ここでポイントになるのは、オートフィルタで抽出が出来ているか?     .AutoFilter.Range.Copy Worksheets(Places(i, 2)).Range("A1") ●    Next i     .AutoFilterMode = False ということになるかと思います。

minato1980
質問者

お礼

Wendy02 様 回答ありがとうございます。 まだ作っていただいたコードは成功にならないのですが ひとつずつ単語を調べて解読を進めております。 質問欄で出したコードにも少しだけですが 改良(ErrHandler の処理)を加えてみました。 1行ごとにチェックを行う操作方法もやっと知ったばかりで だいぶ時間もかかりそうですが、頑張ろうと思っています。 本当にありがとうございました。

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

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >問題の東京を含む地域名以外は問題なく別シートにコピーされていました。 まず、この問題ですが、その部分は、Excel 2002用のコードで、他のバージョンでは適用されません。私は、本来は、この2002用の書き方が正しいと思うのですが、MS側は、変えてしまいました。おそらく、ユーザークレームで、直してしまったのだろうと思います。 'r列MyRow行の文字をp2に Range("p2") = Cells(MyRow, "r")    ↓ Range("p2").FormulaLocal = "=IF(A2=""" & Cells(MyRow, "r").Value & """,TRUE)" と直せば出来るようになるとは思います。 以下は、私が考えたコードです。使わなくても結構ですが、一度、コードだけでも見てください。私は、最近、頭を使うコードはあまり書かないようにしています。ほとんど、規定のパターンしか使っていません。 「地域名」と「シート名」とがきちんと整理されているなら、問題なく出来ます。もしも、シート名がない場合は、新たに付け加えられます。ただし、報告によると、誤動作するバージョンなのかブックがあるらしいのですが、今、それを特定できません。 誤動作する部分は、.AutoFilter.Range.Copy なのですが、Excel2000とExcel2003でしか知らないので、もし、その場合は、 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy となるわけですが、このバグにも似た問題は、何が原因なのか、未だに解決していません。 ------------------------------------------------------ Sub PickupData2SheetsCopy2()   Dim Places As Variant   Dim ListCount As Integer   Dim i As Integer   On Error GoTo ErrHandler      Application.ScreenUpdating = False   With Worksheets("元データ")     .Activate     .AutoFilterMode = False 'フィルターモードが邪魔になる     '地域名リスト     Places = .Range("R2", .Range("R65536").End(xlUp).Offset(, 1)).Value     ListCount = UBound(Places, 1) 'リストカウント          'シートをクリア     For i = 1 To ListCount       Worksheets(Places(i, 2)).Cells.ClearContents '2はシート名     Next i          'データをコピー     For i = 1 To ListCount       '地域名でオートフィルタ       .Range("A1").CurrentRegion.AutoFilter Field:=1, _       Criteria1:="=" & Places(i, 1), _       Operator:=xlAnd       .AutoFilter.Range.Copy Worksheets(Places(i, 2)).Range("A1")     Next i     .AutoFilterMode = False   End With   Application.ScreenUpdating = True ErrHandler:   If Err.Number = 9 Then   Worksheets.Add After:=Sheets(Sheets.Count)   ActiveSheet.Name = Places(i, 2)   Worksheets("元データ").Activate   Resume Next   ElseIf Err.Number > 0 Then    MsgBox "Err:" & Err.Number & " " & Err.Description & vbCrLf & _        "エラーが発生しましたので、終了します。", vbInformation   End If End Sub

minato1980
質問者

お礼

Wendy02 様 回答ありがとうございます。 実は、私は自分でマクロを組んだことが一度もなく、 最初に投稿したコードの内容を理解するまでに 何時間もかかったくらいの初心者レベルでして。 こんなに丁寧な回答をしていただいたのに 自分の理解力以上の質問をしてしまったのではないかと少し反省しております。 今は、作っていただいたコードの単語を1つずつ調べています。 ゆっくりでもマクロに取り組んでいきたいと思っています。 ★★★ 'r列MyRow行の文字をp2に Range("p2") = Cells(MyRow, "r")    ↓ Range("p2").FormulaLocal = "=IF(A2=""" & Cells(MyRow, "r").Value & """,TRUE)" もうひとつ、Wendy02 様に考えていただいたコードも実行したところ タイトル行のみがコピーされ、抽出結果は表示されませんでした。 抽出条件は文字じゃない方がいいのかなと思いまして 地域名ごとに数字を割り当て(地域コードを作ってみました) 質問で表示したマクロを実行すると、全てコピーすることができました。 期限付きの仕事のオーダーでしたので、 とりあえず・・というカタチで終了しております。

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

こんにちは。 >過去にこちらで投稿されていた質問 (QNo.2142846)の回答(ANo.1)を見つけましたので、実行してみました。 私も以前書いたのですが……。 もう一度、改めて、質問の要件を出していただいたほうがよいのかなって思います。 とても、前の方のマクロを使ったり修正というようなアテ推量なコードを書くことは出来ませんからね。確実性がほしいのです。 ソース・シート      A    B     地域名  売上      東京   10,000     東京西  12,000     東京東   8,000      というような感じで、シート名を、それぞれの地域名にして、売上をそのシートのB列あたりにコピーするのですか? ただ、「約100の地域」となると、おそらくは、途中でうまくいかなくなるような気がします。私は、シートの限界数を、40前後と考えています。空のシートなら、100以上も可能なのですが。 作り方は、オートフィルタで、それぞれを抽出して、それぞれのシートにコピーするだけです。

minato1980
質問者

補足

Wendy02 様 回答ありがとうございます。 分かりにくい質問の仕方で大変申し訳ありませんでした。 もう一度はじめから質問させていただきますので、よろしくお願いいたします。 ★したいこと★ 【元データSheet】 のデータを地域名ごとにオートフィルタして、その抽出結果を 各地域名のsheet(同じブック内に用意しています/約100シート)にコピーするマクロを作成したい。 ★つまづいたところ★ マクロを実行すると、【東京Sheet】の中に"東京西"のデータが入ってしまう。 (今のコードでは抽出条件が "東京を含む" のような意味になっている?) ↓以下、元データの内容です。    A   B         P    R    S  1 地域名 数量      地域名 地域名  シート名 2 東京  1        東京  東京    東京 3 東京西 2            東京西   東京西 4 東京  2            神戸   神戸 抽出したいA列のフィールド名"地域名"をP1に記入してP2に"東京"を仮に入れています。 R列に抽出したい地域名を縦に列挙しておきます。 S列には「東京」で抽出したデータを「東京Sheet」にコピーするというように、対応するコピー先ワークシートの名前を記述します。 ↓以下、コードです。コメントは私が勝手に解釈した内容です。 Sub 抽出結果を別シートにコピー() Dim MyRow As Long Application.ScreenUpdating = False MyRow = 2 '地域名シートの初期化→ s列MyRow行のSheet をクリア Do Until Sheets("元データ").Cells(MyRow, "r") = ""   Sheets(Sheets("元データ").Cells(MyRow, "s").Text).Select  Cells.Select  Selection.ClearContents  MyRow = MyRow + 1 Loop Sheets("元データ").Activate MyRow = 2 '抽出結果をシートにコピー Do Until Cells(MyRow, "r") = "" 'r列MyRow行の文字をp2に Range("p2") = Cells(MyRow, "r") '(p1:p2)を抽出条件にして、オートフィルタ。結果をs列MyRow行のSheetのa1にコピー Range("a1").CurrentRegion.AdvancedFilter xlFilterCopy, Range("p1:p2"), Sheets(Cells(MyRow, "s").Text).Range("a1") MyRow = MyRow + 1 Loop Application.ScreenUpdating = True End Sub 95個シートを作り実行したところ、問題の東京を含む地域名以外は 問題なく別シートにコピーされていました。 長くて余計見ずらくなりましたが、よろしくお願いいたします。

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

関連するQ&A

  • Excel マクロ抽出、別シートに張り付け

    Excelマクロについて質問です。 (1)特定の行の抽出方法 (2)抽出した複数の行を別シートに貼付ける方法 (3) 例 Cells(1,1)=Cells(2,1)=1 And Cells(1,3)=Cells(2,3)=1 And Cells(1,6)=Cells(2,6)=0の時のように、i=1,3,6でCells(k,i)=Cells(k+1,i)が成り立ち、Cells(k,i)の行だけを抜き出すコードの書き方を教えていただけますでしょうか? 宜しくお願い致します。

  • エクセル 関数 別シートへの抽出

    エクセル関数について質問します。 「数値の入ったセルだけを、その行ごと丸々別シートに抽出する方法」 について教えてください。 例、C列に空白セルと1、2や3など、数値の入ったセルがあります。空白セル以外の数値の入ったセルを、その行ごと別シートに抽出したい。 C3とC5に数値が入ってる→3行目と5行目を別シートに抽出する。 このようなことは関数でできるのでしょうか? マクロでないと無理でしょうか? お力をお貸しください。 よろしくお願いします。

  • エクセルで抽出したデータを別シートにコピーしたいです

    エクセル2003を使用しています。 例えば、以下のような表があります。  ABC 1あ10 2い15 3あ20 4 A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。 同じく「い」だけを抽出して、また別のシートにコピーします。 いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。 関数か、マクロかVBAを使ってする方法はありますでしょうか。 できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。 知識が乏しくできません・・・ よろしくお願いいたします。

  • エクセルの使い方を教えてください!(別シートの要素の抽出方法)

    エクセルの使い方の質問です。 まず2つ、1000件ベースのデータが入ってるシートがあります。 Aシート・Bシートのあるカテゴリ、例えば「名前」を一致させて、一致したものだけ抽出・または処理する機能はありますか? あるようであれば是非使いかたを教えてください。

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

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

  • エクセルマクロ 抽出したデータを別のシートへコピーしたい

    マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 【1】シート名「データ」をA列でオートフィルタ抽出して、別シートにコピーする。 【2】別シートにコピーしたデータに外枠罫線をつける。 【3】シート名「データ」には塗りつぶしがあるので、別シートにコピーされた塗りつぶしは「なし」する。 【4】シート名「Sheet1」の1~2行目をコピーし、別シートの1~2行目に挿入し、シート名「データ」に戻る。 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、今はコピーして「あ行」の部分を書き換えています。(かなり面倒です) 最終的には、抽出されたそれぞれのシートを別々のブックにしたいとも思っています。 長々とすみませんが、どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 Sheets("データ").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ行", Operator:=xlAnd Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Sheets("あ行").Select Range("A1").Select ActiveSheet.Paste Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Cells.Select Selection.Interior.ColorIndex = xlNone Sheets("Sheet1").Select Rows("1:2").Select Selection.Copy Sheets("あ行").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select Sheets("データ").Select Range("A1").Select

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセル 抽出マクロについて

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

  • エクセル複数のシートから抽出集計したいのですが・・

    Excel2010を使っています。 複数のシートから、同じ名称のセルを抽出して集計する方法はないでしょうか?関数だけでは無理と思い、VBやらマクロやら・・私では無理でしょうか? _______       A    B      C       D         E        F      G1    1 NO   日付   開始時間   終了時間   時間数    備考    営業所 2  1    4/15   10:00      13:00      1.0          所沢営業所 3   2    4/20   12:30      15:00      2.5          多摩営業所 4   3    4/22   11:00      13:00      4.0          西東京営業所 5   4    4/25   13:00      15:00      2.0          所沢営業所 6   5    4/27    9:00      13:00      4.0          横浜営業所 _________________________ _このようなシートが20シート程(増減します)あります。G:営業所の部分がリストで出るようになっていて その営業所ごとの集計をしたいと思います。ほかのシートまたはデータに B~Eのセルが自動的に抽出できるようなやり方はありませんか? よろしくおねがいします。

  • Excel 2007 マクロ 表の値の抽出について質問させて頂きます。

    Excel 2007 マクロ 表の値の抽出について質問させて頂きます。 4つの表がSheet1にあります。 表は画像として添付しました。 外国産、国産、その他のいずれかの列に数値が入って いる行をコピーしてSheet2に貼り付けるマクロを考えています。 昨日、2つの表の場合のマクロのご回答を頂きました。 2つ表が追加されると上の2つは、抽出されるのですが 下2つは抽出されません。 表が4つと2つではマクロが異なるのでしょうか。 マクロ超初心者ですので、文が長くなっても構いません。 容易なマクロのサンプルをご紹介いただけませんでしょうか。

このQ&Aのポイント
  • 参加者は、スピーカーが何を言っていたのかを書き留めました。
  • 空所には関係代名詞のwhatを選びます。
  • on whichの形では不完全な節が続いているため、適切ではありません。
回答を見る

専門家に質問してみよう