Eu testara as possibilidades das planilhas com meus hobbies antes, mas nada que me fidelizasse por muito tempo. O chess.com permitia salvar, em lote, até 50 das últimas partidas, mas não encontrei algo parecido no lichess, então copiei o PNG de algumas manualmente para meu próximo projeto. De forma nativa, as engines desses sites permitem calcular as chances de vitória à medida que você executa este ou aquele movimento, na hora da análise. Embora útil para treinos de longo prazo, não me parecia muito visual, então decidi aplicar um mapa de calor aos dados, para ter uma espécie de topologia do tabuleiro aplicada, pelo menos, a meus padrões de jogo. Como fiz isso? Configurando a planilha, o que é um passo mais delicado do que o de obter os PNGs em si.
Criei um arquivo com duas planilhas, ‘Heatmap’ e ‘Partidas’. Na primeira, criei linhas de a1 a h8, correspondendo às casas do tabuleiro. Criei também três colunas: L1 (lance 1); L1B (jogada das brancas no lance 1); L1P (jogada das pretas no lance 1), e assim por diante. Guarde esta informação, pois ela gerou uma armadilha que tive que contornar mais à frente.
Na planilha de Partidas, a ideia era ir colando os PNGs sem maiores ajustes, mas estes são gerados com uma linha por informação da partida. Se eu fosse usar uma coluna por partida, portanto, ficaria impraticável a análise. A solução foi usar algo que mais pessoas deveriam conhecer, algo aprendido ainda na escola, quando estudamos matrizes: a transposta.
Quando fui preparando as colunas da planilha Partidas, criei uma para cada informação dos PNG, na ordem em que aparecem: data, nome dos jogadores, ELO de cada um e por aí vai. A última coluna ficou com a notação das jogadas. Como fazer com que essas jogadas dialoguem com a outra planilha, para que esta consiga fazer uma contagem das jogadas em determinada casa? Meu impulso inicial foi o de criar um arquivo .csv no Notepad++, colar as jogadas lá e, com uma série de substituições no texto, limpar os dados. Mas veja só… para quê usar outro programa se o Google planilhas já faz isso? Sim, existe uma fórmula nativa para isso: =substituir().
Em pouco tempo, veio a constatação de que eu teria que fazer isso para cada um dos PNGs. Inviável. Quem tem que trabalhar para mim é a planilha, e não o contrário. Hora de pensar em um plano B. E este veio quando me recordei de como linguagens de programação lidam com strings. Se elas permitem dividir textos, por que o Excel não permitiria? Até o Power BI faz isso de forma mais intuitiva, com um botão. Não temos botão de fácil acesso para isso no Excel, mas a fórmula, felizmente, é simples. À direita da célula contendo a notação das jogadas, use =split(). Na minha planilha, ficou assim: =split(T15; ” “). O segundo argumento da fórmula contém um espaço. Isso informa à fórmula que, toda vez que um espaço for encontrado, o texto deve ser dividido e uma coluna deve ser preenchida com a próxima parte fatiada do dado até outro espaço aparecer, e assim por diante. Sinsalabin, divida as jogadas para mim! 🧙♂️

Chegou a hora de voltar à planilha de Heatmap. Mas antes de fazer isso, quero falar da armadilha mencionada há pouco. Repare os nomes das colunas: L1, L1B, L1P, L2, L2B, L2P… L de lance, B de brancas, P de pretas. Até aí, nada de mais. O problema é que essa não foi a primeira versão dessas colunas. Inicialmente, eu as nomeara L1, LB1, LP1, L2, LB2, LP2… e abaixo trago mais uma imagem, agora da planilha Heatmap, para vocês entenderem melhor o que aconteceu. Na célula B3, a fórmula inicialmente era:
=CONT.SE(Partidas!V:V; A3)
E isso gerou um ruído na contagem. Vamos dizer que, das partidas cadastradas, duas tivessem iniciado com um movimento para a célula B1. Sim, eu sei que isso é impossível no jogo, é só um exemplo. Do jeito que a fórmula estava escrita, o resultado informado seria 3. Motivo? Por a coluna V, na planilha Partidas, estar inicialmente com o nome LB1. O Excel acabou contando ‘B1’, dentro dessa string, também. A solução foi renomear a coluna em Partidas: de LB1 para L1B, e o mesmo processo foi realizado para as outras colunas.

