
縦に名前が並び、その横の列に男女、その横の列にA・B・Cの3グループが入力されている表があります。
その表からAグループ・Bグループ・Cグループのメンバーを抽出して各グループのメンバー表を作成したいです。
条件として…
(1)今後メンバーが増える可能性がある。
(2)メンバーの所属グループは変更になる。
(3)グループの人数構成はバラバラである。
(4)メンバー表の名前は上から縦に並べたい。
(5)メンバー表はそれぞれ別シートに作成したい。
(6)ABどちらかに所属する男性のみ(女性のみ)のグループのメンバー表も作成したい。
毎日作成するので日々の手間を最小限にしたいです。
関数等を利用して一発で表作成することはできないでしょうか?
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
関数案については、既に回答が出ていますが
さて、提示された関数をご理解できましたでしょうか。
条件が変更されたときに、ご自身で式を変更するには
意外と、VBA以上の知識が必要な位複雑な式です。
別案ですが、フィルターオプション の機能を紹介しておきます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
のサイトを参考にしてください。
機能を理解できれば、色々な応用が可能です。
毎日、実行するのであれば、一度、マクロの記録を実行すればよいです。
記録される内容は、ほんの1行ですので、VBAを理解するのも楽です。
皆さん回答ありがとうございます。
関数で、と思っていたのですが想像以上に複雑な式でよく理解できませんでした。
マクロをしてみたいと思います。
No.5
- 回答日時:
配列数式になりますので表示するセルが多いと、再計算に時間がかかり重くなるのであまりお勧めしませんが、以下のような関数で該当データの名前を表示することができます(元データがSheet1にある場合)。
>Aグループ・Bグループ・Cグループのメンバーを抽出して各グループのメンバー表を作成したいです。
(Aグループを抽出する場合)
=INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$C$2:$C$100<>"A")*1000+ROW($A$2:$A$100),),ROW(A1)))&""
>ABどちらかに所属する男性のみ(女性のみ)のグループのメンバー表も作成したい。
=INDEX(Sheet1!A:A,SMALL(INDEX(((Sheet1!$C$2:$C$100<>"A")*(Sheet1!$C$2:$C$100<>"B")+(Sheet1!$B$2:$B$100<>"男"))*1000+ROW($A$2:$A$100),),ROW(A1)))&""
No.4
- 回答日時:
No.1です!
補足に
>今後なんらかのエラーが生じた時にリカバリーできないのではと・・・
とありましたが、今回の場合は仮に不具合が出た場合はコードを作成している訳ではありませんので、
もう一度マクロの記録をとれば大丈夫だと思います。
ただ関数での方法をご希望のようなので↓の画像のような方法ではどうでしょうか?
(画像が小さくて見にくいかもしれません)
Sheet1が入力Sheetで、Sheet2~Sheet4が「A~C」のSheet・Sheet5が最後の条件のSheetとします。
Sheet1に作業用の列を4列設けます。
E2セルに
=IF(OR($A2="",$C2<>E$1),"",ROW())
という数式を入れ、G2セルまでオートフィルでコピー!
H2セルには
=IF(OR(A2="",Sheet5!$A$1=""),"",IF(AND(C2<>"C",B2=Sheet5!$A$1),ROW(),""))
という数式を入れ、E2~H2を範囲指定しH2セルのフィルハンドルでずぃ~~~!っと下へコピー!
次にSheet2~Sheet4をグループ化(各SheetのA1セルにはグループ名を入力しておきます)
(Sheet2を開きShiftキーを押しながらSheet4のSheet見出しをクリックこれでSheet2~Sheet4がグループ化されます)
Sheet2のA4セルに
=IF(COUNT(OFFSET(Sheet1!$D:$D,,MATCH($A$1,Sheet1!$E$1:$G$1,0),,1))<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(OFFSET(Sheet1!$D:$D,,MATCH($A$1,Sheet1!$E$1:$G$1,0),,1),ROW(A1))))
という数式を入れ列方向と行方向にオートフィルでコピー!
これでSheet2~Sheet4には各グループごとの表示ができているはずです。
Sheet5だけは数式が変わります。(A1セルには条件を入力)
Sheet5のA4セルに
=IF(COUNT(Sheet1!$H:$H)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$H:$H,ROW(A1))))
という数式を入れ列方向と行方向にコピー!
これで画像のような感じになります。
以上、参考になれば良いのですが・・・m(_ _)m

No.3
- 回答日時:
回答No2です。
メンバー表をシート2に作成するとしたらNo2で回答した表の作成の部分でG列からS列までの項目など、1行目と2行目の部分はそのままコピーしてシート2のA1セルに貼り付けます。
その後にA3セルには次の式を入力してF3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ISERROR(INDEX(Sheet1!$A:$B,MATCH(ROUNDUP(COLUMN(A1)/2,0)*1000+ROW(A1),Sheet1!$D:$D,0),MOD(COLUMN(A1)-1,2)+1)),"",INDEX(Sheet1!$A:$B,MATCH(ROUNDUP(COLUMN(A1)/2,0)*1000+ROW(A1),Sheet1!$D:$D,0),MOD(COLUMN(A1)-1,2)+1))
H3セルには次の式を入力してM3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ISERROR(INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(COLUMN(A1)/2,0)*10000+(MOD(COLUMN(A1)-1,2)+1)*1000+ROW(A1),Sheet1!$E:$E,0))),"",INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(COLUMN(A1)/2,0)*10000+(MOD(COLUMN(A1)-1,2)+1)*1000+ROW(A1),Sheet1!$E:$E,0)))
これでシート1で新たにデータが追加される、または変更されることが有っても瞬時にシート2の表に反映されます。
No.2
- 回答日時:
シートのA1セルに名前、B1セルに性別、C1セルにグループ名の項目名がそれぞれあり、データは2行目以降に入力されているとします。
そこで作業列を作って対応することにします。
D2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",IF(C2="A",1,IF(C2="B",2,IF(C2="C",3,0)))*1000+COUNTIF(C$2:C2,C2))
E2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",IF(C2="A",1,IF(C2="B",2,IF(C2="C",3,0)))*10000+IF(B2="男",1,IF(B2="女",2,0))*1000+COUNTIF(E$1:E1,">="&IF(C2="A",1,IF(C2="B",2,IF(C2="C",3,0)))*10000+IF(B2="男",1,IF(B2="女",2,0))*1000)-COUNTIF(E$1:E1,">="&IF(C2="A",1,IF(C2="B",2,IF(C2="C",3,0)))*10000+IF(B2="男",1,IF(B2="女",2,0))*1000+999)+1)
そこでお求めの表ですが各グループのメンバー表をG列からL列を使って表示させることにします。
例えばG1セルにはA、H1セルにはグループ、I1セルにはB、J1セルにはグループ、K1セルにはC、L1セルにがグループとそれぞれ文字列を入力します。またG2セルには名前、H2セルには性別、と繰り返しながらL2セルまで入力します。
G3セルには次の式を入力してL3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ISERROR(INDEX($A:$B,MATCH(ROUNDUP(COLUMN(A1)/2,0)*1000+ROW(A1),$D:$D,0),MOD(COLUMN(A1)-1,2)+1)),"",INDEX($A:$B,MATCH(ROUNDUP(COLUMN(A1)/2,0)*1000+ROW(A1),$D:$D,0),MOD(COLUMN(A1)-1,2)+1))
各グループで男女を分けた表ですがN列からS列を使って表示することにします。
N1セルにはA、O1セルにはグループ、P1セルにはB、Q1セルにはグループ、R1セルにはC、L1セルにはグループと入力します。N2セルには男、O2セルには女、これを繰り返してL2セルまで入力します。
N3セルには次の式を入力してL3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ISERROR(INDEX($A:$A,MATCH(ROUNDUP(COLUMN(A1)/2,0)*10000+(MOD(COLUMN(A1)-1,2)+1)*1000+ROW(A1),$E:$E,0))),"",INDEX($A:$A,MATCH(ROUNDUP(COLUMN(A1)/2,0)*10000+(MOD(COLUMN(A1)-1,2)+1)*1000+ROW(A1),$E:$E,0)))
No.1
- 回答日時:
こんにちは!
>毎日作成するので日々の手間を最小限にしたいです・・・
とありますので、
一番簡単なのは最初に「マクロの記録」をとっておき、データ入力後マクロを実行する方法だと思います。
Sheet1にデータを入力し、別Sheetにデータを表示するとします。
当方使用のExcel2003での操作方法です。
メニュー → ツール → マクロ → 「新しいマクロの記録」を選択し、マクロ名は好みの名前にしておきます。
Sheet1のA列~最終列を範囲指定(今度データが増える可能性があると思いますので、列すべてを範囲指定しておきます)
メニュー → データ → オートフィルタ → それぞれの条件でフィルタをかけます →
範囲指定されている列内で右クリック → コピー → 表示したいSheetのA1セルを選択 → 貼り付け
この操作を表示したいSheet数だけ行います。
最後にSheet1のオートフィルタを解除(データ → フィルタ → 「オートフィルタ」をもう一度クリック)
これで ツール → マクロ → 「記録終了」 で完了です。
後はSheet1のデータ変更があるたびにマクロを実行すればOKだと思います。
(Alt+F8キー → マクロ → 先ほどのマクロを実行 です)
尚、Excel2007以降のバージョンでは
リボンの「開発」 をクリックすると同様の操作でできると思います。
どうしても関数での方法がご希望であればごめんなさいね。m(_ _)m
この回答への補足
回答ありがとうございます。
マクロ使用も考えたのですが、職場にマクロに詳しい人間がおらず、最初の設定はできても今後なんらかのエラーが生じた時にリカバリーできないのではと心配に思い、実施しませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- LINE LINEで入っていたグループのメンバーを抜ける事になりグループの発起人1人を除いてブロックしました。 4 2023/02/03 18:08
- その他(恋愛相談) 大学のサークルや職場で好きな女性ができた時、その好きな女性と自分が仲良くてグループに入ってるとします 2 2022/09/01 11:11
- アイドル・グラビアアイドル 推しについて、悩みがあります 2 2022/12/13 22:48
- その他(芸能人・有名人) メンバーが欠けると補充するグループと、欠けたままで続行するグループ。違いは? 8 2023/01/22 09:10
- 友達・仲間 誘いの断り方で悩んでいます。 専門学生の女です。 1年かけて行うグループ制作の課題を一緒にしないかと 3 2022/04/28 09:17
- 作詞・作曲 ジャニーズのグループで 2 2023/05/01 19:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(芸能人・有名人) モーニング娘。って潰れそうなところからゴマキが加入したけど99ー2000年にかけての一発屋でしたよね 4 2022/11/22 11:23
- アイドル・グラビアアイドル AKB岡田奈々さんが大炎上してますが、向井地美音さんは「改めて運営に確認を取ったところ『AKB48グ 4 2022/11/21 09:44
- 友達・仲間 成人式の日に高校の同窓会に誘われました。 最初は行きたい!と思ったのですが、グループに参加したのです 3 2023/01/06 08:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
エクセルで質問です。 ハイパー...
-
Office2021を別のPCにインスト...
-
別シートの年間行事表をカレン...
-
エクセルからメールを作れるか...
-
パソコンWindows11 Office2021...
-
大学のレポート A4で1枚レポー...
-
Excel 日付を比較したら、同じ...
-
【Excel VBA】PDFを作成して,...
-
エクセル 同じ数字を他の列に自...
-
libreoffice calcで行を挿入し...
-
Officeを開くたびの「再起動メ...
-
Microsoft365、ページ設定がで...
-
快活CLUBについて 私用で使う書...
-
エクセルで特定のセルの値を別...
-
マクロ自動コピペ 貼り付ける場...
-
Microsoft Formsの「個人情報や...
-
表の作成について
-
Microsoft365搭載Windows11PCへ...
-
outlookのメールが固まってしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
Office2021を別のPCにインスト...
-
大学のレポート A4で1枚レポー...
-
Microsoft365について
-
outlookのメールが固まってしま...
-
英数字のみ全角から半角に変換
-
Office 2021 Professional Plus...
-
エクセルVBAで1004エラーになり...
-
エクセルで特定のセルの値を別...
-
MSオフィス2013にMS365が上書き...
-
Microsoft Formsの「個人情報や...
-
【Excel VBA】PDFを作成して,...
-
別シートの年間行事表をカレン...
-
office2019 のoutlookは2025年1...
-
マクロ自動コピペ 貼り付ける場...
-
表の作成について
-
office365 回復できない。
-
マイクロソフト 一時使用コード...
-
Teams内でショートカットって貼...
-
Microsoft Office Homeインスト...
おすすめ情報