• ベストアンサー
  • 困ってます

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

エクセルの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列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数10936
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.1
  • KURUMITO
  • ベストアンサー率42% (1835/4283)

最も分かり易く計算にも負担のかからない方法は作業列を作って対応することです。 例えばシート1のJ列を作業列としてJ2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(E2="","",MAX(J$1:J1)+1) シート2では1行目に項目名が有るとしてA2セルには次の式を入力してH2セルまでオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!$J:$J),"",INDEX(Sheet1!$A:$H,MATCH(ROW(A1),Sheet1!$J:$J,0),COLUMN(A1)))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

できました! 似たような関数を使っているのを他のページで見て試したのですが、参照範囲などの変更の仕方が間違っているのかうまくいかず…。 困っていたので助かりました。 なぜこのような式になるのかまだ理解できていないので、関数を調べて勉強しようと思います。 ありがとうございました。

関連するQ&A

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • Excelをデータベースのように使用した場合 データの抽出

    Excelをデータベースのようにして使用している場合について教えて欲しいことがあります。  ・Sheetを2つ作成したとします。  ・Sheet1はたくさんのデータが入っているシートです。  ・Sheet1の名前を仮に『Data』とします。  ・Sheet2はSheet1から必要なデータを抽出してきて並べるシートです。  ・Sheet2の名前を仮に『Report』とします。  ・『Data』のA列には1~200までの数字が入力されています。  ・その数字は ランダムである上に 重複していることもあります。  ・例えばA1には「1」が入力されていて A2には「2」が入力されています。  ・しかし その後A3にもA4にもA5にも「2」が入力されています。  ・同様にA6~A15までは「3」が入力されているのです。  ・このようにA列の数字は 同じ数字が何度も重複しており その重複には規則性はありません。  ・『Report』シート上で『Data』シートからデータを抽出したいのですが A列に「1」と入力されているデータだけを取り出すのなら「VLOOKUP」でもできますよね・・・・  ・しかし A列に「2」と入力されているデータを「VLOOKUP」関数で選んでも その先頭行のデータしか読み込んできません。  ・『Data』シートのA列に入力している数字から 必要な数字が入力されている行のデータだけを 全て『Report』シートに並べようとした場合 手作業で行うとすると・・・ 『Data』でA列が「1」のデータだけを選び,それを『Report』シートに貼り付ける。次は「2」で実行する。・・・・・という作業を200回繰り返すことになりますが 簡単に行うにはどのようにすればいいのでしょうか? マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすく教えていただきたいのですが・・・ 勝手なお願いで申し訳ありませんが よろしくお願いします。

  • EXCELでの行の抽出

    sheet1に   A    B    C    D 1 日付 金額  備考  コード 2 01  1000 あいう    1 3 10  2000 えおか    3 4 20  3000 きくけ    4 5 30  4000 こさし    1 . . . という感じで元データ(100行ほど)が入っています。 これを元にしてsheet2に   A    B    C    D 1  1 2 日付 金額  備考  コード 3 01  1000 あいう    1 4 30  4000 こさし    1 . . . というふうに表示したいのです。 sheet2のセルA1に入っているコードと一致するコードが入っているsheet1の行を抽出してsheet2に行の隙間なく表示させたいのです。 こんなことはできるのでしょうか? メニューからコマンドを選択して・・・という方法ではなく、計算式かマクロで実現したいのです。 エクセル2000、Win98です。よろしくお願いします。

その他の回答 (1)

  • 回答No.2
  • mu2011
  • ベストアンサー率38% (1910/4994)

既に回答済みにつき、マクロ例です。 (1)シート1のJ1にE列の見出し名、J2に<>を入力    シート2の1行目から表示する為、シート1の空きセルとしていますので    変更する場合、コードのCriteriaRange:=Sheets("sheet2").Range("j1:j2"),    を変更して下さい。 (2)シート1タブ上で右クリック→コードの表示→以下のコードを貼り付け    このマクロはシート1のイベントプロシージャでE列のセルが変更された場合、    シート2に自動的に貼り付けるようにしています。 ■サンプルコード Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E:E")) Is Nothing Then Exit Sub With Sheets("sheet2") .Columns("A:H").ClearContents Sheets("sheet1").Columns("A:H").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("sheet1").Range("J1:J2"), CopyToRange:=.Range("A1"), Unique:=False End With End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 VBAは少し本を読んだ程度でまだあまり知識がないのですが、こちらの方法も試してみます。 都度マクロを実行するのではなくて、E列に入力すると自動で貼り付けられるんですね。 フィルタオプションを利用したマクロでは、マクロを実行しなければいけないことと、データがそのたびに上書きされてしまうことから使えないと思ったのですが、このような方法もあるのですね。 勉強になりました。

