複数シートからの行抽出改良バージョン

このQ&Aのポイント
  • 複数シートからの行抽出を改良するためのコードを作成してもらいたいです。現在のコードでは、各シートの1列目と2列目とX列目が空白でない行を全て抽出していますが、X列目が空白でもそのシートの2列目にデータが入っている最後の行まで調べて抽出するようにしたいです。
  • 改良バージョンでは、各シートの1列目と2列目とX列目が空白でない行を全て抽出する必要があります。ただし、X列目が空白でもそのシートの2列目にデータが入っている最後の行まで調べて抽出するようにしたいです。
  • 具体的な例として、Xが10列目の場合、橋本、浜崎、根本、末吉、恩田の行が抽出されるようにしたいです。コードの改良をお願いします。
回答を見る
  • ベストアンサー

複数シートからの行 抽出改良バージョン

https://okwave.jp/qa/q9586463.html ↑この質問の回答を頂いた者ですが、改良したいと思っています。 もしよろしければ、ご回答お願いいたします。(前回は操作ミスでベストアンサーにできず、申し訳ありませんでした。) この質問では、「各シートの表が上から順番に埋まっていること」を前提に「1列目と2列目が空白でない行を全て抽出する」ことになっています。つまり空白行が出た時点で次のシートへ抽出対象が移ります。 改良バージョンが「各シートの1列目と2列目とX列目(A1セルの値を代入)が空白でない行を全て抽出」です。問題がX列目は空白の行と空白になっていない行が混在していることで、X列目が空白でもそのシートの2列目にデータが入っている最後の行(2列目は途中に空白はない)まで調べて抽出する必要があります。 新しく添付した画像の例では、Xが10列目のときは、橋本、浜崎、根本、末吉、恩田の行が抽出されるようにしたいです。 コードを改良していただけませんか?

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.1

こうでしょうか? Option Explicit Sub Sample()  Dim shCnter As Long  Dim PutRCnt As Long  Dim RCnt As Long  Dim PicColNum As Long    Const PutShNum = 1 '集計先シート番号  Const GetShNumS = 2 '集計元シート群の先頭シート番号  Const GetShNumE = 4 '集計元シート群の末尾シート番号    PicColNum = ThisWorkbook.Sheets(PutShNum).Cells(1, 1).Value    With ThisWorkbook   PutRCnt = 2   For shCnter = GetShNumS To GetShNumE    RCnt = 2    Do     If .Sheets(shCnter).Cells(RCnt, 2).Value = "" Then Exit Do     If ((.Sheets(shCnter).Cells(RCnt, 1).Value <> "") And _       (.Sheets(shCnter).Cells(RCnt, PicColNum).Value <> "")) Then      .Sheets(shCnter).Rows(RCnt).Copy .Sheets(PutShNum).Rows(PutRCnt)      PutRCnt = PutRCnt + 1     End If     RCnt = RCnt + 1    Loop   Next shCnter  End With End Sub

rty145
質問者

お礼

ご回答ありがとうございます! 本当に助かりました。

