Contar em um banco de dados com todos os resultados (planilha1), quantas vezes um jogo (planilha2) por exemplo da mega sena, de seis números deu 4, 5 ou 6 (megasena) na loteria?
Ola @DCM, baixei os resultados, e gerei a informação com uma coluna extra, veja anexo.
Mega-Sena_02012025.ods (186,1,KB)
Tenho este estudo, aproveitei atualizar os sorteios.
A impressão dos volantes não esta atualizada, são os volantes antigos.
MegaSena_gs2.ods (585,9,KB)
=CONT.SE($C2:$H2;J$1)+CONT.SE($C2:$H2;K$1)+CONT.SE($C2:$H2;L$1)+CONT.SE($C2:$H2;M$1)+CONT.SE($C2:$H2;N$1)+CONT.SE($C2:$H2;O$1)
Troquei intervalo e critrerio, mais não se ganha muito, somente alguns $ menos:
=CONT.SE(J$1:O$1;C2)+CONT.SE(J$1:O$1;D2)+CONT.SE(J$1:O$1;E2)+CONT.SE(J$1:O$1;F2)+CONT.SE(J$1:O$1;G2)+CONT.SE(J$1:O$1;H2)
Olá @schiavinatto, obrigado pelo retorno, mas desse jeito eu já fazia. É que não estou descobrindo como anexar um arquivo ODS aqui, para mostrar da forma como estou querendo.
@LeroyG , Obrigado pelo retorno. Tentei anexar o arquivo mostrando do jeito que eu quero a informação, mas não consegui ou seja não achei como ir por um caminho para anexar o arquivo do meu PC aqui na pagina. Então, vou explicar. Por exemplo tenho um jogo na planilha_2 que tem seis dezenas que são: 1, 2, 3, 4, 5 e 6. (colunas A2:F2), Na coluna “H2” , informe quantas vezes esse aposta deu 4 pontos (desde o inicio dos sorteios até hoje -2955 jogos). A mesma coisa na coluna “I2” para acertos com 5 números e “J2”, para acertos com 6 números. Tentei essa fórmula abaixo que a IA do Google me passou, mas também não funciona, o resultado sempre retorna “0” =SOMA(SE((‘Banco_de_Dados’.B8:B5000=$B$4)+(‘Banco_de_Dados’.B8:B5000=$C$4)+(‘Banco_de_Dados’.B8:B5000=$D$4)+(‘Banco_de_Dados’.B8:B5000=$E$4)+(‘Banco_de_Dados’.B8:B5000=$F$4)+(‘Banco_de_Dados’.B8:B5000=$G$4)+(‘Banco_de_Dados’.C8:C5000=$B$4)+(‘Banco_de_Dados’.C8:C5000=$C$4)+(‘Banco_de_Dados’.C8:C5000=$D$4)+(‘Banco_de_Dados’.C8:C5000=$E$4)+(‘Banco_de_Dados’.C8:C5000=$F$4)+(‘Banco_de_Dados’.C8:C5000=$G$4)+(‘Banco_de_Dados’.D8:D5000=$B$4)+(‘Banco_de_Dados’.D8:D5000=$C$4)+(‘Banco_de_Dados’.D8:D5000=$D$4)+(‘Banco_de_Dados’.D8:D5000=$E$4)+(‘Banco_de_Dados’.D8:D5000=$F$4)+(‘Banco_de_Dados’.D8:D5000=$G$4)+(‘Banco_de_Dados’.E8:E5000=$B$4)+(‘Banco_de_Dados’.E8:E5000=$C$4)+(‘Banco_de_Dados’.E8:E5000=$D$4)+(‘Banco_de_Dados’.E8:E5000=$E$4)+(‘Banco_de_Dados’.E8:E5000=$F$4)+(‘Banco_de_Dados’.E8:E5000=$G$4)+(‘Banco_de_Dados’.F8:F5000=$B$4)+(‘Banco_de_Dados’.F8:F5000=$C$4)+(‘Banco_de_Dados’.F8:F5000=$D$4)+(‘Banco_de_Dados’.F8:F5000=$E$4)+(‘Banco_de_Dados’.F8:F5000=$F$4)+(‘Banco_de_Dados’.F8:F5000=$G$4)+(‘Banco_de_Dados’.G8:G5000=$B$4)+(‘Banco_de_Dados’.G8:G5000=$C$4)+(‘Banco_de_Dados’.G8:G5000=$D$4)+(‘Banco_de_Dados’.G8:G5000=$E$4)+(‘Banco_de_Dados’.G8:G5000=$F$4)+(‘Banco_de_Dados’.G8:G5000=$G$4))=4))
Ola @DCM , formula sem sentido. a função SE é pontual célulaxcélula e requer a opção de resposta verdadeira ou falsa.
Mais curta: =SOMARPRODUTO(CONT.SE($J$1:$O$1;C2:H2))
Ola @DCM, usando a formula sugerida por @PKG, e com colunas extras, segue sugestão…
Exemplo 1_GS.ods (228,8,KB)
@schiavinatto , boa tarde!..Dessa forma eu já fiz. O detalhe é que seu tiver dezenas de jogos, vou criar dezenas de colunas também lá no banco_de_dados. Eu queria uma formula para evitar tudo isso de colunas! Mas valeu muito obrigado. Abraços.
Ótimo. Tentei, mas não lembrava cómo…
Aqui está uma macro em Python que faz o que você quer. Dá pra melhorar, inclusive pra automatizar a definição da última linha da planilha
def get_result_count():
doc = XSCRIPTCONTEXT.getDocument()
controller = doc.getCurrentController()
sheet = controller.getActiveSheet()
sheets = doc.getSheets()
db_sheet = sheets.getByName('Banco_de_Dados')
# Define o intervalo usando coordenadas:
# getCellRangeByPosition(StartColumn, StartRow, EndColumn, EndRow)
# Intervalo na planilha de jogos
g_start_col = 1
g_start_row = 4
g_end_col = 6
g_end_row = 9
# Intervalo na planilha de resultados
r_start_col = 2
r_start_row = 1
r_end_col = 7
r_end_row = 2955
# Exemplo de iteração pelas células do intervalo
for row in range(g_start_row, g_end_row + 1):
# Obtém o intervalo de células da linha atual
gRange = sheet.getCellRangeByPosition(g_start_col, row, g_end_col, row)
gRangeArray = list(gRange.DataArray[0])
four = 0
five = 0
six = 0
for r_row in range(r_start_row, r_end_row + 1):
# Obtém o intervalo de células da linha atual na planilha de resultados
rRange = db_sheet.getCellRangeByPosition(r_start_col, r_row, r_end_col, r_row)
rRangeArray = list(rRange.DataArray[0])
# Conta quantos números coincidem
count = sum(1 for item in gRangeArray if item in rRangeArray)
if count == 4:
four += 1
elif count == 5:
five += 1
elif count == 6:
six += 1
sheet.getCellByPosition(8, row).Value = four
sheet.getCellByPosition(9, row).Value = five
sheet.getCellByPosition(10, row).Value = six
Primeiro instalar a extensão APSO (Alternative Python Script Organizer), que simplifica um pouco mais a criação e organização das macros Python.
Antes de prosseguir, após a instalação, é recomendado configurar o editor de sua preferência. Vá em Ferramentas → Extensões. Clique na extensão APSO e em Opções. Digite o caminho completo do editor na caixa de texto ou clique no botão Escolher para selecionar pelo navegador de pastas. Com isso, o menu Editar na janela do APSO irá abrir o editor que você definiu. Eu uso o VSCode.
Outro ponto a se preocupar é onde as macros Python serão salvas. Em geral, o LibreOffice procura as macros em um diretório no perfil do usuário:
- No Windows: %appdata%\libreoffice\4\user\scripts\python
- No Linux: ~/.config/libreoffice/4/user/scripts/python
Se as pastas scripts e python não existirem, você precisa criá-las.
Agora, vá em Ferramentas → Macros → Organizar scripts em Python. Será aberta a janela do APSO.
Com Minhas Macros selecionada, clique em Menu e Criar Módulo . Informe um nome para o módulo. Por exemplo get_result_count.py e confirme. Agora, clique no nome do módulo e em Menu → Editar . Ele vai abrir o seu editor e você pode criar a macro. Qualquer dúvida estou disponível.
