Excelで特定のデータを抽出する方法

このQ&Aのポイント
  • Excelの特定の列からデータを抽出する方法についてまとめました。
  • データが入っている列をフィルタリングして抽出する方法や、マクロを使ったデータの抽出方法について説明しています。
  • また、欠席者や予想値が入っているセルの処理方法についても解説しています。
回答を見る
  • ベストアンサー

いずれかの列に特定のデータがある人を抽出したい。

A列に番号、B列に氏名、C列に調査1、D列に調査2、E列に調査3というようにデータが入っています。実際はデータは調査30ぐらいまであります。 調査1~というのはある種のテストで、データは1~100の点数です。 欠席などですべての人が調査1~30のすべてを受験しているわけではありません。 欠席で実際の点数がない場合は、前後の調査の点数から予想値を入力しています。 予想値が入力されたセルは、セルの色を黄色にしています。 なお、すべてを受験していない人もいません(調査1~30のいずれかは受験しています)。 調査1~30のいずれかに予想値が入っている人の番号、氏名、予想値を抽出したいのですが、どうしたらいいでしょうか? オートフィルタを使うと列ごとに繰り返さないといけませんよね? やはりマクロで処理するしかないでしょうか? 何かいい方法があれば、ご教示お願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

オートフィルタだけ使う方法としては。 Excel2007以降を使う データを丸ごとシート2にそのままコピーする オートフィルタを取り付ける 全ての列で,オートフィルタの色フィルタで「塗り潰し無し」で絞り込む 残った行を全て「行削除」する オートフィルタを解除すると,色のついた行が残っている。

CaveatEmptor
質問者

お礼

回答ありがとうございました。 オートフィルタを使ってやる方法としては一番ですね。 この方法だとVBAを知らない人でもできそうです!!

CaveatEmptor
質問者

補足

VBAを使って処理する方法だとExcel初心者には難しい(と思います)ので、今回はVBAを使わずに処理する方法をベストアンサーとさせていただきます。 いろいろな回答いただき、ありがとうございました。

その他の回答 (3)

回答No.3

ANo.1です。 あまりお勧めできる方法ではないのですが、一応こんなやり方もあるということで書いてみます。 メニューで挿入→名前→定義 名前(例えば「予想値」と名前を付けたと仮定します)を入力して参照範囲に =GET.CELL(63,Sheet1!C2)+GET.CELL(63,Sheet1!D2)+・・・・+GET.CELL(63,Sheet1!AF2) という感じで調査30までのセルまでを繰り返し入力して セルAG2あたりに上記で入力した =予想値 と入力すると予想値が入っている=色が付いているセルの色番号を合計してくれます。 これを利用するとすべてのセルが無色の場合は0、それ以外なら数値が入ってくるのでそれをオートフィルタで0以外で絞りこむ というやり方もあります。かなり強引ですが参考までに。

CaveatEmptor
質問者

お礼

回答ありがとうございました。 関数を使ってもできるわけですね。 ただちょっと列数が多いとめんどうかもしれないですね。 でも、勉強になりました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! VBAで行うにしても、条件付書式で色が付いている場合は反応しませんが・・・ 手動で色を付けているという前提です。 VBAでの一例です。 Sheet1の2行目からデータがありSheet2に表示するとします。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim ws As Worksheet Set ws = Worksheets("Sheet2") Application.ScreenUpdating = False ws.Cells.ClearContents Columns("A:B").Copy Destination:=ws.Cells(1, 1) For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 3 To Cells(1, Columns.Count).End(xlToLeft).Column For k = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If ws.Cells(k, 1) = Cells(i, 1) Then If Cells(i, j).Interior.ColorIndex <> xlNone Then ws.Cells(k, Columns.Count).End(xlToLeft).Offset(, 1) = Cells(i, j) End If End If Next k Next j Next i For k = ws.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If ws.Cells(k, 3) = "" Then ws.Rows(k).Delete End If Next k Application.ScreenUpdating = True End Sub 'この行まで ※ 条件付書式で色を付けている場合はVBAにその条件を入れてやる必要がありますが、 今回は色付の条件が「空白」というコトになるかと思いますので、難しいかもしれません。 ※ セルに色が付いているモノだけを表示するようにしていますので、他の色がある場合は コードを変更する必要があります。 参考にならなかったらごめんなさいね。m(_ _)m

CaveatEmptor
質問者

お礼

回答ありがとうございました。 やはりVBAで処理して、別のシートに書き出すしかないですね。 できればデータが入っているシートで、オートフィルタを使って表示できればいちばんよかったのですが。

回答No.1

セルの色を調べる関数は無かったと思うので、VBA(マクロ)で処理するか予想値を色以外(数値自体になんらかの工夫をするなど)で識別出来るようにして関数で処理するなどの工夫が必要と思われます。

CaveatEmptor
質問者

お礼

回答ありがとうございました。 そうですね。関数では無理ですね。 オートフィルタでなんとかできないかなと思ったのですが、何か方法がないですかね。

