アプリ版:「スタンプのみでお礼する」機能のリリースについて

 エクセルで部活動名簿を作っています。
この学校では、一人の生徒が複数の部活に所属しています。
シート1に下記のような名簿を作成しておいて

  A   B   C  D    E   F   G
______________________________
1 学年  氏名 性別 部活  部活  部活  部活
2  1  スズキ 男 バスケ       水泳
3  1 ヤマシタ 女       テニス 水泳
4  2  サトウ 女 バスケ            バレー
5  2  イトウ 男        テニス
6  3  タナカ 男 バスケ  テニス      バレー


シート2に、たとえば「2 男 バレー」(2は、2年生ということ)
と入力して、ボタンをクリックするとシート1の名簿から抽出されてシート2に表示されるようにしたいのです。

最初は複数抽出ではなく、バレー部ならバレー部、バスケ部ならバスケと抽出すればよかったので、マクロの記録を使って
フィルタオプションの設定で指定した範囲を選択
シート1でリスト範囲を指定し
検索条件範囲は、シート2に部活 バレー部と入力しそこのセルを指定
抽出範囲でシート2の表示したいセルを選択しました。
マクロの記録を終了してから、ビジュアルベーシックエディタで
少しいじって、その後フォームでボタンを作成し
そこにマクロを読み込ませて、そのボタンをクリックすると
シート2に表示されるようにしました。

 これで出来上がりと思ったら、依頼主からバレー部の中でも
学年でわけ、さらに性別で分けるようにしたいという要望があり
いろいろと試してみたのですがうまく行かず・・・
お手上げ状態です。
ちなみに、私はエクセルは詳しくないです。
前回の抽出も、ネットや図書館で借りてきた本で調べ調べやっと出来たものです。

 どうか、お力をお貸しください!よろしくお願いいたします。

A 回答 (3件)

部活を 部活1 部活2 部活3 部活4 といった具合に変更します



条件となるセルに
学年 性別 部活1 部活2 部活3 部活4
 2  男 バレー
 2  男    バレー
 2  男       バレー
 2  男          バレー
といった具合に設定しておき

フィルターのオプションで抽出してみてください
1行の列にきじゅるされた条件がアンド(AND)
行方向に伸びる条件がオア(OR)
になります
    • good
    • 0
この回答へのお礼

ありがとうございます!
部活1 部活2 部活3 部活4とすることで
うまく出来ました!!
ありがとうございました!!

お礼日時:2008/07/19 15:41

登録のシートと検索結果のシートを分けなくてもいいのであれば、下のように表を変更して、オートフィルタを使うのが簡単だと思います。



  A    B    C    D     E    F   G
______________________________
1 学年  氏名  性別 バスケ テニス 水泳 バレー
2  1  スズキ   男  ○         ○
3  1  ヤマシタ 女       ○     ○
4  2  サトウ   女  ○             ○
5  2  イトウ   男       ○
6  3  タナカ   男  ○   ○         ○

1行目で、[データ]メニューの[フィルタ]から[オートフィルタ]をチェックします。

この回答への補足

 ありがとうございます。
そうなんです!私も最初それを提案しました。
それで、ほしいデータだけをコピーして別の名簿に貼り付ける等したら
どうかと提案したのですが・・・
依頼主は、とにかくワンタッチボタンで・・・と言うので。
 
すみません・・・
ありがとうございました。

補足日時:2008/07/19 14:47
    • good
    • 0
この回答へのお礼

 ありがとうございました。
解決いたしました!!

お礼日時:2008/07/19 15:45

エクセルの初心者がやるような問題ではないと思う。


それで処理ロジックは総なめ(全員をIF文で判別する方法)法という初等的な方法でやったものを挙げておく。
例データ
A1:G6
学年氏名性別部活部活部活部活
1スズキ男バスケ水泳
1ヤマシタ女テニス水泳
2サトウ女バスケバレー
2イトウ男テニス
3タナカ男バスケテニスバレー
部活所属記録はD列から左よりになっているが、質問例でも問題なかろう。
ーーー
コード
標準モジュールに
Sub test01()
k = 3
d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
MsgBox d
For i = 2 To d
If Worksheets("Sheet1").Range("C" & i) = Worksheets("Sheet2").Range("A1") Then
For j = 4 To 8 'D-H列まで
If Worksheets("Sheet1").Cells(i, j) = Worksheets("Sheet2").Range("B1") Then
For m = 1 To 8 'その行A-H列をSheet2へ値代入
Worksheets("Sheet2").Cells(k, m) = Worksheets("Sheet1").Cells(i, m)
Next m
k = k + 1 '次の行をポイント
End If
Next j
End If
Next i
End Sub
これをSheet2のコマンドボタンのクリック処理のなかへ
Private Sub CommandButton1_Click()
test01
End Sub
にする。
ーー
結果 1例です 
男テニス(コマンドボタン)<--条件をA1,B1に入れる
学年氏名性別部活部活 <--コピーしておく
2イトウ男テニス  <-以下が結果
3タナカ男バスケテニスバレー
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに、私のような初心者がやるようなことではないかもしれないですが
仕事上、やらざるを得なくて・・・
部活1 部活2 部活3 部活4とすることで
うまく出来ました!!

imogasi様の回答はすごいですね。
やはり、初心者には難しいです。
これを機に、勉強してみたいと思います。
ありがとうございました!!

お礼日時:2008/07/19 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!