MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    Contar Repetição Matricial

    avatar
    lukets123
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 03/11/2016

    Contar Repetição Matricial Empty Contar Repetição Matricial

    Mensagem  lukets123 24/3/2021, 12:21

    Bom dia.

    Por favor, preciso realizar uma contagem matricial dentro do Access, estou deixando em anexo o modelo das minhas tabelas no Excel.

    Preciso converter as formulas do meu Excel para dentro do Access. As Fórmulas estão nas colunas Q, R, S, T e U da aba "Result"

    Segue abaixo o link para download do Excel modelo e das tabelas em Access

    https://filebin.net/7wdk8gwj2rawdvmi
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  Alexandre Neves 24/3/2021, 14:50

    Boa tarde e bem-vindo à participação no fórum
    Parece-me não existir função no Access correspondente ao que pretende. Terá que ser feita, para tal, e é mais prático, explique detalhadamente o que pretende no Access para se tentar ajudar


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    lukets123
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 03/11/2016

    Contar Repetição Matricial Empty Detalhamento Dúvida

    Mensagem  lukets123 24/3/2021, 17:04

    @Alexandre Neves

    Vou colocar um exemplo somente do ID 1 da tabela Result, mas isso vale para todas as demaislinhas.

    A fórmula pega a sequência de ID 1 (Resultados), e verifica quantos valores são iguais na tabela Base (ID 1), se compararmos as duas linhas teremos que 11 valores são iguais, sendo: 2 3 5 6 10 11 14 16 18 24 25

    Portanto, se temos 11 valores iguais, armazenamos 1 na coluna "Q". Assim, o valor de 150 indica que tivemos 150 vezes pelo menos 11 valores iguais entre ID 1 e todas as linhas na tabela Base.

    Isso é repetido para todas as linhas e colunas.

    Você deve armazenar, se o resultado for 11, 12, 13, 14 ou 15, separando-os em 5 novas colunas.

    Refiz o cálculo de uma forma mais simples em um novo excel.

    Em anexo, deixo o novo arquivo excel, o novo cálculo é destacado em verde.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  Alexandre Neves 24/3/2021, 19:37

    Faltou o anexo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    lukets123
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 03/11/2016

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  lukets123 24/3/2021, 19:45

    Segue o anexo.

    Anexo
    Anexos
    Contar Repetição Matricial AttachmentExample2.xlsx
    Você não tem permissão para fazer download dos arquivos anexados.
    (264 Kb) Baixado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  Alexandre Neves 24/3/2021, 20:11

    Cole num módulo
    Código:
    Function ContaIguais(ID As Long, Minimo As Byte) As Integer
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset, B As Byte, Cp1 As DAO.Field, Cp2 As DAO.Field
        Dim Conta As Byte
        ContaIguais = 0
        Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Base WHERE ID=" & ID)
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM Result")
        Do Until Rst2.EOF
            Conta = 0
            For Each Cp1 In Rst1.Fields
                For Each Cp2 In Rst2.Fields
                    If Cp1.Name <> "ID" And Cp2.Name <> "ID" Then
                        If Rst1(Cp1.Name) = Rst2(Cp2.Name) Then Conta = Conta + 1
                    End If
                Next
            Next
            If Conta > Minimo - 1 Then ContaIguais = ContaIguais + 1
            Rst2.MoveNext
        Loop
       
    End Function

    Na consulta, modo SQL
    SELECT ID, ContaIguais(ID,11) as Repeat11,ContaIguais(ID,12) as Repeat12,ContaIguais(ID,13) as Repeat13,ContaIguais(ID,14) as Repeat14,ContaIguais(ID,15) as Repeat15 FROM Result;


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    lukets123
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 03/11/2016

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  lukets123 24/3/2021, 20:30

    Fiz o processo mas os valores são divergentes, abaixo deixo um print com as respostas.

    Contar Repetição Matricial Exampl10

    Estou enviando em anexo o arquivo Excel e o Access.
    Anexos
    Contar Repetição Matricial AttachmentExample.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (167 Kb) Baixado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8019
    Registrado : 05/11/2009

    Contar Repetição Matricial Empty Re: Contar Repetição Matricial

    Mensagem  Alexandre Neves 24/3/2021, 21:07

    Aqui está o código corrigido
    Tinha as tabelas trocadas e a contagem não é "... pelo menos 11 valores iguais..." mas "... exactamente 11 valores iguais..."
    Código:
    Function ContaIguais(ID As Long, Minimo As Byte) As Integer
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset, Conta As Byte, B As Byte, Cp1 As DAO.Field, Cp2 As DAO.Field
        ContaIguais = 0
        Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Result WHERE ID=" & ID)
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM Base")
        Do Until Rst2.EOF
            Conta = 0
            For Each Cp1 In Rst1.Fields
                If Cp1.Name <> "ID" Then
                    For Each Cp2 In Rst2.Fields
                        If Cp2.Name <> "ID" Then
                            If Rst1(Cp1.Name) = Rst2(Cp2.Name) Then Conta = Conta + 1
                        End If
                    Next
                End If
            Next
            If Conta = Minimo Then ContaIguais = ContaIguais + 1
            Rst2.MoveNext
        Loop
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: 23/9/2021, 01:31