関連するQ&A

  • EXCEL データをコピーして別シートの最初の空白行に貼り付けたい

    EXCEL データをコピーして別シートの最初の空白行に貼り付けたい Sheet1はA列からR列までを使ったシートで、1行目は各項目があり、2行目からは当月のデータが入力されています。 Sheet2はSheet1の1行目と同じようにA列からR列までが項目になっていて、期中のデータを付け足していきたいと思っています。 マクロの記録でやってみたのですが、前月の最後の行(貼り付ける最初の空白行)の認識の仕方が分からず、Sheet2への貼付がうまくいきません。 どのような方法でやったらいいのか教えて下さい。

  • excelで条件に一致するデータ全てを抽出する方法

    現在、エクセル2003を使用しています。 A列・B列・C列にデータが入力されています。 ただし、空白セル(空白行)もあります。 A列に“@Name”とデータ入力がある場合 同じ行のC列の値を抽出したいと思います。 A列に@Nameは複数ありますが、C列の値は それぞれ違いますので、データの集計先はF列に 全て抽出をしたい。 なにか良い方法(VBAや関数)がありましたら 教えてください。

  • エクセルのデータ検索・抽出 について

    不動産の物件リストを作っているのですが sheet1に  A列     B列     C列     D列 取引先A  物件所在1   面積1    備考1 取引先A  物件所在2   面積2    備考2 取引先B  物件所在3   面積3    備考3 取引先A  物件所在4   面積4    備考4 とデータが入っており 取引先Aに該当するデータをsheet2に抽出したいのですが vlookup関数だと1番目のデータしか抽出できず困っています。 ↓のようになってしまいます。  A列     B列     C列     D列 取引先A  物件所在1   面積1    備考1 取引先A  物件所在1   面積1    備考1 取引先A  物件所在1   面積1    備考1 他の関数等で対応できそうでしょうか? ご教示お願いいたします。

  • エクセルで、条件にあう複数の行を別のシートに抽出する

    《どなたか、お教え下さい》   エクセルで、条件にあう複数の行を別のシートに抽出してまとめる。 「sheet1」の下記の基本データを「sheet2」に「得意先」ごと「日付」の早い順にまとめたいのでが。関数を使ってできないものか、どなたかお教え下さい。「マクロ」や「Access」は使用したことがないので、関数を使ってやりたいと思いますが、できるものでしょうか。よろしくお願いします。 sheet1 番号 得意先 日付 商品名 商品詳細 金額 備考 1   A 2   B 2   B 4   D 5   E 6   F 2   B 3   C 5   E   A    B  番号  得意先   1   A      2   B   得意先名は、番号を入力することで表示されるように   3   C   関数「VLOOKUP」を使って表示させるようにしていま   4   D   す。    5   E   6   F  

  • excelのデータの間違え抽出について

    エクセルでアンケート結果のデータを入力しています。 入力間違えのチェックのために、sheet1とsheet2に同じデータを入力したのち、sheet1とsheet2を比較して間違えを抽出する方法を教えてください。 確か、間違えの入力を抽出できるコマンドを関数で入れる方法があった気がしますが、わからないので教えていただきたく思います。 初心者なのでよろしくお願いします。

  • エクセルのデータ抽出

    会社で注文のあった業者のリストをエクセルで 作ってて450行くらいあります。 各項目には会社名や内容や価格などありますが その中には空白のセルや行もあります。 そこからA列に自分が抽出したい行に印をいれて フィルタをかけたところ、空白があるためか すべてを抽出できません。1行1行抜き出すのもいいのですが 今後、データも増えることを考えると 何かいい方法で抽出したいのですが、 どうしたらいいでしょうか? やはりマクロをつかうのでしょうか? すみませんがよろしくお願いいたします。

    • ベストアンサー
    • Mac
  • エクセルで抽出した不特定数のデータを行数の決まった別シートに取り込む方法を教えてください

    エクセルでマクロを作り始めた初心者です。 Sheet1に、氏名、住所、TEL、会社名、担当者、金額・・・と続くデータが6000レコードほどあります。(レコードは随時増えていきます) Sheet2では、担当者名を条件にSheet1から必要な列(上記に記載したもの5つ)のみを抽出するマクロでデータを取り出すようになっています。 抽出したデータをsheet3のフォーマットに氏名、住所、金額の列だけ入れるのですが、入れられる行が20行と決まっており、最後の行には、合計欄が入るようになっています。 不特定数のレコードを20行ごとにページを区切って印刷するにはどうしたらよいでしょうか。ご教示お願いします。

  • EXCEL 行のデータ抽出でこんな事ってできますか?

    sheet1に入力しているデータをsheet2に反映させたいのですが、訳あって下記のような事をしたいのです。 出来るでしょうか????しかも関数のみで。 sheet1  A     B       C      D 1名前  所在地(県)  登録番号  入会年月日 2 3 4 とあります。 例えばsheet1の名前(A列)をsheet2に反映させたいのですが、sheet2のどこでもいいのですが、行の番号を入れればその行のデータが反映する、とさせたいのです。つまり単純に式を入れるとすると =sheet1!A←このあとにsheet2の他のセルで[3]と入れてあげるとsheet1の3行目の名前が入る式を作りたいのですが・・・説明がうまく出来ていないかも知れませんが、ご回答をお願いします!!

  • マクロを使用し、EXCELのデータから必要な部分を取り出し2つのsheetに貼り付けたい

    条件 EXCELのデータ A列からL列まで 複数行(行数は、決まっていない) (例) 40行ほどあるデータを見て 1行目から10行目までをsheet1に 12行目から20行目までをsheet2に貼り付けたい場合。 11行目のA列(空白になっている)に手入力で「a」と入力 21行目のA列(空白になっている)に手入力で「b」と入力し、 1行目から「a」のある行までをコピーし、sheet1に貼り付ける 「a」のある行より1行下から「b」のある行までをコピーし、sheet1に貼り付ける 以上のことをマクロで実行する方法を教えて下さい。

  • 必要なデータを抽出したい

    必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。