- ベストアンサー
関数でやれることの限界はどのあたりですか?
最終目的は表中から、どの複数条件のときにどんな結果が多いのか、ベスト10くらいを抽出することです。 そこへ行くために、どの組合せパターンの時にどんな結果となっていてどの程度の割合なのか、を調べに取り掛かったところです。 例えば、A列が「あ」、AA列が「い」、BA列が「う」のときC列が「え」となるケースは・・・。次にC列が「お」の場合、次に「か」の場合。 これが終わると、BA列が「え」でほかは同じ場合は・・・。 こんな感じで現在進行しているのですが、3条件の場合、4条件・・・とやっていくと元データに匹敵するほどの検索表が出来上がることになります。 ブロック別に同質のブックが10あり各ブックにこの作業を適用するとなると、その間に新たなデータも加わり、いつになったら追いつけるのか疑問になってきました。 以前、もっと単純なものをつくり、他ブックへコピーをしてみたのですが、参照シートの変更(項目列は同様にしてあります)をすべての式に加えなければならず、その段階で訂正がスムーズに行かないことが多かったため、感心できる方法ではないかな、と思っております。 よく、過去100年くらいのデータでみると、これら3条件が揃った場合は○○が30%で、こういう場合は20%で・・・というのがありますが、これは特別なソフトでも使って抽出しているのでしようか。(あれば即解決なのですが) 一度に結果が得られるような関数はないでしょうが、今やっていることよりも、効率がよくなる方法(関数)はあるでしょうか。 COUNTIFSで条件ごとに合致するものをカウントし、出来上がったらそれからベスト10を出そうと思っているのですが、各条件の組合せは何万?になるか想像もつかないので、どうしたら良いものか思案中です。 表は、項目列(約60)ごとのデータ種類は10から最多の列では50種類あり、データ数(行)はブックにより4000から5000程度です。 答え(具代的な式)を示していただいても、内容が把握できないと応用ができないため、何かを組み合わせてこういう考えでやってみれば、の策をお願いできればと思います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えばで方法論的なことを述べます。参考になれば幸いです。 例えばA,B.C.D列の2行目からデータがあるとします。 そこで作業列としてE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","","A"&A2&"/"&"B"&B2&"/"&"C"&C2&"/"&"D"&D2) この式でA,B、C,Dなどを入れているのは使用する列が判りやすいようにしているためです。 F2セルにはA列、F3セルにはB列、F4セルにはC列、F5セルにはD列と文字列を入力します。 G列には検索するときに固定して使うデータを入力します。例えばA列ではアを、B列を変化させるデータとする場合にはG3セルを空白に、C列に固定したデータを使いますのでG4セルには1を、D列も固定したデータを使いますのでカを入力します。 B列のデータは最初は「あ」で検索するとしてH2セルに「あ」を、H3セルには「い」などと入力します。 最後にA,C,Dの列では固定した値で、B列の値だけが変化するときの、それらのデータの出現率を求めるためにI2セルには次に式を入力し下方にオートフィルドラッグします。 =IF(H2="","",COUNTIF($E:$E,IF($G$2<>"","A"&$G$2,"A"&$H2)&IF($G$3<>"","/B"&$G$3,"/B"&$H2)&IF($G$4<>"","/C"&$G$4,"/C"&$H2)&IF($G$5<>"","/D"&$G$5,"/D"&$H2))/COUNTIF(E:E,"?*")) 最後に表示を%表示にします。 以上を参考に挑戦してみてください。
その他の回答 (2)
- end-u
- ベストアンサー率79% (496/625)
>どの組合せパターンの時にどんな結果となっていてどの程度の割合なのか... 関数に拘りがなければピボットテーブルを活用してみてはいかがでしょう。 http://www11.plala.or.jp/koma_Excel/pivot_menu.html http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-piv.html
お礼
決して関数にこだわっているわけではないのですが、以前やってみようとして、これは大変かも?と感じ途中でやめてしまった経緯があります。たぶん内容がわかっていないからだと思うので、並行して取り組んでみたいと思います。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
ベスト10を調べるのでしたら、さらにJ2セルに次の式を入力して下方にオートフィルドラッグします。 =IF(I2="","",IF(RANK(I2,I:I,0)<=10,RANK(I2,I:I,0),"")) 最も出現率の高いデータが1となります。
お礼
ありがどうございました。
お礼
いつもお世話さまです。 今やっていることより複雑な思考になりそうですが、大幅に効率アップができそうですのでジックリ取り組んでみます。 ありがとうございました。