- ベストアンサー
エクセル2003で1つのシートのデータを別の2つのシートに振分ける方法
- エクセル2003で1つのシートのデータを、2つのシートに振り分けるための関数はありますか?
- 指定した列のデータを条件に基づいて別のシートに振り分ける方法を教えてください。
- 同じデータを何度も入力する手間を省くために、エクセル2003で効率的なデータの振り分け方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただきます。 Sheet1のA列を作業用の列とさせていただいています。 Sheet1のA2セルに =IF(B2="","",IF(D2="男性",1,2)) として、オートフィルで下へコピーします (Sheet2・3の数式をそれぞれ1000行まで対応できるようにしていますので、1000行くらいまでコピーしても構いません) これで男性には1 女性には2 が表示されるはずです。 (ハーフの方は判別できません) Sheet2(男性)のA2セルに =IF(COUNTIF(Sheet1!$A$2:$A$1000,1)>=ROW(A1),INDEX(Sheet1!$E$2:$E$1000,SMALL(IF(Sheet1!$A$2:$A$1000=1,ROW($A$1:$A$999)),ROW(A1))),"") これは配列数式になってしまいますので もしこの画面からコピー&ペーストされる場合は 単に貼り付けただけではエラーになると思いますので セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので、 Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 そして、B2セルに =IF($A2="","",INDEX(Sheet1!$B$2:$C$1000,SMALL(IF(Sheet1!$A$2:$A$1000=1,ROW($A$1:$A$999)),ROW(A1)),COLUMN(A1))) (これも配列数式になってしまいます。) B2セルのフィルハンドルでC2セルまでコピーします。 最後にA2~C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 女性も同様の操作ですが、 数式が少し違いますので Sheet2の数式も書いておきます。 Sheet3のA2セルに(配列数式です) =IF(COUNTIF(Sheet1!$A$2:$A$1000,2)>=ROW(A1),INDEX(Sheet1!$E$2:$E$1000,SMALL(IF(Sheet1!$A$2:$A$1000=2,ROW($A$1:$A$999)),ROW(A1))),"") B2セルに(配列数式です) =IF($A2="","",INDEX(Sheet1!$B$2:$C$1000,SMALL(IF(Sheet1!$A$2:$A$1000=2,ROW($A$1:$A$999)),ROW(A1)),COLUMN(A1))) としてC2セルまでコピー 最後にA2~C2セルを範囲指定し、C2セルのフィルハンドルで下へコピー 尚、作業用の列をもう少し増やせば配列数式にしなくても良いような感じがします。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。 どうも長々と失礼しました。m(__)m
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
配列数式といった方法でなくとも次のようにすればよいでしょう。 シート1のE列を作業列として次の式を下方にオートフィルドラッグします。 =IF(A2="","",IF(C2="男性","1/"&COUNTIF(C$2:C2,"男性"),"2/"&COUNTIF($C2:C2,"女性"))) この式は今後データが追加されると思われる行までドラッグすればよいでしょう。 この式では男性の場合には1で男性が入力されている最初の行では1/1というように表示されます。女性の場合には2で最初の行では2/1のように表示されます。 シート2では1行目に項目を希望する順序で列に並べて入力します。 A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(A$1="",COUNTIF(Sheet1!$E:$E,"1/"&ROW(A1))=0),"",INDEX(Sheet1!$A:$D,MATCH("1/"&ROW(A1),Sheet1!$E:$E,0),MATCH(A$1,Sheet1!$1:$1,0))) シート3でもシート2と同様に1行目に項目名を入力します。 A2セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(A$1="",COUNTIF(Sheet1!$E:$E,"2/"&ROW(A1))=0),"",INDEX(Sheet1!$A:$D,MATCH("2/"&ROW(A1),Sheet1!$E:$E,0),MATCH(A$1,Sheet1!$1:$1,0)))
お礼
KURUMITO さん ありがとうございました。出来ました!一部ですが… 項目が多く微妙に違うので困っています。 報告する部署が違うのんですよねー…何とも… もうちょっと頑張ってみます。 でも別のところでも使えそうでうすね。 ありがとうございました。
- bin-chan
- ベストアンサー率33% (1403/4213)
振り分けは一度切りですか? 性別にオートフィルターを付けて行を絞り込むではだめですか? 男性・女性に分ける前に列の順序入れ替えした方が楽とは思いますが。
お礼
早速、有り難うございます。いやーびっくりしました。 実際仕事で使っているんですが、元々seet1とseet2・3のデータの内容が違うんですよ。ちょっと分かりづらかったですね。でも、こんなに早く回答してもらうとは思っていませんでした。有り難うございました。
お礼
有り難うございます。びっくりしました。私が質問を入力するより、この長文、またこの数式でこんなに早いとは…恐れ入ります。「配列数式」ですかぁ。日頃エクセルを使っている者として、恥ずかしいですが聞いたこと無かったです。実際に仕事に使っているのが、もともと違うファイルで、seet1とseet2・3は一部だけが同じデータで、しかし重複している所もあるという何とも面倒くさいものなので、助かります。 作業用の列は確か、AU列くらいまではあったような気がします。月曜日に仕事場で試してみます。有り難うございました。「配列数式」についても、それまでに勉強しないといけないですね(^_^;)