Excel = ajuda com formulas..

Status
Fechado a novas mensagens.
Bem... isto demorou um pouco para "compilar" mas vamos lá

Em relação ao exemplo que deste, vais antes de mais criar novas colunas, mais concretamente, vais precisar de 9 ( sim, nove ) novas colunas , e como algumas (a maior parte delas) são auxiliares, podem ser ocultadas

As novas colunas vão ser criadas em principio ao lado da data e chamar-se-ão:
- Mes / aux1 / aux_F / Dias_M_data / Dias_Dif / aux_dias / Num_M / Num_D / Texto

Como em principio, já dá para entender pelo nome, vou passar a descrever o que cada uma faz

Mes: indica qual o mês a que se refere a data
aux1: calculo intermédio auxiliar
aux_F: calculo auxiliar (tem como função indicar se o mês tem 30 ou 31 dias)
Dias_M_data: indica o numero de dias contidos no mês
Dias_Dif: calculo do num de dias entre datas
aux_dias: auxiliar para calculo do Num_M e Num_D
Num_M: indicação do num de meses entre as datas
Num_D: indicação do num de dias entre datas
Texto: escreve aquela frase "X Meses e Y Dias"


Para teres uma ideia vou chamar colunas pelo titulo, depois é so colocar o link correctamente

Basta copiar o que vou escrever para em principio começar a funcionar

Mes: ="Mes(data)"
aux1: =Mes/2
aux_F: =aux1-int(aux1)
Dias_M_data: se(mes<8; se(mes=2;28; se((aux_F=0);30;31)); se((aux_F=0);31;30))
Dias_Dif: Data2 - data1
aux_dias: Dias_Dif / Dias_M_data
Num_M: =int( Dias_Dif / Dias_M_data)
Num_D: =(aux_dias - Num_M) * Dias_M_data
Texto: =Num_M&" meses e "&Num_D&"dias"

Depois de substituires os nomes das colunas pelas celulas em causa, isso já deve estar a funcionar.

Depois as que quiseres ocultar, carregas com o botão direito do rato por cima da coluna e carregas ocultar.



Espero ter ajudado,
 
Um pouco offtopic, mas o que é uma média entremédia? :S

Seria média intermédia? Mesmo que fosse «intermédia» a palavra, média intermédia simplesmente não existe, porque o valor central (intermédio) pode ou não coincidir com o valor médio, não estando sequer no mesmo contexto.

Estás a misturar conceitos de estatística :P
 
Sim, o português está algo incorrecto mas a dita média entremedia é mesmo a média entre as médias, ou seja, é a média (aproximada claro) do numero de kilometros pelos litros colocados desde a ultima vez...

Neste momento está assim:
fuelgd2.jpg


Após este post vou analisar o que o Sniper2 colocou ;)

Obrigado pelas ajudas!! ;)

EDIT: Sniper2, acho que percebi a ideia! Ver se amanhã tento pegar nisso e testar ara ver se consigo colocar isso a funcionar!. Mais uma vez obrigado pela ajuda!
 
Última edição:
Boas tardes.
Estou a fazer um relatorio de estatisticas de chamadas que vai buscar o preço das chamadas a outra folha que tem o tarifário de cada operador.

O meu problema é que ao alterar na tabela de tarifários, altera todas as estatisticas feitas até à data.

Eu estava a pensar resolver a partir de datas, uma vez que nos relatórios das chamadas tem uma data, comparar e a partir daí dizer onde tem que ir buscar os dados (a que colunas/linhas) para fazer os calculos. Mas não estou a conseguir comparar.

Alguém me dá uma ajuda?

Agradeço desde já.
Cumps José Carvalho
 
Boas.

Já consegui resolver. Coloquei uma procura dentro de outra. Tenho uma folha para cada operador, depois nessa folha tenho várias colunas, onde nessas colunas tenho as actualizações dos tarifários, assim:
1-2-07 1-2-07 1-4-07
pt 0.02 0.02 0.01
it 0.02 0.01 0.01
fr 0.03 0.03 0.02
esp 0.02 0.02 0.01
voipbuster *nome da sheet

