SUDOKU Excel - Planilha de Geração de SUDOKU
Autor

Neste artigo você verá uma planilha SUDOKU em Excel. A planilha faz a geração de SUDOKU automática.
No exemplo nós iremos utilizar a versão Microsoft 365 do Excel e para a geração dos dados usamos a função LAMBDA para gerar recursividade como iremos explicar abaixo.
Como funciona o SUDOKU?
SUDOKU é um jogo de raciocínio e lógica. O objetivo do jogo é completar todos os quadrados utilizando números de 1 a 9. Para completá-los basta seguir a seguinte regra: Não podem haver números repetidos nas linhas horizontais e verticais, assim como nos quadrados delimitados por linhas em negrito.
Para isso é necessário já deixar alguns números preenchidos para que seja necessário então encaixar os números conforme a cartela.

Veja conforme acima, aonde temos os números já previamente cadastrados e é esta geração dos números para o jogo que a planilha em Excel realiza.
Função SUDOKU Excel
Para realizar esta tarefa nós usamos a seguinte função:
=LAMBDA(strVertical;strHorizontal;strQuadrante;
LET(numAleatorio;ALEATÓRIOENTRE(1;9);
numLoc1;SEERRO(LOCALIZAR(numAleatorio;strVertical;1);0);
numLoc2;SEERRO(LOCALIZAR(numAleatorio;strHorizontal;1);0);
numLoc3;SEERRO(LOCALIZAR(numAleatorio;strQuadrante;1);0);
SE(numLoc1+numLoc2+numLoc3>0;0;numAleatorio)))
A função Lambda do Excel permite que criemos funções próprias do Excel, no exemplo acima.
E na função LET, nós temos a criação de variáveis que são utilizadas no sistema.
Na variável numLoc1, estamos verificando se conseguimos encontrar usando Localizar se o número se encontra na string.
No vídeo explicamos se é localizado o número na posição, vertical, horizontal ou no quadrante.
Se não encontrar então o número aleatório que foi gerado é retornado.
Com isso então criamos a função SUDO no gerenciador de nomes.
Então criamos uma nova função chamada SUDOKU também no gerenciador de nomes:
=LAMBDA(strVertical;strHorizontal;strQuadrante;
LET(numSUDOKU;SUDO(strVertical;strHorizontal;strQuadrante);
SE(numSUDOKU = 0; SUDOKU(strVertical;strHorizontal;strQuadrante);numSUDOKU)))
Na função usamos a recursividade, aonde temos que se o valor retornado for 0, tente de novo, até que o retorno seja maior que 0.
Isso gera o número para cada posição do SUDOKU.
No entanto é necessário alterar seu Excel para que ele possa realizar cálculos com referência circular, cálculos iterativos.
Habilitar Cálculos Iterativos no Excel
Para que a função funcione é necessário que seja liberado o cálculo iterativo, pois senão ao usar a função ele irá exibir a mensagem de erro de Referências circulares.

Isso ocorre porque uma célula usa o resultado da outra para fazer os seus cálculos.
Para resolver, clique em Arquivo->Opções-Fórmulas Habilitar cálculo iterativo e dê ok.

Modelo do SUDOKU
Para a criação do SUDOKU nós criamos então um modelo no Excel de linhas e colunas de 9 linhas por 9 colunas conforme abaixo:

Com isso aplicamos então a função SUDOKU passando então a vertical, horizontal e o quadrante para verificar se os números não se repetem.

Com isso é necessário passar como variáveis usando UNIRTEXTO, a linha horizontal, vertical e também o quadrante, nos devidos parâmetros da função.
Com isso eles não serão mais repetidos.
Este cálculo é muito pesado e o cálculo de 81 valores seguindo estas condições é quase impossível pro Excel, por isso não mandamos ele calcular todos os números, mas alguns.
Assim, criamos uma coluna com todas as fórmulas configuradas, e uma outra planilha aonde copiamos fórmulas de posições aleatórias e colamos nesta outra para gerar o jogo, dado que não precisamos de todos os valores.
Gerar SUDOKU VBA
Para gerar o SUDOKU nós inserimos um módulo no Excel VBA, pressionando ALT+F11 e clicando em Inserir->Módulo.
No módulo inserido colocamos o seguinte código:
Public Sub lsSUDOKU()
Dim llinha As Integer
Dim lcoluna As Integer
Dim lcolect As Collection
Dim lQtde As Integer
SUDOKU.Range("B2:J10").ClearContents
With SUDOKU.Range("B2:J10").Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Set lcolect = New Collection
For i = 1 To SUDOKU.Range("numAleat").Value
lQtde = lcolect.Count
On Error Resume Next
Do
llinha = Int((9 * Rnd) + 2)
lcoluna = Int((9 * Rnd) + 2)
lcolect.Add llinha & lcoluna, llinha & lcoluna
Loop Until lcolect.Count > lQtde
SUDOKU.Cells(llinha, lcoluna).Value = gabarito.Cells(llinha, lcoluna).Formula
With SUDOKU.Cells(llinha, lcoluna).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Next i
ActiveSheet.Calculate
SUDOKU.Range("B2:J10").Copy
SUDOKU.Range("B2:J10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SUDOKU.Range("A1").Select
Sheets("SUDOKU").Copy
ActiveSheet.Shapes.Range(Array("TextBox 2")).Delete
Range("L2:M2").ClearContents
ActiveSheet.Shapes.Range(Array("Picture 3")).Delete
Range("B2").Select
'MsgBox "SUDOKU Gerado!" + vbCrLf + "Boa diversão!"
End Sub
No código acima, nós fazemos os seguintes processos automaticamente:
- Limpar os valores da cartela
- Limpar as cores
- Sortear posições aleatórias do gabarito e colar
- Pintar as posições sorteadas
- Copiar os resultados das fórmulas como valores
- Exportar a planilha para poder jogar na planilha ou salvar
Tudo isso é feito no código acima aonde temos então uma automação que complementa a geração do jogo.

Download
Clique no botão abaixo para realizar o download da planilha de SUDOKU, com exemplo de dados:
Principais recursos
Confira o que este material oferece para você.
Perguntas frequentes
O material é realmente gratuito?
Sim. O acesso é gratuito e não exige cadastro.
Preciso ter o Excel instalado?
Recomendamos o Excel 2013 ou superior para todos os recursos.
Como faço para receber atualizações?
As atualizações são automáticas dentro da própria planilha.
Funciona no Excel do Mac?
Sim, funciona no Excel para Windows e para Mac.
Funciona no celular?
É possível visualizar no app do Excel; a edição completa é no computador.
Planilhas relacionadas
Planilha de Fluxo de Caixa
R$ 89,90
Controle de Estoque
R$ 69,90
Planilha Financeira Empresarial
R$ 79,90
Dashboard Financeiro no Excel
R$ 49,90





