[[20110729083114]] 『当該データを別のシートにすべて表示するには』(HI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『当該データを別のシートにすべて表示するには』(HI)
 教えて下さい。シート1に100名の氏名データがあり、
 それぞれをA〜Tの5名ずつのグループ分けしています。
 つまりA2:A101に氏名、B2:B101にそれぞれのグループ名(A〜T)が入力されています。
 このデータからシート2のA2にたとえば「E」と入力すると
 B2:B6のセルにEグループの者の氏名が全員分名簿順に表示されるようにするにはどうしたらよいのでしょうか?
 関数だけで可能でしょうか、それともマクロを作るのでしょうか?
 お願いいたします。  Excel2007

 フィルタ オプションの設定で抽出する作業をマクロの記録で作成
それをシートモジュールのWorksheet_Changeへ貼り付け
参考:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
  Sheets("Sheet1").Range("A1:B101").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("B1"), Unique _
        :=False
End If
End Sub


 早速のコメントありがとうございます。
 まことに申し訳ないのですが、当方初心者のため、よくわかりません。
 具体的に指示していただければ助かるのですが。(HI)

 >当方初心者のため、よくわかりません。
と言われても何処から説明すればよいのか・・・・
フィルタ オプションの設定が?なら
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-filter2.html
を参考にしてください
(BreakTime)2番目のレスは私ですニックネームを入れ忘れました


 BreakTimeさん、ありがとうございます。
 まずフィルターでAのグループの氏名を抽出するまでの作業はマクロ記録で記録しました。
 この後の作業の仕方がよくわかりません。
 「シートモジュールの〜以降」について教えていただけるでしょうか。(HI)

 BreakTimeさんへ
 いろいろとやってみましたが、やはりシートモジュールのWorksheet_Changeへ貼り付け以降のやり方がよくわかりません。
 とりあえずAグループを抽出するマクロ記憶はやりましたが、抽出されるのはデータと同じシートになっています。
 この後どうすればよいのでしょうか(HI)

 フィルタオプションの設定でデータを抽出する時
 抽出結果を出したいシートから実行すると
 データの有るシートとは別のシートに抽出出来る事に成ります。

 それでもう一度
  A2セルに A を入力して、Aグループを
  シート1とは別のシートに抽出する操作
 の記録をとって下さい。

 A2セルの値を変えてマクロを実行した時
 希望する結果が得られますか?

 (HANA)

 HANAさんへ
 「A2セルに A を入力して、Aグループを
  シート1とは別のシートに抽出する操作
 の記録をとって下さい。」とここまでの操作はマクロ記録したのですが、以降の操作が全くわかりません。
 もちろんA2にほかのグループを入れても変化ありません。
 このマクロ記録したものをどこにどのように貼り付け、そしてBreakTimeさんのマクロをどこにどのように貼り付けるかがわかりません。
 お恥ずかしいかぎりなのですがマクロの作り方を理解しておりません。(HI)


 順番に進んで下さい。

 当初は
 >とりあえずAグループを抽出するマクロ記憶はやりましたが、
 >抽出されるのはデータと同じシートになっています。
 と言うマクロでしたね。

 そして、新しく取り直して貰ったと思います。
 私は
 「A2セルの値を変えてマクロを実行した時
  希望する結果が得られますか?」
 と質問していますが、どうでしょう?

 思い通りのマクロが記録されていれば以降の操作に移れますが
 そうでない場合は、次の操作を行っても希望する結果には成りません。

 (HANA)


 HANAさんへ
 私の説明が不備でうまく伝わらず申し訳ございません。
 とりあえず、現状はシート1にあるデータから
 シート2にAグループの氏名を表示させるマクロ記録はできました。
 しかしA2の値を変えて他のグループの氏名を表示させることはできておりません。
 私ができたのはシート1のデータにフィルターをかけてAグループを抽出し、
 それをシート2の指定場所にコピーするという作業をマクロ記録させただけです。(HI)

 >とりあえず、現状はシート1にあるデータからシート2に
 >Aグループの氏名を表示させるマクロ記録はできました。
 >しかしA2の値を変えて他のグループの氏名を表示させることはできておりません。

 これは
 「A2セルの値を変えたら、【勝手に】表示させる様には出来ていない」
 と言う事で良いですか?

 私が前段階として確認したいのは
  A2セルの値を変えて、先ほど記録して貰ったマクロを【実行】すると
  A2セルの値に応じたデータが抽出される様なマクロが出来たか?
 と言う事なのですが。。。

 手動で実行して、確認してもらえましたか?

 (HANA)

 HANAさんへ
 A2のセルの値を変えても全く変化はありません。
 つまり最初にAのグループの氏名を表示したままで、他のグループの氏名は全く表示されません。
 HANAさんのおっしゃるとおり「A2セルの値を変えたら、【勝手に】表示させる様には出来ていない」のが現状です。(HI)

 >それをシート2の指定場所にコピーするという作業をマクロ記録させただけです
もしかしてオートフィルタでやってませんか?
オートフィルタで行うとコードに"A"を抽出しなさいと部分が有るため
A2の値を変えても変化しません
↓この様な部分
.AutoFilter Field:=2, Criteria1:="A"
"A"を A2のセルの値にしたいのなら
Criteria1:="A"をCriteria1:=Worksheets("Sheet2").Range("A2").Value
等にしてください
一方フィルタ オプションの設定では
CriteriaRange:=Worksheets("Sheet2").Range("A1:A2")
の部分でA1:A2が抽出条件範囲となるのでA2の値を変えると
変化します
少しだけ時間が空いた・・・
(BreakTime)

 掲示板の書き込みに関して〜
 行頭に半角スペースを入れると、書き込みの改行位置が反映されます。
 <ここです。

 そんでもって、過去分は勝手に整形しちゃいました。
 (とおりすがりん♪)

 マクロの記録で出来たコードが自動で実行されないのは分かっていますので。。。
 その前に

 【確認のため】
  A2セルの値を変更して、手動でマクロを実行したら きちんと動きますか?
                         ~~~~~~
 セルの値を変えた時に自動で動く様に作業をする前に
 確認して 出来るのか出来ないのか 結果を教えて貰いたいのですが。
   ・・・と、再三書いてるのですが 何故この部分に付いては
      お返事が無いのでしょうね。。。

 (HANA)

 ひょっとして
 「A2セルの値を変更」することを「手動」だと思ってるんじゃ?
 あとは「マクロを手動で実行する」方法がわからないとか?

HANAさんへ
 わたしの説明がつたないために真意が伝わらなくご迷惑をかけました。
 「A2セルの値を変更して、手動でマクロを実行したら きちんと動きますか?」の部分ですが
 その通り値を変更して、手動でマクロを実行しましたが変化ありませんでした。

BreakTimeさんへ

 フィルタ オプションの設定で抽出する作業をマクロの記録で作成
それをシートモジュールのWorksheet_Changeへ貼り付け
参考:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
  Sheets("Sheet1").Range("A1:B101").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("B1"), Unique _
        :=False
End If
End Sub
 このマクロはどこに張り付けるのでしょうか。基本的な質問で申し訳有りません。あとオートフィルターで
 やりました。(HI)


ちなみにAグループの氏名をシート2に表示させたマクロ記録は以下の通りです。よろしくご指導ください。
BreakTimeさんのご指摘通りオートフィルターでやってしまいましたのでAグループしか表示されません
(HI)

Sub データ抽出()

    Sheets("Sheet1").Select
    Range("A1:B23").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="A"
    Range("A1:B23").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Sheets("Sheet1").Select
    Selection.AutoFilter Field:=2
    Sheets("Sheet2").Select
    Range("A2").Select
End Sub


 フィルタ オプションの設定
  2007では、データタブ → 並べ替えとフィルタグループ → 詳細設定
 ですね。

 使ったことが無ければ、使ってみてください。

 (HANA)

HANAさんへ
 フィルタオプションやってみました。それをマクロ記録で手動でやってみたのですが、シート2の値をいろ   いろと変えてみたのですが、1行目のタイトル行だけがコピーされて氏名データが表示されませんでした。
どこに原因があるのでしょうか。以下がその記録です。(HI)

 Sub Macro3()

    Sheets("Sheet1").Range("A1:B23").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("B1:C7"), Unique:=True

    Sheets("Sheet2").Select
    Range("A2").Select

 End Sub


 マクロの記録をとる時に、既に希望通り抽出出来ない のですか?
 それとも、一回目(マクロの記録をとった時)はうまくいくが
  そのマクロを実行してもうまくいかない のですか?

 同じブックで次の手順をやってみてもらえますか。
 1.新規シートを追加する。(シート名:Sheet3)
 2.Sheet1のB1:B2セルをコピーして、Sheet3のA1:A2セルに貼り付ける
 3.Sheet3をアクティブにして、
     データタブ → 並べ替えとフィルタグループ → 詳細設定
       抽出先−−−−−−
        ○選択範囲内(F)
        ●指定した範囲(O)
       リスト範囲(L)   Sheet1!A:B
       検索条件範囲(C) A1:A2
       抽出範囲(T)     B1
       □重複するレコードは無視する(R)
                         [ OK ]

 すると、A2セルに貼り付けたグループのみ抽出されますか?
 それとも、やっぱり駄目でしょうか?

 A2セルの値もSheet1と一致する必要がありますが
 A1セルの値(見出しの文字)もSheet1と一致している必要があります。
 そのあたりを確認してみて下さい。

 (HANA)

HANAさんへ
 できました。ありがとうございました。出来なかった原因は、お恥ずかしいかぎりですが、
「A2セルの値もSheet1と一致する必要がありますが」のご指摘通りでした。A2に入力した
 値が微妙にずれていたのだと思います。Sheet1のデータをリスト入力する形にしてみると
 何の問題もなく表示されました。
 BreakTimeさん、Hanaさん本当にありがとうございました。そしてまたよろしくお願いいたします。
 (HI)

 出来たのは良かったですが、抽出が出来た段階ですよね?
   ・・・・マクロの記録も出来たと思いますが。。。

 マクロが出来たら、自動実行出来る様にしないといけないですよね。

 そこまで完成しましたか?
 或いは、ボタンで実行でも良い事にする?

 (HANA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.