Excel求助大神六宮格數獨如何用VBA解決

2021-03-19 18:27:48 字數 2306 閱讀 9916

1樓:老回家吃飯

曾經沒事的時候編過,但自己邏輯不行,不能自動全解。

只能把簡單沒有複雜推斷數填上,遇到兩種及以上可能的,就只能把所有可能填上。

用vba解數獨程式

2樓:匿名使用者

為方便起見,建名稱「數獨盤」和「可選數」,分別代表b2:j10和b12:j20兩個區域。用如下vba程式清空初盤:sub 清空初盤()

dim rag as range

for each rag in range("數獨盤")

rag.clearcontents

rag.font.bold = false

next

end sub

用如下vba程式把初盤「粗體化」:sub 粗體初盤()

dim rag as range

for each rag in range("數獨盤")

if rag.value = "" then

rag.font.bold = false

else

rag.font.bold = true

end if

next

end sub為建「可選數」表,先用如下程式語句清空「可選數」區域:range("可選數").clearcontents '清空可選數

以下程式段,作為解數獨的初始化工作的一部分完成如下工作:在「數獨盤」區域僅保留粗體的已知數作為初盤。在「可選數」區域的與「數獨盤」已知數對應的單元格,抄錄已知數,其他單元格取「123456789」。

程式如下:for each rag in range("可選數")

if rag.offset(-10, 0).font.bold then '「數獨盤」中用粗體字表示已知數

rag.value = rag.offset(-10, 0).value '把「數獨盤」中的已知數抄錄到對應的「可選數」區域中的相應位置

else

rag.value = "123456789" '「數獨盤」中的未知數在「可選數」區域中的相應位置設定成「123456789」

rag.offset(-10, 0).value = "" '「數獨盤」中的未知數用空格表示

end if

next

接下來的初始化工作就是建立對應於初盤的可選數表。這部分工作和以後要講的用「排除法」解數獨題有相似之處。這些相似的工作用「處理確定數」子程式來完成。

現在在「可選數」區域,尋找長度為1的數作為確定數,把該單元格置為空格,記下該單元格的行號和列號,由「處理確定數」子程式作相應處理。程式如下:for each rag in range("可選數")

if len(rag.value) = 1 then

qds = rag.value '已知數作為「確定數」

rag.value = "" '對應於「確定數」在「可選數」區域設為空格,表示無別的數可選

i% = rag.row - range("可選數").row + 1 '計算「確定數」在「可選數」區域的行號

j% = rag.column - range("可選數").column + 1 '計算「確定數」在「可選數」區域的列號

call 處理確定數(i%, j%, qds)

end if

next待續

六宮格數獨,高手來~

3樓:匿名使用者

4 1 5 2 3 6

3 6 2 5 1 4

2 5 1 6 4 3

6 4 3 1 2 5

5 2 4 3 6 1

1 3 6 4 5 2

4樓:四眼田雞就是我

415 236

362 514

653 142

541 623

124 365

236 451

不知道有沒有錯,請高手指正。

求excel 5*5數獨暴力拆解的vba**

5樓:宇欽文景

可能我沒有描述清楚噢,**1,**2是已經存在excel的頁面中的,而不是資料夾下的。

6樓:仙劍4之處

暴力拆解意思是全部試一遍,直到通過嗎?

excel請高手看看vba數獨不能通編譯如何處理

7樓:萬年金剛鑽

哈哈,好東西,,我這邊執行木有任何問題誒!

win7,office2010vl版32位,樓主的報錯資訊是什麼?截圖看看,最好是能把出錯的那句**一起截出來

九宮格數獨技巧

在左邊第一個九宮格一宮裡,哪格可以放數字1呀?先看到第一行和第二行裡已經有了數字1,所以很明顯了,除了格子 3,1 之外,一宮上面兩行格子已經不能放1了。範例二 再看看這個重要範例,想想左上角第一個九宮格里,哪格可以放呀?先看看第二行,再看看第二列,經過分析後可知1要放在格子 3,3 位置上。範例三...

excel設定當單元格數字大於另單元格數值時單元格提示超標

在第三個單元格輸入 if j1 e1,超標 向下填充公式 k2輸入公式向下複製 if j2 e2,超標 在excel 中怎樣設定一個單元格的數值大於另一個單元格的數值時提示錯誤資訊 假設需要設定b列不能大於a列 選中b列 資料 有效性 允許內選擇 自定義 公式輸入 b1 a1 這樣在b列輸入,大於a...

求助,關於excel轉換單元格內容變節長度

位元組是相對於計算機處理資料的字元,一般單個數字或英文字母為1位元組 一個漢字佔用2個位元組,所以在漢字輸入法中一般就有全形與半形的輸入,若在全形狀態下輸入英文字母,顯示出來的字母也是按漢字佔用位元組的 即2個位元組 你所說的單元格位元組,就是在excel中該列的位元組長規定為16,也就說只能輸入佔...