182:セルの中にある指定した文字数を数える

180:エクセル稀なケース

遺伝のことを研究していたら、セルの中にある文字数をカウントする機会がありましたが、エクセルでは直接、その関数が用意されていないようなので、ご紹介いたします。

例えば以下の場合

男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行をいつも計算できるようにしてあります。

この比率から、遺伝的に結婚してよい悪いを導き出そうというわけです。

コメント

タイトルとURLをコピーしました