Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
Por nmcaslb
Posts
#45574
Bom dia
Eu tenho uma planilha onde tenho uma coluna com várias contas contabilísticas (começadas apenas por 6, 7 ou 9) e queria que numa determinada célula, na linha da conta começada por 9 o excel pesquisasse abaixo e quando encontrasse uma conta começada por 6 ou por 7 devolvesse essa conta. Alguém me pode dar uma ajuda?
Obrigado e cumprimentos
Por babdallas
#45576
Anexa um exemplo e mostre o resultado que deve dar, por favor.
Por nmcaslb
Posts
#45580
Conta Descrição Resultado
91032 Quero que nesta coluna ele procure 6263111
na coluna A a primeira conta começada
por 6 ou 7 e a devolva na coluna a seguir
91034 6263111
91035 6263111
91036 6263111
91038 6263111
6263111 Neste caso devolve vazio, só devolve se
a conta não começar por 6 ou por 7
91032 7997
91030 7997
91029 7997
91099 7997
91098 7997
91097 7997
7997
Avatar do usuário
Por FelipeMGarcia
Avatar
#45581
Amigo, anexa o arquivo em Excel com o resultado esperado, para anexar, vá em + resposta, adicionar anexo.

Assim não dá pra testar e validar a fórmula.

Abs
Avatar do usuário
Por Deciog
Avatar
#45591
nmcaslb

Confere se é desta forma que desejas

Se minha resposta foi útil, clique em obrigado é uma forma de agradecimento da ajuda

Decio
Você não está autorizado a ver ou baixar esse anexo.
Por nmcaslb
Posts
#45694
Boa tarde Décio
Junto segue parte da planilha onde o resultado não é o pretendido, podes verificar se sou eu que estou a fazer algo errado?
Já agora, não há uma fórmula menos pesada para o que pretendo? O problema é que eu tenho que utilizar isto numa planilha com aproximadamente 500 mil linhas e fica muito pesado.
Obrigado e cumprimentos

Nuno
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Deciog
Avatar
#45701
nmcaslb

Primeiramente notei que não agradeceu ajuda dada.

Nota que você postou um modelo e agora esta de outra forma, por isso a formula não esta funcionando.

Corrigido, faz vários teste

Se minha resposta foi útil, clique em obrigado é uma forma de agradecimento da ajuda

Decio
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#45702
Olá Nuno,

Eu fiz o que deseja via macro. Creio que para 500 mil linhas será mais rápido do que por fórmula, mas mesmo assim levará tempo. No meu PC i3, 3.3Ghz, para 500 mil linhas demorou aprox. 30 segundos.
Se puder testar e dar retorno, te agradeço.

As primeiras linhas da macro são para definir qual é a coluna a ser pesquisada, qual deverá receber o resultado, e a linha inicial. A linha final é obtida automaticamente, pela última célula com conteúdo da coluna a ser pesquisada.

Se você postar a planilha real, posso adequar a macro.

Jimmy
Você não está autorizado a ver ou baixar esse anexo.
Por nmcaslb
Posts
#45729
Boa tarde

Antes de mais obrigado aos dois pela ajuda.
Decio, copiei a tua fórmula para o ficheiro original e aparentemente só funciona quando há uma linha começada por 9 seguida de uma começada por 6 ou 7, se houver várias linhas começadas por 9 seguidas ele dá um erro como podes verificar no anexo (linhas 26498 em diante).

Jimmy

Este é o ficheiro com todas as linhas se conseguires fazer essa macro eu agradeço-te, assim fico com outra opção.

Onrigado e cumprimentos

Nuno
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#45736
Nuno, bom dia.

Obrigado pelo like.

Segue a planilha com a macro. Veja que você mesmo pode alterar as colunas-chave (de códigos e de resultado) caso haja mudança na planilha. Basta abrir a macro e alterar as 3 primeiras linhas. Se não souber como abrir a macro, me diga que eu te explico.

Você havia falado em 500 mil linhas, mas esta planilha que passou só tem 26 mil. Testei o tempo de execução e foi de menos que 3 segundos.

