GoogleスプレッドシートやExcelで、入力された数字がゾロ目(すべて同じ数字か。桁数問わず)かどうか判定したいとき(いや多分なさそう。。。)があったら、この記事を参考にしてみてください。
想定としては、カレンダーから日にちがゾロ目の日を抽出するとか、会員番号からゾロ目のIDをピックアップしてイベントを行うとか、そういうことを想定しておりまする。
記事はスプレッドシートベースで説明してますが、Excelでも同様に動くことを確認済みです。
ゾロ目の判定
ゾロ目の定義
ゾロ目の定義をこのようにします。
『条件①:2桁以上(10以上)の数字であること』
『条件②:各位の数字が同一であること』
具体的に言えば『333』とか『55555』とか、そういうのをゾロ目と定義します。
ゾロ目判定条件式はこれだ
=ifs(A2<10,"", mod(A2,rept(1,len(A2)))=0,"◯",true,"")
ゾロ目を判定する条件式はこのようになります。
IFS関数について分からない場合は、こちらの記事をみてくださいまし!
『条件①:2桁以上(10以上)の数字であること』は簡単ですね。不等号を用いて、10より少なかったら違うとすればよいので。
『A2<10,””』の部分がその条件①の部分になります。小さかったらは、『<』で条件式を書きます。ちなみに、以下だったらは、『<=』ですね。併せて覚えておきましょう。
問題は、『条件②:各位の数字が同一であること』のほうです。
数字が同一であることに引きづられると、「SPLIT関数で元の数字を分解してー。全部が同じだったらって判定すればいいのかな。。。」となってしまいますが、これだとうまくいきません。というのも、桁数が何桁か分からないからですね。
発想の転換で、ゾロ目というは、その数字と同じ桁数の『1』だけの数字の倍数であるということに気づけば、ゴールはすぐそこです。
つまり、2桁の数字であれば『11』の倍数がゾロ目。5桁の数字であれば『11111』の倍数がゾロ目。となります。
倍数かどうかの判定式を組む際に役立つのが、MOD関数。余りを教えてくれる関数です。倍数というのは、あまりが0ということなので、それを利用します。
あとは、判定する数字の桁数を『LEN関数』で読み取り、その分だけの『1』を『REPT関数』で作れば、それを『MOD関数』でまとめあげて、条件式が完成となります。
『mod(A2,rept(1,len(A2)))=0,”◯”』この部分ですね。
そして、最後に上記のゾロ目判定に沿わなかったやつすべてということで、『true』を条件式にすることで、条件式にあぶれてきたやつ全部という意味になります。
まとめ
ゾロ目かどうか判定する式は、『IFS関数』『MOD関数』『LEN関数』『REPT関数』を組み合わせることで、作ることができます。
ゾロ目は、判定したい数字と同じ桁数分の『1』の羅列の数字の倍数であることに気づけば、スムーズに組み上げることが出来ます。ゾロ目判定する必要が生じたさいには、ぜひこちらの記事を思い出してくださいませ!