関連するQ&A

  • 同じ様式の表の複数シートから行ごと抽出

    A2:K12の範囲に表がある全く同じ様式のシートが複数あります。 特定の条件が満たされた行を全て別シートに抽出したいです。 1列目と2列目とX列目(これは集計のA1セルに入った値を参照)が空白でない行を全て抽出したいです。1列目と2列目は1行目から順番に埋まっているのですが、X列目は空白になっているものと空白でないものが混在しています。 たとえば、Xが10列目のときは、Aさん、Bさん、Cさん、Dさん、Eさんの行が抽出されるようにしたいです。 VBAのコードを自力で書けないので、よろしくお願いします。

  • 複数シートから空白ではない行をすべて抽出

    タイトル行A1:D1、データの中身は、A2:D11の全く同じ様式のシートが複数あります。シート名はバラバラです。 全シートの空白ではない行を全て別の集計シートに抽出したいです。 空白行は抽出しません。 これを関数でどのようにつくればよいのでしょうか? 関数で無理ならVBAでお願いします。

  • 複数シートからデータを抽出したい

    教えてください。 複数のシートから同じデータを抽出したいのです。 各々シートの行、列データは等しくない状態となっております。 4行目から○○を検索し、一致するものがあれば”固定のB列”と一致した列を抽出する、をシート2、3と繰り返して統合されたシートを完成させる、という流れにしたいのですが最終行の取得、そこから続きにコピーというイメージまではわかるのですが固定のB列と一致した列を抽出させる方法がわからないのです。 どのような処理で実行できるでしょうか?

  • 複数シートからのセルの抽出

    複数シートからのデータの抽出をしたいのですが、教えてください。 [処理] あるEecelBookに含まれる全てのsheetに対して、シートの1行目とA列のあるセルの値が1995または1996である場合はその当該行をコピーし、新しく作ったsheetに集計する。 説明が下手で住みませんが、よろしくお願いします。

  • 複数シートの色付きセルがある行を別シートに抽出

    複数シートの各E列に色付きセルがある行のみ、1つの別シートに 抽出したいと考えています。 セルの色は条件付書式で付けています。 なお、複数シートの項目はすべて同一で、1行目は項目名が入っています。 特に複数シートが対象になっているために過去ログから中々近いものが見当たりません。 どなたかヒントだけでも頂ければ幸いです。

  • excelの複数シートを検索対象にして重複行を抽出する方法

    ある値が重複する行を抽出したいのですが 抽出元データが600,000行近くあり、1sheetに入らず9シート程に分けました。 countifを使おうとしたのですが検索範囲に複数シート指定が出来ず(3D-参照の対象関数ではないようです)、 =COUNTIF('sheet1:sheet9'!$C:$C,C1)としてみたのですが、重複行があっても全て#VALUE!となってしまうので機能できていないようです。 具体的には sheet1~8に下記のようなデータがあり、C列が重複する行を抽出したい。 A列:id、B列:名前、C列:メアド、D列:xx 宜しくお願い致します。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

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

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

  • 検索値から、その行の抽出。

    検索値から、その行の抽出。 シート1のデータがあります。 シート2のA1に検索値を置き、“あああ”の行をシート2に抽出。 シート2のA列に任意の番号を振った後、その番号順での表示(ピンク部分)を希望。 自分でいろいろと調べて試行錯誤したのですが、 思うようにいかず、ご質問させていただきます。 ご回答よろしくおねがいします。

  • Sheet1のデータを条件で行ごと抽出するVBA

    ExcelのVBAについて質問です。 Sheet1  | A | B |  C  |  D | E 1| 5/12|青森|出荷済|11個|りんご 2| 5/12|静岡|準備中|10缶|お茶 3| 5/12|愛媛|未出荷|21個|みかん 4| 5/12|新潟|未出荷|99粒|おこめ 5| 5/12|栃木|出荷済|15個|巨峰 こんなシートがあります。 これを、シート状のボタンをクリックしたときに、 「C列が"出荷済"または"準備中"の行だけ抽出して、列を入れ替えながらSheet2に並べる」 というVBAを組みたいです。 ボタンを押した後Sheet2がこんな感じになるようにしたいです。 Sheet2  | A  | B | C |  D | E 1|りんご|11個|5/12|青森|出荷済 2|お茶 |10缶|5/12|静岡|準備中 5|巨峰 |15個|5/12|栃木|出荷済 列の入れ替えはこのような感じです (Sheet1⇒Sheet2) E列⇒A列 D列⇒B列 A列⇒C列 B列⇒D列 C列⇒E列 行はSheer1の順番をSheet2でも抽出されない行を詰める形で維持したいです。 また、ボタンを押されるたびSheet2が全て上書きされる形で構いません。 抽出と入れ替えのヒントだけでもお教え頂ければ自分でやってみたいと思います。 よろしくお願いいたします。

専門家に質問してみよう