- ベストアンサー
エクセル2003の、抽出について
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.1・2です! たびたびごめんなさい。 二度とも的外れでしたね。どうもすみません。 もう一度画像をアップさせてもらいます。 作業用の列をA列として使わせてもらっています。 同一Sheetにしていますので数式自体はそんなに難しくないと思います。 まず、作業列のA2セルに =IF(COUNTA($B$2:$B$50)>=ROW(A1),INDEX($C$2:$AG$50,MATCH(B2,$B$2:$B$50,0),MATCH($AI$2,$C$1:$AG$1,0)),"") としてオートフィルで下へコピー これは人数が今後49人(タイトル行があるため)まで増えても対応できるようにしています。 そして、AI2セルに日にちの数値を入力すればそれぞれの列に名前を表示させるようにしています。 AJ2セルに =IF($AI$2="","",IF($A2=AJ$1,$B2,"")) として、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 こんなんで良かったのですかね? 以上、参考になれば幸いですが、 またまた・・・他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (6)
- tom04
- ベストアンサー率49% (2537/5117)
No.1・2・6です! 前回の作業用の列の数式をもう少し簡単にしてみました。 A2セルを =IF(COUNTA($B$2:$B$50)>=ROW(A1),INDEX($C$2:$AG$50,ROW(A1),MATCH($AI$2,$C$1:$AG$1,0)),"") としてみてください。 他の数式はそのままでOKかと思います。 どうも何度もごめんなさいね。m(__)m
- mt2008
- ベストアンサー率52% (885/1701)
- 135ok
- ベストアンサー率34% (26/75)
- 135ok
- ベストアンサー率34% (26/75)
これでいかがでしょうか。 H2 =IF(ISNUMBER(FIND(H$1,$D2)),$A2,"") 表示させたい範囲にコピー
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! 今度は作業用の列を使って、表を作ってみました。 Sheet2のA2セルに日付を入力すると その日の氏名と勤務形態を表示させる方法です。 Sheet1の日付の列は31日(AH列になるはずです) Sheet1の作業列A2セルに =IF(Sheet2!$A$2="","",IF(INDEX($D$2:$AH$100,ROW(A1),MATCH(Sheet2!$A$2,Sheet1!$D$1:$AH$1,0))="","",INDEX($D$2:$AH$100,ROW(A1),MATCH(Sheet2!$A$2,$D$1:$AH$1,0)))) B2セルに =IF(A2<>"",ROW(A1),"") という数式を入れ、A2・B2セルを範囲指定し、B2セルのフィルハンドルで下へコピーします。 (Sheet2の数式が100行まで対応できるようにしていますので、100行目くらいまでコピーしても構いません) 次にSheet2のB2セルに =IF($A$2="","",IF(COUNT(Sheet1!$B$2:$B$100)>=ROW(A1),INDEX(Sheet1!$C$2:$C$100,SMALL(Sheet1!$B$2:$B$100,ROW(A1))),"")) C2セルに =IF(OR($A$2="",B2=""),"",INDEX(Sheet1!$A$2:$A$100,SMALL(Sheet1!$B$2:$B$100,ROW(A1)))) という数式を入れ、これもB2・C2を範囲指定し、C2セルのフィルハンドルで 下へコピーすると画像のような感じになります。 今回は配列数式はありませんので、そのままコピー&ペーストしても エラーにならないと思います。 これで希望に近い形になったでしょうか? もしこれも的外れならごめんなさいね。m(__)m
補足
たびたびのご丁寧なご回答、本当にありがとうございます。 感謝の気持ちでいっぱいですorz 画像をアップしました。このようにはできませんでしょうか? 3日の列を選択したら、右側の表に名前が、画像のように表示され 4日の列を選択すれば、4日の名前が表示されるといったふうにですが・・・ 度重なる質問に頭が下がりますが、何卒、よろしくお願い申しあげます。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! ↓の画像のような感じで良いのですかね? 一応そういうことだと解釈して回答します。 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただくと、 D2セルに配列数式を入れています。 もしこの画面からコピー&ペーストする場合は 単に貼り付けただけではエラーになると思いますので、 セルに貼り付けた後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので Shift+Ctrl+Enterキーで確定します。 D2セルに =IF(COUNTIF($B$2:$B$1000,D$1)>=ROW(A1),INDEX($A$2:$A$1000,SMALL(IF($B$2:$B$1000=D$1,ROW($A$1:$A$999)),ROW(A1))),"") という数式を入れ、 Shift+Ctrl+Enter で確定! そしてこの数式をF2セルまでオートフィルでコピーします 最後にD2~F2セルを範囲指定し、F2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 尚、数式は1000行まで対応できるようにしていますが、 データ量によってアレンジしてみてください。 他に作業用の列を使えば配列数式にせずにできると思います。 (PCの負担のことを考えると配列数式でないほうが良いかもしれません) 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
お礼
申し訳ありません、もう1つ補足なのですが、抽出した名前を、上から順番に表示せずに、名前のある行と同じ行で、表示列にて抽出、表示できませんでしょうか? 申し訳ございませんが、よろしくお願い申し上げます。
補足
丁寧なご回答に感謝いたします。うまくいきました。 おんぶにだっこで恐縮なのですが、 画像にあります「B列」のみでなく、 列(日付)を選択(1行目に、1ヶ月の日付が入っています)して、 選択した列のものを、というように、柔軟に抽出できませんでしょうか? 申し訳ありませんが、ご教授いただけましたら幸いです。
お礼
うまくいきました!理想のものができました! 何度も根気よくお付き合いいただきましてありがとうございましたm(_ _)m