Isso resolveu um problema, mas não outro. E em breve a fórmula na imagem fará sentido. Ainda fazendo testes com uma partida só, na hora de usar =cont.se para calcular o lance 4 na planilha Heatmap (ou seja, colunas L4B e L4P), o lance das pretas, exd5+, não foi contado. Como assim? Em um momento, o Excel conta a mais e agora conta a menos? Sim. Se antes resolvemos o problema apenas renomeando as colunas, agora precisamos editar a fórmula, para que situações semelhantes não nos peguem mais de surpresa. E isso é feito com caracteres curinga, representados por “*”. Às vezes vai acontecer de ter alguns caracteres antes da casa do tabuleiro que queremos contar. Pode ser qualquer caractere, como prever isso na fórmula? Com este símbolo: *. E como ele é texto, deve ficar entre aspas. Para juntá-lo ao valor em uma célula, use ‘&’. Como nas linguagens de programação, mesmo. Dê Enter a certifique-se de aplicar esta alteração para todas as fórmulas em Heatmap. Agora o texto “exd5+” deve ser contado. Felizmente, neste caso, o Excel não confundiu “+” com um operador matemático.
E atenção, tem uma coisa que me ocorreu agora: enquanto escrevo este texto, percebo que não contei os roques. Não são casas do tabuleiro, mas duas peças se deslocam entre elas. Não senti necessidade de fazê-lo no momento, então trago esta informação para se levar em consideração caso isso faça sentido em seus estudos. Também não contei a quantidade de jogadas. Isso pode ser feito, na planilha Partidas, com uma coluna extra para informar os lances e, usando a mesma célula contendo os lances, a fórmula:
=CONT.VALORES(U2:IF2)/3.
Substitua pelo intervalo que você precisar, e divida tudo por 3. A divisão é necessária porque, depois que usamos =split(), temos três colunas para cada lance, lembram-se? Então, para o número exato de lances ser exibido, usamos a divisão. Pode-se ainda configurar as células para arredondar os números.
Visualizando no tabuleiro
Caso esses dados sejam mais interessantes para você se visualizados em tabuleiro, por cima, você pode criar uma nova planilha. Nela, prepare um quadrado de 8 x 8 e coloque as letras e números das coordenadas ao redor. Para cada quadrado, realize uma soma usando os dados da planilha Heatmap. Na casa A2, por exemplo: =SOMA(Heatmap!B2:U2).
Isso gera um total global, mas pode haver momentos em que seja mais interessante saber quais casas são mais usadas em determinado lance. Ainda usando a casa A2 como exemplo, a fórmula acima seria adaptada assim: =SOMA(Heatmap!B$2:C$2). Enquanto, na primeira fórmula, estávamos somando todos os lances e retornando um total global para cada casa, aqui escolhemos apenas as colunas contendo o lance desejado. B2 e C2, neste caso, contém L1B e L1P, o lance das brancas no lance 1, e o lance das pretas no lance 1, respectivamente. Conforme imagem anterior.
Neste ponto, só alguém perfeccionista se daria ao trabalho de fazer um mapa de calor por lance, por cor de peça no lance, ou ainda por tipo de peça de cada cor no lance. Não, ainda não tive coragem de gastar tanto tempo assim, e mesmo me limitando a saber quantas vezes uma casa é ocupada em determinado lance (pelas pretas E pelas brancas), o trabalho é bem repetitivo. Quer dizer, era. Até eu ter uma ideia. Acompanhe a imagem abaixo.

Voltemos ao exemplo da casa A2. No primeiro lance, dissemos que a fórmula ficaria assim: =SOMA(Heatmap!B$2:C$2). E para o segundo lance? Bastaria andarmos duas colunas à direita: =SOMA(Heatmap!D$2:E$2). Se eu quiser calcular para a casa A3, uso para os dois primeiros lances, respectivamente: =SOMA(Heatmap!B$3:C$3) e =SOMA(Heatmap!D$3:E$3).
Agora imagine fazer isso para as 62 casas restantes, para cada lance. Desanimou? Eu também, até que tive uma ideia mais eficiente. Prepare as fórmulas apenas para o primeiro lance e copie para os demais lances. A função de Substituir do Google planilhas não substitui dentro das fórmulas, mas você pode configurá-lo para fazê-lo. Selecione a opção ‘Pesquisar também dentro de fórmulas’, selecione o intervalo do novo lance com os dados colados do lance anterior, e altere apenas as letras, conforme mostrado na imagem. Não se esqueça de escolher a opção ‘Intervalo específico’ para pesquisar, e confirme à direita se o intervalo está correto. Aperte o botão mágico de Substituir e voilà!
Deixe um comentário