ども。
非防水のスマホをお風呂に持ち込む担当ちゅんです。
さて、先日書いた「EXCELでByte計算」ですが、ありがたいことに匿名でコメントを頂きました。それによると「えっ!これって、単位系変換するときの一般的手法でしょう」ということで、もしかしたら知らなかったのは私だけなのでしょうか?
そして、またしても難題にぶつかりました。前回の関数で、ByteをMBやGBに変換することはできたのですが、今度は逆に「3GB」とか「2.45MB」とかをByteに変換できないかと。単位は文字として入力してしまうと数値ではなくなるので、最後に足し算することができなくなります。これを解決したいと、またしても上司92氏にリクエストしました。
今回の場合は、入力された単位をもとにIF関数を組みます。
=IF(RIGHT(A1,2)="GB",LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1)*(1024^3),IF(RIGHT(A1,2)="MB",LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1)*(1024^2),IF(RIGHT(A1,2)="KB",LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1)*(1024),LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1))))
関数の意味としては「もし、A1セルに入力された文字の右から2文字までに『GB』という言葉が含まれる場合、A1セルに入力された数字だけに対して1024の3乗を掛けたものを値として返しなさい。そうでない場合は・・・」という、なんとも複雑な関数です。
ここでのポイントは「A1セルに入力された数字だけに対して」という点です。前述のとおり、私は「数値でないものは、最後に足し算できない」と思っていたのですが、
LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1)
正直よくわかっていませんが、この魔法のような関数を用いることによって、数字だけを取り出すことができるのですね。あとは、GBだったら1024の3乗を、MBだったら2乗を、KBだったら1024をそれぞれ掛け算してやれば、Byteに戻るというカラクリです。
ふう。文系な人間には、正直この記事を書くことで精一杯な状況ですが、前回の関数との合わせ技で想定よりも数倍早い時間で仕事を片付けることができました。EXCELは本当に奥が深いですね。
前回の関数は「使用量」に、今回の関数は「クォーター」に使いました。
(投稿者:ちゅん)