- ベストアンサー
excel subproduct 関数での不具合
生物実験で、シグナルをカウントし、その個数をDCOUNT、SUBPRODUCTを使って、分類していま。具体的には、一つの細胞に緑のシグナルが10個、赤のシグナルが20個、青のシグナルが30個、次の細胞には緑が15個、赤が20個、青が2個と細胞を順次数えていきます。 A B C D E 1細胞 緑 赤 青 個数 2 10 20 30 3 15 20 2 4 そこで、緑が5個以上、赤が10個以上、青が20個以上の細胞の個数は、SUBPRODUCT(($A$2:$AB$1000>=5)*($B$2:$B$1000>=10)*($C$2:$C$1000>=20))として求めてきました。 今回、シグナルのパターンで1個ずつバラバラにあるのと、シグナルが5個、10個と塊である分を生物学的に分けなければならなくなりました。 具体的には、20個のシグナルがある場合、それが一つずつバラバラである場合は、20とそのまま、5個の塊が1つ、10個の塊が1つ、そして、バラバラに5個がある場合は、5c+10c+5のように記載します。 塊がある分は、別途、集計するのですが、今までと同じように表で5c+10c+5と記載した分も、cを除いて、5+10+5=20として、緑が5個以上、赤が10個以上、青が20個以上の細胞の個数を求めたいのですが、F2=SUBSTITUTE(A2、"c"、"")として、あらたに変換しても、数式ではないので、5+10+5と文字として標識されるだけだし、これをVALUEで、式に戻るかと考え、VALUE(SUBSTITUTE(A2、"c"、""))としてもエラーとなります。 何か良い方法は無いのでしょうか? と前回質問し 標準モジュールに Function eval(s As String) eval = Evaluate(s) End Function を用意。セルに =eval(SUBSTITUTE(A2,"c","")) 回答を頂きました。 そして、excelでtool、macro、VBEとして、insertからmoduleとして、 Function eval(s As String) eval = Evaluate(s) End Function を入力しました。 そして、D2=eval(SUBSTITUTE(A2,"c",""))と入力すると上手く行かず、PERSONAL.XLS!eval(SUBSTITUTE(A2,"c",""))としたら、うまく行きました(どこかで、入力手順がおかしかったのでしょうか...)。さらに、空白セルに###とでるのを嫌い、=IF(A2="","",PERSONAL.XLS!eval(SUBSTITUTE(A2,"c","")))としました。これをD、E、F列に1から1000までコピー、ペーストしました。A、B、C列をそれぞれ、D、E、F列に返還して計算しました。これを用いて、Dが2個以上、F、Fが4個以上を =SUBPRODUCT(($D$2:$D$1000>=2)*($E$2:$E$1000>=4)*$F$2:$F$1000>=4))で求めると、個数が異様に多くなります。 おそらく、D、E、F列に上記のIF関数を用いてることが影響しているのだと思いますが、何かよい回避方法は無いでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
- KURUMITO
- ベストアンサー率42% (1835/4283)
- tetumaru_1
- ベストアンサー率0% (0/6)
お礼
要点がまとまっていず、申し訳ありませんでした。 ご返答ありがとうございました。 うまく行きました。