Onde faço um PROCV para encontrar o país e dentro desse faço outro PROCH para encontrar o mês correspondente ao mês em que a chamada foi feita, ficando assim: =SE(C1="Voipbuster";procv(A1;sheet1!A$3:M$20;Valor(proch(B1;sheet1!B$1:M$2;2;Verdadeiro);Falso);
procv(A1;sheet3!A$3:M$20;Valor(proch(B1;sheet3!B$1:M$2;2;Verdadeiro);Falso)

Agora gostava de fazer a procura das sheets automaticamente, em vez de eu ver qual o operador que é e ir buscar os dados directamente à sheet correspondente, ele via qual é o operador e ia buscar os dados à sheet com esse nome.

Alguma ajuda será muito bem vinda?

Obrigado desde já
José Carvalho
 
Ola novamente.

Para a minha dúvida colocado ultimamente, eu tinha pensado fazer numa macro um ciclo for até o sheets.count e comparava o nome do operador que está guardado numa celula com o sheets.name e em vez de colocar o nome da sheet como está neste momento colocava o sheets(qualquercoisa).name na formula, mas não consegui.

Uma vez que eu quero copiar essa formula para as linhas que se encontram em baixo (fazendo isso directamente com a macro), o problema é que assim sendo não consigo ir buscar o valor à celula certa, que no meu caso é a célula à esquerda da célula onde vai ter a formula, ficando algo deste género:

=procv(A1;" & Sheets("célula da esquerda").Name & "!A$3:M$20;Valor (proch(B1;" & Sheets("célula da esquerda").Name & "!B$1:M$2;2;Verdadeiro);Falso)

Mas eu não sei como substituir onde diz "celula da esquerda", de forma a garantir que a formula vá buscar sempre o nome à célula que se encontra na célula à esquerda de onde está a formula.

PS: Já tentei colocar Range("J2").Value, onde J2 é a celula à esquerda, mas o problema é que se copiar a formula para a célula C3 ele continua a ir buscar o nome do operador à celula J2 e não à J3 que é o que eu quero e assim sucessivamente.

Espero ter-me explicado bem.
Alguma ajuda será optimo.

Cumprimentos
José Carvalho
 
Não sei se percebi mas:

Se em A1 tens um valor e agora estás em B1 e queres saber o valor da célula A1 (a que está esquerda) metes em B1:
=DESLOCAMENTO(B1;0;-1;1;1) em inglês penso que é OFFSET.

Se for uma macro e queres saber o valor da célula que está à esquerda da célula actual:
ActiveCell.Offset(0, -1).Value
 
Boas Koma.

É isso mesmo. Já introduzi e funcionou, mas não na totalidade. Na realidade respondeste à minha pergunta anterior, mas deparei-me com um problema, é que assim coloca logo a formula com o nome da sheet, e quando eu faço copiar a formula e colar em baixo vai buscar o nome que está em cima (como é lógico), logo o correcto era conseguir colocar a formula offset dentro da formula final, algo deste tipo:

ActiveCell.FormulaR1C1= _ procv(A1;'offset(0,-1).value'!A$3:M$20;Valor(proch(B1;'offset(0,-1).value'!B$1:M$2;2;Verdadeiro);Falso)

Mas não está a funcionar porque o gajo não sabe qual é a célula activa, e abre-me uma janela para escolher o ficheiro excel e depois a sheet.

Alguma sugestão?

Obrigado desde já pela atenção.

Cumprimentos
José Carvalho
 
Última edição:
Bom dia.

Pelo que percebi o "Sheets(nome).name" seria para colocar como código VBA, ou seja, "=procv(j2," & sheets(nome).name & "!A$1....., mas não é isso que eu pretendo, porque neste caso se eu quiser copiar o conteúdo da célula para as células seguintes não vai copiar o valor correcto, percebes?

A ideia seria ter a formula deslocamento dentro da formula principal, assim sempre que copiasse o conteúdo da célula para as seguintes ele fosse sempre buscar o nome à célula à sua esquerda e não à esquerda da célula de onde foi copiado a formula.

Senão assim sendo só posso copiar para as células seguintes com uma função "for" dentro da macro, não me permitindo copiar no próprio excel.

Eu se colocar a formula "deslocamento" imediatamente antes do "!" e sem plicas ('), ele dá-me um erro na formula, se colocar dentro de plicas ele não executa a formula e como não reconhece a sheet pede-me para escolher o ficheiro e depois a sheet desse ficheiro, o que acaba por devolver um erro e não o valor correcto.

O que achas? Alguma sugestão?

Cumprimentos
José Carvalho
 
Última edição:
Boas tardes.
Então não estas a ver nada que me possa resolver a situação.

Eu quero ir buscar dados a uma folha diferente de onde está a formula, mas essa folha depende do que está escrito na celula ao lado de onde está a formula.

Se me puderem ajudar agradecia imenso, embora que também seria uma solução para outras pessoas que necessitem de coisas semelhantes.

Obrigado desde já.
 
Boas.

Alguém me consegue ajudar com outra duvida? É possivel copiar uma coluna completa de outra sheet, podendo esta sempre a mesma?

Ou seja, tenho uma tabela numa sheet que sempre que é actualizada, é acrescentada uma nova coluna, para manter os tarifários antigos e na nova coluna ter os novos. E o que eu quero é ter noutra sheet numa coluna (sempre na mesma), os valores que são acrescentados na ultima coluna da outra sheet.

Como eu tenho os diferentes operadors em folhas diferentes, gostava de ter uma nova sheet a comparação dos preços de todos os operadores, mas sempre dos valores actualizados.

Espero que tenham percebido e que saibam como me ajudar.
 
Última edição:
Com esta fórmula cada vez que adicionas uma coluna o valor actualiza-se:

832esck.jpg

6uocc4w.jpg


... a fórmula é sempre a mesma ...
 
Última edição:
Boas.

Obrigadão KOMA pela tua disposição. Eu acabei por resolver de outra forma, eu tinha pensado numa formula parecida com a tua mas em vez de usar a contar.val estava a procura de um função que verificasse se a celula estava vazia, mas para este office não dá, então resolvi fazer um procv(a1;xpto!C1:z50;max(xpto!b2:z2); falso) onde eu na segunda linha tenho os valores a incrementar pk preciso para outra formula.

Mas obrigado pela disposição. Quanto a dúvida anterior ainda não viste como resolver?

Aguardo uma resposta.
 
Status
Fechado a novas mensagens.
Back
Topo