About Me
Seguidores
Estatisticas
Por defeito, o Excel aloca a RAM para 16 níveis de anulações ("undo"). O ajustamento do Registry pode mudar o valor por defeito, para o valor que seja especificado.
Para ver como fazer, clique: AQUI
Válido para o Excel 2000, 2002, 2003 e 2007.
Este add-in adiciona uma nova aba (Tab) na barra do Microsoft Office Excel 2007.
Os comandos nesta aba (Tab) dão-lhe acesso fácil ao conteúdo livre do Office Online que ajuda, muito rapidamente, a aprendizagem do Excel 2007.
Questão (adaptada):
“ Como faço para o Excel me dar o endereço da célula que possui o maior valor numa determinada coluna?”
Tomemos o seguinte exemplo:
Se pretendessemos apenas saber qual o maior valor encontrado, então utilizariamos a seguinte fórmula:
=MÁXIMO(A1:A9)
No exemplo, o valor mais elevado é o 7.
Então, o que se pretende, é obter uma fórmula que nos diga qual a célula que contém o valor mais elevado, ou seja, “A3”.
A Função CORRESP() procura por um valor num array e devolve a posição relativa desse valor.
Por sua vez, a Função ENDEREÇO() devolve a representação em texto do endereço de uma determinada célula.
Assim, a fórmula a utilizar, será a seguinte, combinando as três Funções descritas:
=ENDEREÇO(CORRESP(MÁXIMO(A1:A9);$A$1:A9;0);1)
Pode, igualmente, utilizar-se uma UDF, como, por exemplo, esta apresentada num newsgroup por Ron Rosenfeld:
A sintaxe é a seguinte: =MaxAdr(rng), em que rng é o Range que se pretende utilizar:
Function MaxAdr(rng As Range)
Dim c As Range
Dim MaxNum As Double
MaxNum = Application.WorksheetFunction.Max(rng)
For Each c In rng
If c.Value = MaxNum Then
MaxAdr0 = c.Address
Exit Function
End If
Next c
End Function
Tópicos relacionados:
Há dias, foi-me colocada a seguinte questão (adaptada):
“ Quando trabalhava com o Lotus123 fazia /Range/ Name/Create para uma zona seleccionada e mais tarde poderia utilizar esse nome para imprimir, apagar, formatar etc. Como é que eu faço isso agora, imprimir por exemplo, sem ter que estar sempre a definir a área de impressão? “
A minha resposta no Forum do EXCELer, foi a seguinte:
“ Defines um nome para o teu Range, ou seja:
a - Marcas a área pretendida
b - Escolhes de seguida: INSERIR>NOME>Definir, digitas o nome pretendido, adicionas e dás OK.
c - Depois, vais ao Campo Name Box (ou Caixa de Nome, em português) e clicas no dropdown para veres o nome. Verificarás que o Range fica imediatamente marcado.
Para imprimires, vais a FICHEIRO>IMPRIMIR, marcas o item Selecção e dás OK.”
A Imagem do que se pretende:
a -
b -
c -
Resultado:
Para a impressão:
Ou seja, podemos definir os Ranges que quisermos e, como no exemplo, efectuarmos as diversas impressões, sem ter que estar sempre a definir as áreas de impressão.
Tópicos relacionados:
E fui ao 2009 MVP Open Day, em Madrid, no dia 3 deste mês de Outubro!!!!
Um espectáculo!!!
E apreciei a iniciação dos novos MVP’s na Comunidade Microsoft!!!!
Eis a Microsoft MVP Lead Ibérica, Cristina Herrero, a “armar” mais um “cavaleiro MVP”…
E a foto dos MVP’s presentes, para a posteridade!…
Foi, como não podia deixar de ser, um momento inesquecível, que irá perdurar na minha memória!!!
Ainda a propósito do post anterior, foi colocada a questão de encontrar uma data que esteja entre a Data inicial e a Data final (por exemplo, 14/03/2007-11/05/2008) e depois partir daí para a contagem dos dias até à data final (que poderá estar também entre uma data inicial e final mais abaixo).
A imagem do que se pretende:
Campos a preencher:
- Data de início (será 14/03/2007) - D2
- Data de fim (será 11/05/2008) -D4
- Capital (será 1000) - E2
Resultado pretendido:
De 14/03/2007 a 30/06/2007 - 109 dias à taxa de 0,1058 = 31,60
De 01/07/2007 a 31/12/2007 - 184 dias à taxa de 0,1107 = 55,80
De 01/01/2008 a 11/05/2008 - 132 dias à taxa de 0,1120 = 40,50
-------------------------------------------------- Total de juros: 127,90
Então, com a utilização da função PROCV(), poderemos chegar ao resultado pretendido.
Assim, teremos:
Em F2:=SE(D2="";ARRED(C2*((B2-A2)+1)/365*$E$2;2);ARRED(PROCV(D2;$A$2:$C$4;3)*((B2-D2)+1)/365*$E$2;2))
Em F3:=SE(D3="";ARRED(C3*((B3-A3)+1)/365*$E$2;2);ARRED(PROCV(D3;$A$2:$C$4;3)*((B3-D3)+1)/365*$E$2;2))
Em F4:=SE(D4="";ARRED(C4*((B4-A4)+1)/365*$E$2;2);ARRED(PROCV(D4;$A$2:$C$4;3)*((D4-A4)+1)/365*$E$2;2))
No Forum do EXCELer, foi apresentada a seguinte questão (adaptada):
“A tabela abaixo representa valores de taxas de juros aplicáveis nas datas indicadas, isto é, entre as datas indicadas aplicam-se as taxas que estão à frente.
A B C
1 01/01/07 30/06/07 0,1058
2 01/07/07 31/12/07 0,1107
3 01/01/08 30/06/08 0,1120
4 01/07/08 31/12/08 0,1120
(Em que A= Data de Início
Em que B= Data de Fim
Em que C= Taxa a Aplicar)
Se um documento for emitido em 14/03/07 e contar juros até 11/05/08, é possível obter o valor dos juros na totalidade.
Eu pretendia obter no final valores parcelares, assim:
De 14/03/2007 a 30/06/2007 - 109 dias à taxa de 0,1058 = 31,60
De 01/07/2007 a 31/12/2007 - 184 dias à taxa de 0,1107 = 55,80
De 01/01/2008 a 11/05/2008 - 132 dias à taxa de 0,1120 = 40,50 “
Representemos então, o que se pretende:
Para calcularmos o número de dias entre as duas datas que contêm a mesma taxa de juro a aplicar, utilizaremos a seguinte fórmula:
Em E1: =(B1-A1)+1
Em E2: =(B2-A2)+1
Em E3: =(B3-A3)+1
(A formatação destas células deverá ser “Número”, sem casas decimais)
E agora, para calcularmos os valores dos juros, de forma parcelar, teremos:
Em F1: =ARRED(C1*E1/365*1000;2)
Em F2: =ARRED(C2*E2/365*1000;2)
Em F3: =ARRED(C3*E3/365*1000;2)
(A formatação destas células deverá ser “Número”, com 2 casas decimais)
Tópicos relacionados:
Variable1 As varType1
Variable2 As varType2
...
VariableN As varTypeN
End Type
registoNumero As Integer
registoData As Date
registoValor As Currency
registoNome As String * 50
End Type
Esta estrutura pode ser utilizada da mesma maneira que as variáveis normais, como no exemplo a seguir:
registo1.registoData = "06-09-2008"
Tópicos relacionados:
Por mail, fizeram-me a seguinte pergunta (adaptada): "...gostava de incluir a informação ao utilizador quais as medidas a cortar de uma barra para maior aproveitamento, por exemplo: tenho 5 cortes com 112, 1 com 30, 2 com 4 etc etc.. as barras têm 6 metros e a intenção era tirar o maior aproveitamento no corte, para as sobras serem o menor possivel, isto é, escolher valores cuja soma fosse o mais perto possivel dos 6 metros, a mensagem ao utilizador fosse por exemplo: de uma barra cortas 5 com 112 e uma com 30, na outra cortas tantas com tanto e outras ou outra com tanto etc..."
Bom, vejamos a imagem da possível resolução do problema:
As fórmulas:
Em E5: =ARRED.PARA.BAIXO((C1/C5);0)
Em E6: =SE(C6="";"";ARRED.PARA.BAIXO((I5/C6);0))
Em E7: =SE(C7="";"";ARRED.PARA.BAIXO((I6/C7);0))
Em I5: =C1-(C5*E5)
Em I6: SE(C6="";"";I5-(C6*E6))
Em I7: SE(C7="";"";I6-(C7*E7))
Mas, e se não quisermos, no exemplo, cortar as 5 barras da medida 112, mas apenas 4? Como faríamos para, aceitando a alteração, harmonizar o número de cortes relativos às outras medidas?
Vejamos então, o exemplo do que agora referi:
Eis as fórmulas, referentes à coluna I:
Em I5: =SE(F5="";C1-(C5*E5);C1-(C5*F5))
Em I6: =SE(F6="";SE(C6="";"";I5-(C6*E6));SE(C6="";"";I5-(C6*F6)))
Em I7: =SE(F7="";SE(C7="";"";I6-(C7*E7));SE(C7="";"";I6-(C7*F7)))
Tópicos relacionados:
Se pretendermos utilizar a indicação Option Explicit (Option Explicit Statement), a mesma deve aparecer num módulo antes de todos os procedimentos. Quando a Option Explicit aparece num módulo, devem declarar-se explicitamente todas as variáveis usando as indicações Dim, Private, Public, ReDim, ou Static. Se tentarmos usar uma variável tipo “undeclared”, ocorre um erro na compilação. Se não se utilizar a indicação Option Explicit, todas as variáveis “undeclared” são do tipo Variant, a menos que o tipo seja especificado de outra maneira, por exemplo, com uma indicação de DefType. Por norma, é de utilizar a indicação Option Explicit para evitar incorrecções de digitação do nome de uma variável existente.
Nas opções de VBA, encontra-se uma checkbox, chamada “Require Variable Declaration”:
Seleccionando esta checkbox, fazemos com que o VBA insira a linha “Option Explicit”, no topo de qualquer módulo que criamos. Esta indicação força-nos a declarar todas as variáveis antes de as referirmos no nosso código.
Tópicos relacionados: