- ベストアンサー
エクセルで選手名の管理表作成方法
- エクセルを使用して選手名の管理表を作成する方法について、自動表示や条件付き表示について調査しています。
- シート2で出場予定月に該当する選手名を表示するための数式を使用していますが、出場可能の有無の条件を加える方法について教えてください。
- また、出場予定月を日付から月にまとめる計算方法があれば、シート2と同様の結果を得ることができるか教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
そもそもなのですが、 =IF(COUNTIF(シート1!$C$1:$C$10,$A$1)<ROW(シート1!C1),"",INDEX(シート1!C$1:C$10,SMALL(IF(シート1!$C$1:$C$10=$A$1,ROW(シート1!$C$1:$C$10)),ROW(シート1!C1)))) の式は質問分とあってません。INDEX(の次の部分の範囲が、C列を参照しているので、出場予定月を返す式になってます。これが間違いなのだとして。 =IF(SUMPRODUCT(((シート1!$C$1:$C$10-DAY(シート1!$C$1:$C$10)+1)=A1)*(シート1!$A$1:$A$10="●"))<ROW(シート1!C1),"",INDEX(シート1!B$1:B$10,SMALL(IF(((シート1!$C$1:$C$10-DAY(シート1!$C$1:$C$10)+1)=A1)*(シート1!$A$1:$A$10="●"),ROW(シート1!$C$1:$C$10)),ROW(シート1!C1)))) という式をいれれば出来るかと思います。 出場できない選手名は「"●"」を「""」として下さい。
その他の回答 (4)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
一部 修正。 さらに条件が付加されるので J1セルに =IF(($A$1:$A$10="●")*($C$1:$C$10=$H$1),ROW(A1)) =TRUE*1 の計算結果は 1になること 論理式が数値の場合、0はFALSE、0以外がTRUEとなる 上記数式は完全な間違いではないし、ほしい結果が求められるが わかりにくいのと説明にそぐわないので J1セルは =IF((A1="●")*(C1=$H$1),ROW(A1)) 下へオートフィルとします。
お礼
今回は、貴重なアドバイスを頂き、 本当にありがとうございました。 ベストアンサーには、他の方を選びましたが、 ご回答頂いた内容は、大変参考になり、 アドバイスの優劣的な意味で、 ベストアンサーにしなかったわけではありません。 ご了承下さい。 ご協力頂き、ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>可能であれば、複数のセルを使わずに、 >一つのセル内で、一回の計算式から算出したいです。 を実現する。および、条件を加えるためには、数式の理解が必要です。 そのためのステップです。 わかりやすくするためには同一シートで作業列を使います。 条件 H1セルに 文字列で 2010/6 と入力するとします。 一致する条件に行番号を振る D1セルに =IF(C1=$H$1,ROW(A1)) 下へオートフィル 行番号を小さい順にする E1セルに =SMALL($D$1:$D$10,ROW(a1)) 下へオートフィル 行番号に対する氏名を返す F1セルに =INDEX($B$1:$B$10,E1) 下へオートフィル エラー処理 G1セルに =IF(COUNTIF($C$1:$C$10,$H$1)<ROW(A1),"",F1) 下へオートフィル 普通に作業列を使うならこのような面倒な方法はとりませんが、 配列数式を理解するうえで必要なので提示しました。 さらに条件が付加されるので J1セルに =IF(($A$1:$A$10="●")*($C$1:$C$10=$H$1),ROW(A1)) =TRUE*1 の計算結果は 1になること 論理式が数値の場合、0はFALSE、0以外がTRUEとなる 上記、すべて完全に理解した上で I1セル =IF(SUM(($A$1:$A$10="●")*($C$1:$C$10=$H$1))<ROW(A1),"", INDEX($B$1:$B$10,SMALL(IF(($A$1:$A$10="●")*($C$1:$C$10=$H$1),ROW($A$1:$A$10)),ROW(A1)))) [Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
お礼
今回は、貴重なアドバイスを頂き、 本当にありがとうございました。 ベストアンサーには、他の方を選びましたが、 ご回答頂いた内容は、大変参考になり、 アドバイスの優劣的な意味で、 ベストアンサーにしなかったわけではありません。 ご了承下さい。 ご協力頂き、ありがとうございました。
- nattocurry
- ベストアンサー率31% (587/1853)
#2 です。 ご記入があったので、訂正します。 「出場予定月」列で、 「2010/5/1」「以上」 AND 「2010/6/1」「より小さい」 と指定します。 ↓ 「出場予定月」列で、ドロップダウンリストの中から「オプション」を選択し、 「2010/5/1」「以上」 AND 「2010/6/1」「より小さい」 と指定します。
お礼
今回は、貴重なアドバイスを頂き、 本当にありがとうございました。 この方法でも、実現できそうですね! ベストアンサーには、他の方を選びましたが、 ご回答頂いた内容は、大変参考になり、 アドバイスの優劣的な意味で、 ベストアンサーにしなかったわけではありません。 ご了承下さい。 ご協力頂き、ありがとうございました。
- nattocurry
- ベストアンサー率31% (587/1853)
お望みの回答ではありませんが・・・ 私なら、オートフィルタを利用して、簡単に済ませます。 1行目には適当な項目名を記入します。 列A~列Cの全体を選択して、 データ - フィルタ - オートフィルタ を設定します。 「出場可能」列で、ドロップダウンリストの中から「●」を選択。 「出場予定月」列で、 「2010/5/1」「以上」 AND 「2010/6/1」「より小さい」 と指定します。 すると、出場可能で、出場予定月が2010年5月の人のデータだけが抽出されます。 このやりかたでは、ご不満でしょうか?
お礼
今回は、貴重なアドバイスを頂き、 本当にありがとうございました。 自己解決できそうなので、回答を締切ります。 ご協力頂き、ありがとうございました。
補足
kybo 様 迅速なご回答ありがとうございます。 (最初に私が書いた式は、ご指摘の通り間違いです) 一点追加のご質問になり恐縮ですが、「出場予定月」であるC列が、計算式だった場合、 「#Value!」のエラーになるのですが、対策はありますでしょうか? <解決したい内容> ■シート1 (C列) =DATE(YEAR(D2),MONTH(D2),1)、=DATE(YEAR(D3),MONTH(D3),1)、・・・・ (D列) 2010/6/6、2010/6/20、・・・・ ■シート2 下記の式だと「#Value!」になるため、解決したい。 =IF(SUMPRODUCT(((シート1!$C$2:$C$10-DAY(シート1!$C$2:$C$10)+1)=$A$1)*(シート1!$A$2:$A$10="●"))<ROW(シート1!C2)-1,"",INDEX(シート1!B$2:B$10,SMALL(IF(((シート1!$C$2:$C$10-DAY(シート1!$C$2:$C$10)+1)=$A$1)*(シート1!$A$2:$A$10="●"),ROW(シート1!$C$2:$C$10)-1),ROW(シート1!C2)-1))) ※シート1の1行目にタイトルを入れたため、ご記載頂いた式を少し変えています。