遺伝のことを研究していたら、セルの中にある文字数をカウントする機会がありましたが、エクセルでは直接、その関数が用意されていないようなので、ご紹介いたします。
例えば以下の場合
男ABIJABCD ABCDCDEF GHIJABIJ ABIJABCD | 女ABIJABCD ABCDCDEF GHIJABIJ ABIJABCD | 男ABCDCDEF CDEFEFGH ABIJABCD ABCDCDEF | 女ABCDCDEF CDEFEFGH ABIJABCD ABCDCDEF | 男ABCDCDEF CDEFEFGH CDEFEFGH EFGHGHIJ | 女ABCDCDEF CDEFEFGH CDEFEFGH EFGHGHIJ |
上記は、遺伝子情報を第5世代まで、計算したものです。DNAのパターンが2^5(2の5乗)=32個あることがわかりますが、この中で、複数の文字が一つのセルの中に出現してくるため、その文字数を数えたい。という話です。
セル内の文字数をLEN関数で数えましょう
セル内の文字は、LEN(セル)関数でカウントできます。
C18の文字を数えると、33文字しかないのに、なんで、36文字なんだろうと思いましたか?
わたしも思いました。それで、よく考えてみると、ALT+Enterが見えないけれど、入っていることを思い出しました。ALT+Enterは、3つ入っているので、たしかに36で良いです。
例えば、Aを数えるのに、Aを消す
計算式で、指定した文字を消す別の文字列に置換する関数があります。それが、substitute()関数です。今回は、置換の機能を使って、””に置換してみましょう。””に置換ということは、消すということと同じです。
例えばC18のセルの中からA文字を消してみましょう。
=+SUBSTITUTE(C18,”A”,””)
という式を、今回は、C22に立てました。
C22のセルにAが無くなっていることが分かると思います。
もう一度、LEN関数で文字数を数える
この二つのLEN関数から、それぞれの長さの違いがAの数になっているので、
Aの数量は、計算で6個と出てきました。実際にC18にあるAを赤くしておきましたが、確かに6個あります。
少しだけスマートに
いつもの私は、間違えを後で見つけられるように上記なような式の過程を残しておきますが、今回は、ABCD…と文字が複数あるので、”A”の部分を少し合理化して、式も一つにして、C20セルに以下の式を入力して、コピペして作りました。
=LEN(C$18)-LEN(SUBSTITUTE(C$18,$B20,””))
最終的には、以下のようになりました。
ポイントは、探す文字をB列に入れておいて、”A”としていたものを、$B20と列だけ絶対指定してあるところです。列だけ絶対指定してあることで、他のセルにコピペできるようになります。
言い忘れましたが、C$18と文字列をカウントされるセルも行のみ絶対指定で、下にコピペしても18行をいつも計算できるようにしてあります。
この比率から、遺伝的に結婚してよい悪いを導き出そうというわけです。
コメント