Eu exclui a coluna de fórmulas, porque elas tornam a planilha pesada, e com elas a execução da macro passa de 3 para 15 segundos. O resultado da macro foi idêntico ao da fórmula, exceto pela última linha de dados (linha 26608, que a macro deixou em branco e a fórmula resultou #NÚM!.

Eu mantive um botão para a execução da macro, mas coloquei uma alternativa que é segurar as teclas CTRL+SHIFT e teclar Q, que permite acionar a macro de qualquer lugar da planilha. Se dessa forma resultar mais prático, o botão pode ser apagado.

A vantagem de ter as fórmulas é que não há a necessidade de executar a macro, pois elas são calculadas automaticamente. Dependendo da forma de operação da planilha, elas podem ser melhor opção que a macro, que é acionada manualmente. Há formas de tornar a execução da macro também automática, mas para isso seria necessário conhecer a forma com que a planilha é operada, para evitar execuções sucessivas e desnecessárias.

Caso opte pelas fórmulas, creio que precisam de um pequeno ajuste, porque quando inseri uma linha nova na linha 1 ou 2, as fórmulas não funcionaram adequadamente.

Jimmy
Você não está autorizado a ver ou baixar esse anexo.
Por nmcaslb
Posts
#45742
Muito obrigado aos dois
Jimmy, através da macro está a funcionar 5 estrelas e como torna o ficheiro bem mais leve vou optar por esta solução, de qualquer forma queria agradecer ao Delcio a ajuda que me deu.
Grande abraço para os dois
Nuno
Avatar do usuário
Por Jimmy
Avatar
#45743
Ok Nuno,

Você tem dúvida de como adaptar a macro para outras colunas, ou linha inicial?

Tem conhecimento de macros para fazer isso? É possível que isso seja necessário porque as planilhas são mutáveis....

Jimmy
Avatar do usuário
Por Jimmy
Avatar
#45745
Nuno,

Fiz uma alternativa, via FUNÇÃO. Não acho que ficou bom porque demora uns 15 segundos pra rodar.

Também não é confiável porque se por exemplo, alterar D3, o valor de G2 não é alterado automaticamente, como deveria. Para que seja, é necessário teclar F2 (editar) sobre G2 e dar ENTER em seguida.
Se os dados não são mutáveis, pode te atender.

A vantagem dessa forma é que você coloca a função na célula em que quer o resultado, e aponta para onde está o código. Dessa forma, não é necessário especificar colunas ou linha inicial.

Segue a planilha de qualquer forma, para você avaliar.

Jimmy
Você não está autorizado a ver ou baixar esse anexo.
Por nmcaslb
Posts
#45786
Jimmy
Com a macro resultou perfeitamente, o ficheiro ficou consideravelmente mais leve (apesar de continuar a ter 34 mb de tamanho). Consegui adaptar a macro, tenho conhecimentos básicos de vba e apenas tive que alterar a coluna de onde queria obter o resultado. Na altura não te enviei o ficheiro com as 500 mil linhas por limitação de tamanho do anexo a enviar por aqui. Antes da macro o ficheiro tinha quase 50 mb. Com a macro roda rápido e é justamente o que eu precisava. Testei o teu último ficheiro com a função, mas a meio do ficheiro, se reparares ele já está a devolver a conta começada por 6 ou 7 na mesma linha das mesmas contas em vez de devolver só nas linhas começadas por 9. De qualquer forma não percas mais tempo com isso porque com a macro consegui exatamente o que queria. Mais uma vez obrigado a ti e ao Delcio.
Grande abraço
Nuno
Avatar do usuário
Por Deciog
Avatar
#45789
Nuno, Bom Dia.

Obrigado pelo feedback, quando precisar estamos aqui para ajudar

Abraço

Decio
Avatar do usuário
Por Jimmy
Avatar
#45794
Só por curiosidade, quanto tempo demorou com 500 mil linhas?

Não esquece de fechar o tópico.

Até.

Jimmy
Por nmcaslb
Posts
#45799
Jimmy
Demorou menos de 10 segundos a executar a macro, a calcular o ficheiro e a gravá-lo.
Depois queria pedir-te ajuda numa outra coisa que me lembrei entretanto e que é algo que tenho na cabeça há algum tempo mas não consigo arranjar forma de passar para um ficheiro, mas se calhar com macro é possível. Já tentei inclusivamente com uma tabela dinâmica, mas não estou muito familiarizado com a forma de funcionamento.
Cumprimentos
Nuno
Avatar do usuário
Por Jimmy
Avatar
#45804
Nuno,

Seu PC deve ser bem mais novo que o meu, pois 13 segundos para rodar com 500 mil linhas, é bem rápido.

Quando à sua nova necessidade, relate o que necessita, anexe planilhas de modelos, etc, e estudaremos a melhor saída. Caso deseje deixar para uma outra oportunidade, peço que feche o tópico.

Até,

Jimmy
Por nmcaslb
Posts
#45858
Bom dia Jimmy
Segue em anexo o ficheiro sobre o qual gostaria que me desses uma ajuda na criação de uma macro. Aquilo que pretendo que a macro faça é o seguinte. Como podes verificar o ficheiro tem 3 folhas. Nas duas primeiras folhas queria retirar o que não foi pago pelos cliente ou seja tudo o que tenha saldo diferente de 0 (zero) na coluna R. Precisava que em tudo o que tenha saldo nessa coluna passasse para outro ficheiro as colunas Data (D), Código cliente (E), Nome cliente (F), Resp (G), Coluna H, Numero factura (C), Condições de pagamento (J), Saldo (R) e vencimento (K) por esta ordem. A terceira folha é um pouco diferente, queria que só passasse para outro ficheiro (o mesmo que foi criado nas folhas anteriores) os dados do primeiro setor (até à linha 16) pela seguinte ordem: Data (coluna A), Código cliente (B), Nome cliente (C), Resp (D), Cart/nd (F), Débito (I) e vencimento (K). Depois disto queria que, se possível, ele retirasse as ligações externas do ficheiro, e ordenasse os dados copiados primeiro por data, depois por vencimento e finalmente por nome do cliente. Se tiveres alguma dúvida diz.
Obrigado e cumprimentos,

Nuno
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord