解決済み

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

  • 困ってます
  • 質問No.7339439
  • 閲覧数251
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 92% (792/855)

A列に番号、B列に氏名、C列に調査1、D列に調査2、E列に調査3というようにデータが入っています。実際はデータは調査30ぐらいまであります。
調査1~というのはある種のテストで、データは1~100の点数です。

欠席などですべての人が調査1~30のすべてを受験しているわけではありません。
欠席で実際の点数がない場合は、前後の調査の点数から予想値を入力しています。
予想値が入力されたセルは、セルの色を黄色にしています。
なお、すべてを受験していない人もいません(調査1~30のいずれかは受験しています)。

調査1~30のいずれかに予想値が入っている人の番号、氏名、予想値を抽出したいのですが、どうしたらいいでしょうか?

オートフィルタを使うと列ごとに繰り返さないといけませんよね?

やはりマクロで処理するしかないでしょうか?

何かいい方法があれば、ご教示お願いいたします。

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

  • 回答No.4

ベストアンサー率 66% (5277/7940)

オートフィルタだけ使う方法としては。

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

お礼率 92% (792/855)

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

いろいろな回答いただき、ありがとうございました。
投稿日時 - 2012-03-05 17:47:12
お礼コメント
CaveatEmptor

お礼率 92% (792/855)

回答ありがとうございました。

オートフィルタを使ってやる方法としては一番ですね。

この方法だとVBAを知らない人でもできそうです!!
投稿日時 - 2012-03-03 17:35:54
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 35% (25/70)

ANo.1です。
あまりお勧めできる方法ではないのですが、一応こんなやり方もあるということで書いてみます。

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

というやり方もあります。かなり強引ですが参考までに。
お礼コメント
CaveatEmptor

お礼率 92% (792/855)

回答ありがとうございました。

関数を使ってもできるわけですね。
ただちょっと列数が多いとめんどうかもしれないですね。

でも、勉強になりました。
投稿日時 - 2012-03-03 17:34:20
  • 回答No.2

ベストアンサー率 49% (2537/5118)

こんにちは!
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

お礼率 92% (792/855)

回答ありがとうございました。

やはりVBAで処理して、別のシートに書き出すしかないですね。

できればデータが入っているシートで、オートフィルタを使って表示できればいちばんよかったのですが。
投稿日時 - 2012-03-03 12:33:07
  • 回答No.1

ベストアンサー率 35% (25/70)

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

お礼率 92% (792/855)

回答ありがとうございました。

そうですね。関数では無理ですね。

オートフィルタでなんとかできないかなと思ったのですが、何か方法がないですかね。
投稿日時 - 2012-03-03 12:32:00
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