なんでも数式で解いてみる「1,ぐるぐる」 - エクセル関数の使い方
9×9のマスに普通に数字を入れたらつまらないので
中心からぐるぐるっと数字を入れていきます
当然最後は9×9=81です
この数字の羅列をいろんな角度でエクセルの数式で解いてみる
1から右に「1、2、11、28、53・・・」
これを数式で表せないか?
おそらく「1、2、11、28、53・・・」
これだけ見ていてはまったくわかりません
表をよく見るとどっから見ても規則性がな、、あった
よくみるとわかりやすい規則が発見できました
1から斜め下に「1、9、25、49、81」
これは数字に強い人ならすぐピンときます
「1からかはじまる奇数の二乗」です
数式にすると
=1*1 =1
=3*3 =9
=5*5 =25
=7*7 =49
=9*9 =81
です
これが周回ごとに1増えるので
「1、2、11、28、53・・・」は
=1*1+1 =2
=3*3+2 =11
=5*5+3 =28
=7*7+4 =53
=9*9+5 =86
となります
何番目か知るために1,2,3,4・・
もう1行作って1,3,5,7・・
セルA1、B1、C1を1でスタートすると
B1=A1+1
B2=A2+2
B3=A2*A2+A1
これを横にコピーすれば取得できます
100番目は「38908」でした
が・・
3行作れば簡単ですがそれではエクセルを駆使してるとはいえません
1つの式にするには
列をCOLUMN()関数で番号で取得すれば1,2,3,4・・は取得可能です
1,3,5,7・・はCOLUMN()で取得した数値の2倍マイナス1です
したがって
1,2,3,4・・)=COLUMN()
1,3,5,7・・)=COLUMN()*2-1
1つ前のセルを計算するので-1して
=((COLUMN()-1)*2-1)*((COLUMN()-1)*2-1)+(COLUMN()-1)
完了です
試しに上記のテストに1行足して4行目にこの数式を入れます
横へず~とコピーして同じ結果になっています
面白いのは列を取得しているので
4行目のセルはすべて同じ数式になります
列番号から出すので下記のような場合
セルP15は
=((COLUMN()-15)*2-1)*((COLUMN()-15)*2-1)+(COLUMN()-15)
セル数えるのが面倒だったら
=((COLUMN()-COLUMN($O$15))*2-1)*((COLUMN()-COLUMN($O$15))*2-1)+(COLUMN()-COLUMN($O$15))
とセルP15の1つ前のセル015(COLUMN($O$15))を固定しておけば取得できます
ついでに縦も解いてみる
同じ方法でセルO16は
=((ROW()-14)*2-1)*((ROW()-14)*2-1)-(ROW()-15)
になります
列番号(COLUMN()関数)の代わりに(ROW()関数)行番号を取得しています
10年くらい前に友人に
「1、2、11、28、53、86、127、176」
これを数式で出してくれと言われて
私はまさかぐるぐる回ってるなんて
知ってれば上記に気づきすぐわかったのに
「1、2、11、28、53、86、127、176」って
その時私が出した回答が
セルB1が1でスタートでセルC2は
=(INT(SQRT(B1))+2)*(INT(SQRT(B1))+2)+ROUNDUP((INT(SQRT(B1))+2)/2,0)
2が出ませんが11以降は取得できます
当時どうやってこの式にたどり着いたかは覚えてません
ぐるぐるを知らないので手前の数値から出すしかありませんでした
なんとなく二乗の数値に近いかな?とSQRT()関数を使ったようです
しかし何かしら規則のある連続する数式に
切上関数ROUNDUP()や小数点以下切り捨てのINT()関数を使うとはね、、
これでも取得は可能です
順序良く並べた数字は必ず数式で表せます
暇つぶしの頭の体操にはちょうどいいです(エッ!
「1、2、11、28、53・・・」など数字を見たとき
数式で表せないかチャレンジしてみてください