魔方這個(gè)看似很難的兒童益智玩具嘁傀,在小編認(rèn)為對(duì)IT來(lái)說(shuō)應(yīng)該是一個(gè)很簡(jiǎn)單的公式問(wèn)題兴蒸。因?yàn)橐粋€(gè)excel就能輕松搞定。
魔方陣是一個(gè)非常有趣的數(shù)學(xué)問(wèn)題细办,是指由自然數(shù)1~N2(次方)(N為奇數(shù))構(gòu)成的方陣橙凳,其各行、各列以及對(duì)角線元素之和均相等(如下圖所示)笑撞。魔方陣的數(shù)學(xué)排列算法很復(fù)雜岛啸,若不懂得排列規(guī)律,很難排出魔方陣娃殖!本文不僅介紹了一種簡(jiǎn)單的排列方法值戳,而且還巧用Excel中的單元格和宏代碼的結(jié)合將其排列過(guò)程動(dòng)態(tài)地呈顯出來(lái)(速度由用戶自己控制),呈現(xiàn)出來(lái)之后還可借助Excel中的求和函數(shù)對(duì)各行炉爆、各列進(jìn)行求和驗(yàn)證堕虹。更不可思議的是宏代碼只有25行卧晓,簡(jiǎn)練程度勝過(guò)任何編程工具!
一赴捞、算法簡(jiǎn)介
先將所有單元格清空逼裆,讀取階數(shù)N之后把1放入第一行的最中間一列,此后依次尋找2到N2(次方)這些數(shù)放入的位置赦政,基本算法是:下一個(gè)數(shù)放在前一個(gè)數(shù)的上一行的下一列(第一行的上一行是最后一行胜宇,最后一列的下一列是第一列);如果此位置已被占用(單元格的內(nèi)容非空)恢着,則將它放在前一個(gè)數(shù)的下面桐愉。
注:任一單元格(H行L列)的地址可表示為Chr(L+64) & H,其中Chr是取字符的函數(shù)掰派。
二从诲、用Excel實(shí)現(xiàn)的方法
1.界面設(shè)計(jì)
啟動(dòng)Excel,通過(guò)“視圖”菜單打開(kāi)“窗體”工具欄靡羡,在第一行添加一個(gè)按鈕控件系洛,并在彈出的對(duì)話框中單擊“新建”按鈕,進(jìn)入宏代碼編輯窗口略步。
2.錄制宏在宏代碼編輯窗口中輸入以下代碼:
3描扯、運(yùn)行
關(guān)閉宏代碼窗口,
進(jìn)入Excel后先單擊任一單元格或按Esc鍵
以取消按鈕的編輯狀態(tài)趟薄;然后單擊前面添加的按鈕就可運(yùn)行:在彈出的對(duì)話框中先輸入要顯示的魔方陣的階數(shù)绽诚,然后輸入顯示整個(gè)魔方陣所用的時(shí)間;此后就可看到魔方陣中元素的動(dòng)態(tài)排列過(guò)程杭煎。感興趣的讀者可借助Excel提供的函數(shù)進(jìn)行求和驗(yàn)證憔购。
4、說(shuō)明
如果將宏代碼及界面保存成Excel文件岔帽,下次打開(kāi)時(shí)將提示:該文件中包含宏,宏可能會(huì)攜帶病毒
…等信息导绷;自己編寫(xiě)的這段宏是安全的犀勒,選擇“啟用宏”即可。
本代碼在Excel2000中運(yùn)行通過(guò)妥曲。