関連するQ&A

  • エクセル2007 データ抽出(関数)について

    教えてください。エクセルシートにて郵便番号と住所が重複しているデータを抽出したいのです。 例)ある顧客の情報として、シート1のA列に、1から10までの新規顧客の氏名、B列には生年月日が入力されています。C列,D列は空白で、E列には全ての顧客(新規顧客を含みます)の氏名、F列には生年月日、G列には郵便番号、H列には住所が入力されています。このふたつの情報の中から、新規顧客データと全ての顧客データの氏名、生年月日が重複している顧客のみ、C列にその郵便番号、D列に住所を表示させたいのです。 OSはXP エクセル2007です。 困っています。よろしくお願いします。

  • エクセル 特定のデータを抽出

    A列のセルには日付と時間のデータ「12/05/23:43」と言うように時間ごとに1日分のデータ入力されています。 B列以降のセルには数値のデータが同じように1日分入力されています。 そのデータの中で7:00、8:00、9:00・・・と言うように複数の特定のデータのみを行単位で残し、その他は削除したいのですが、そのようなことは可能でしょうか?? よろしくお願いします。

  • EXCEL データをレコード化するには

    Excelのデータについて教えてください 1枚目のシートに 管理番号:氏名:住所:電話番号の4つのデータがそれぞれ別のセルに入ってるデータが100件あります。 (Aの列:管理番号 Bの列:名前 Cの列:氏名 Dの列:電話番号) これを、2枚目のシートで利用したいのですが、 Aの列の管理番号を入力したら、その列のデータが表示されるように したいです。Wordの差込のような感じです。 =(Sheet1!$B3)これだと、1つのデータしか出ませんよね。 すべてのデータの送り状を作成したいと思っています。 VBAとかでないとできないのでしょうか。 よろしくお願いいたします。

  • アクセス2003 複数の列に分かれたデータを1列にまとめたい

    例えば (A列)氏名/(B列)電話番号/(C列)携帯電話番号 というcsvデータがあり、これをアクセスに取り込んだときに (A列)氏名/(B列)電話番号or携帯電話番号 というように、2列のデータを1列にしたいのですが うまいやり方はないでしょうか? 元のデータをエクセル上でコピペすれば済むのですが 余計な手間はかけたくないので、よろしく御願いします。

  • 特定の列にのみダブルクリックでデータ入力したい

    ダブルクリックしたセルにA1セルのデータが入力されるマクロで、C列のみデータ入力を受け付け、他の列では入力されない(何も起きない)、というマクロを教えていただきたいです。よろしくお願いします。

  • エクセルのデータ抽出で列が飛び飛びなんですが

    仕事でエクセルを使い始めた初心者です。 シート1に B    D    E     G       K    L   ←列番号 品名 型番 メーカー 数量 ~~ 発注先 単価 ~~ ○○ △△ ××    5  ~~ ◎◎◎ 100 ~~ ●● ▽▽ ××    3  ~~ ■■■ 500 ~~ ∵∵ □□ ▲▲    1  ~~ ◎◎◎ 400 ~~ といった感じで何百件もデータを入力してありまして これをシート2で 発注先 ◎◎ ←ここに発注先名をいれる A    D    H     J    L 品名 型番 メーカー 数量 単価 ○○ △△ ××    5  100 ∵∵ □□ ▲▲    1  400 こうやって必要なところだけを抽出させたいのですが 範囲の指定の仕方がわかりません。 VLOOKUPだと一つ一つ入力しないといけなそうですし AdvancedFilterだと飛び飛びの列の指定の仕方がよくわからないのです。 列番号が飛んでるのは、セルの結合などが多々まぎれてるからです。 どんな構文をかけばいいんでしょうか?

  • 特定の文字列が入力されると、その文字列の列すべてを別のシートに抽出する

    特定の文字列が入力されると、その文字列の列すべてを別のシートに抽出する方法について お世話になります。 エクセルについてのご相談なのですが、 「シート1に入力された内容を、表の一番左の番号を元に別シートに引用したい」 というご相談です。 条件として、 ・入力される内容は複数の項目 ・入力されるデータは文字列も数値もある ・シート1は任意の項目でソートをすることもあるが、一番左の番号も同様にソートされるので、データと番号がずれることはない という前提です。 サンプル画像にイメージデータを添付致しました。 このサンプルですと、A4~A12の数字が「左端の番号」になり、別シートでは「左端の番号」を元にB~Fのデータを引用するように作成をしたいと思っています。 説明がわかりにくいかとは思いますが、ご助力頂ければ助かります。 よろしくおねがいいたします。

  • Excelでのデータ入力について

    Windows98でExcel2000を使用しています。 現在「番号」(A列)「氏名」(B列)を100件ほど既に入力しています。 番号を呼び出して点数を入力すると、呼び出した番号の(C列)(D列)(E列)に自動的に値が入るようなフォームを作成したいのです。 「データ」→「フォーム」を利用すると、1回毎に「検索」を押さないと新規入力になってしまうので不便です。 「検索」を押さなくても入力できるようなフォーム、又は他の便利な機能をご存知ないでしょうか。 つたない説明ですが、よろしくお願いします。

  • エクセルのデータ抽出

    今エクセルのデータ抽出に困っています。 14:00:00.862072 文字列(以下すべて数字、英字混合) 14:00:00.862114 文字列 14:00:00.862359 文字列 14:00:00.862367 文字列 というデータがあり、 14:00:00.[この部分!!] 文字列 だけを抽出したいのです。 しかし、コピー&ペーストを行って貼り付けたので この長い1行が1つのセルにすべて入ってしまっています。 どこのサイトも、セルが違うと、抽出はできるように書いてあるのですが....。 このデータはすべて1つのセルに長い1文が入ってしまっています。 この場合、抽出することは不可能でしょうか? やりかたがあったら、ぜひ教えてください。

  • エクセルで特定の列だけを抽出してcsvで保存したい

    エクセルで特定の列だけを抽出してcsvで保存したい 例えば、A列:住所、B列:氏名、C列:電話番号といった3つの列がありそれぞれデータがはいっているとします(図参照)。 そしてcsvとして書き出すときにB列とC列だけを書き出したい場合どのようにすればよいでしょうか。 この場合、書き出すときにA列だけを一旦削除、などということはしたくないです。 また1列目のタイトルも書き出さないようにしたいです。 ご教授よろしくお願いいたします。

専門家に質問してみよう