Apostila de Introdução Ao Excel PDF
Apostila de Introdução Ao Excel PDF
Apostila de Introdução Ao Excel PDF
1- CÁLCULOS BÁSICOS 4
4- NOMEANDO VARIÁVEIS 15
5 – LISTA SUSPENSA 16
6 - PROCURA HORIZONTAL 18
FORMATAÇÃO CONDICIONAL 19
7 – PROCURA VERTICAL 23
EXERCÍCIO COMPLEMENTAR 23
8 – ÍNDICE E CORRESPONDÊNCIA 25
MÉTODO DA BISSECÇÃO 35
14 - FUNÇÕES FINANCEIRAS 39
EXERCÍCIOS 39
OPÇÕES DO SOLVER 43
1
ANEXO- FÓRMULAS DIVERSAS: 68
V4 – 3 finalizada em 4/8/16 – inclui exercício dos salários para 2016 após SE (Ex 2).
V4-6 iniciada em 15/9 – correção na PROCV da Pagamal (estava na prática como PROCH); inclusão de
índice de referência e numeração de páginas. Mudança de localização do exercício de solução da
equação de segundo grau para a região da apostila em que temos os exercícios de funções (raízes).
Adicionada explicação de como colocar um subscrito/superescrito no Excel (Ex Van der Waals)
Corrigido na página 35 (agora é página 36; Cap 11 – Encontrando raízes de equações - Bissecção) ao
invés da célula B4, tínhamos 84 na versão anterior da apostila.
Esta é uma apostila preliminar dos professores Almir Fernandes, Eduardo Bock, Carlos Frajuca
em uso no curso de Engenharia de Produção, e baseada no livro “Microsoft Excel 2002 for
Scientists Engineers, 3ª edição”.
Esta apostila pressupõe que o aluno esteja trabalhando com uma edição do Microsoft Excel
2003 ou mais recente (até 2013, pelo menos). Versões diferentes do Excel alteram o
posicionamento de componentes do Excel. Caso você não encontre determinada opção onde
está indicado na apostila, faça uma busca utilizando uma das opções abaixo. A apostila é
detalhada, e o aluno pode segui-la de forma autônoma, tirando dúvidas com o professor se for
o caso. Em caso de dúvidas, você tem 3 fontes primárias:
1. O professor ou outra pessoa com conhecimento no assunto. Embora seja a solução
“mais cômoda”, ela nem sempre estará disponível em sua vida profissional. Assim,
procure praticar as opções abaixo para seu próprio benefício.
2. Ajuda do Excel. O Excel, assim como boa parte dos programas computacionais utilizados
por você agora e no futuro, possui (ou deveria possuir) acesso à ajuda, que pode ser
local (se as bibliotecas tiverem sido instaladas) ou remota (diretamente da internet).
Esta ajuda pode se localizar no menu superior como uma opção explícita (Ajuda) ou
como um ponto de interrogação conforme a figura abaixo. Utilize-a, você pode ter
certeza de que poderá precisar dela, e ela poderá ser uma valiosa aliada.
3. Finalmente, o Mr. Google. Não sabe como fazer algo? Pergunte ao Google. Ele sabe
coisas demais sobre todos nós, até chega a assustar, mas em todo caso, vale a pena
2
realizar consultas e verificar como elas podem nos ajudar tecnicamente. Utilize-a, você
pode ter certeza de que poderá precisar dela, e ela poderá ser uma mais valiosa aliada.
3
1- Cálculos básicos
Exercício dos resistores
(a) Abra um novo arquivo e salve na sua pasta de trabalho. Coloque seus comentários na
planilha durante o seu desenvolvimento, isto ajudará na fase de revisão. Por exemplo, copie o
desenho acima para a planilha, o que facilita a edição dos dados. Lembre de guardar os
exercícios para avaliação.
(b) Digite somente o texto e os valores mostrados em A1:A10 e B1:B3 conforme a figura acima.
(c) Na célula B4 digite a fórmula =1/A4. Copie essa fórmula para B5:B7 arrastando o canto
inferior direito da célula B4 ou clicando nele duas vezes, conforme figura abaixo.
(d) A fórmula em B9 é =B4+B5+B6+B7, o que equivale a 1/Re. A soma pode ser realizada pela
função soma, também =SOMA(B4:B7).
(e) A fórmula em B10 é =1/B9 para termos o resultado de Re.
(f) Na célula B12, poderíamos realizar a conta de uma só vez com a fórmula =1/(
(1/A4)+(1/A5)+(1/A6)+(1/A7)). Também poderíamos escrever nesta mesma célula: = 1/(B4 +
B5 + B6 + B7)
Faça um teste com um circuito de resistores 2; 2; 4; 4. Como 1/Re será 0,5+0,5+0,25+0,25
sua resposta pra Req deve ser 0,666667.
Este exercício realiza o cálculo da resistência equivalente para uma série de resistências
colocadas em paralelo. Você conseguiria montar uma solução equivalente para a soma de
resistências em série?
O que ocorrerá se uma das resistências tiver valor 0? No próximo exercício trataremos
deste caso.
Nota: neste exercício você aprendeu a: fazer cálculos básicos, arrastar fórmulas para que sejam
copiadas, utilizar funções simples (soma).
4
Atenção para: cópia das fórmulas e divisões. Você notou que para realizar um cálculo em
qualquer célula no Excel você precisa iniciar com o sinal de “=”?
5
2 –Tomada de decisão (SE)
No exercício anterior, montamos uma planilha capaz de calcular o valor da resistência
equivalente de quatro resistores em paralelo. Notamos que teríamos dificuldade com esta
planilha para o cálculo de um número de resistores menor que 4, uma vez que, deixando uns
dos campos em branco, teríamos um problema de divisão por zero. Vamos, portanto montar
outra planilha para o cálculo de até 6 resistores, mas que leva em conta se algum dos resistores
é nulo. Apenas para ilustrar, desta vez efetuaremos o cálculo das resistências na horizontal.
(a) Digite o texto da coluna A e os valores de B3:G3 conforme a figura. Você consegue arrastar
a linha 3? Uma possibilidade aqui, para manter o escalonamento de 10 em 10 ohms, é criar os
2 primeiros valores (células B3 e B4, com os valores 10 e 20), marcar as duas células (selecione
a primeira célula, pressiona o botão esquerdo do mouse e mova o mesmo para a segunda célula,
solte o botão e as duas células estão marcadas). Agora você pode copia-las para a direita,
mantendo a razão entre as células. Mas note que, no caso específico dos valores indicados na
figura acima, não há exatamente uma razão, mas valores variáveis para as 5 resistências – de
qualquer forma, um sistema de resistências em paralelo pode utilizar resistências de qualquer
valor (em outras palavras, após arrastar e criar as resistências entre 10 e 60, você pode alterar
a resistência de 40 para 35 Ohms e a de 60 para 50 Ohms (ficando assim, como na figura, com
2 resistências com o mesmo valor).
(b) A fórmula em B4 é =SE(B3>0;1/B3;""), e retorna o inverso da resistência quando o valor
inicial é maior que zero. Caso contrário, a fórmula retorna um espaço em branco. Copie a
fórmula até G4.
Veja que a função SE possui 3 “parâmetros” separados por ponto e vírgula. Sempre que uma
função no Excel possui mais que um “parâmetro”, estes são separados por ponto e vírgula. O
primeiro parâmetro é a comparação sendo efetuada. No caso, verificamos se o valor de B3 é
maior que zero. Se for, a resposta em nossa célula B4 será o nosso segundo parâmetro, se não
for, a resposta será o terceiro parâmetro.
(c) Em B5, entre com a fórmula = 1/SOMA(B4:G4) e cheque os resultados.
(d) Agora, teste com somente 4 resistores. Digite um valor qualquer, mesmo que não seja
numérico. Ao contrário da planilha do exercício anterior, essa planilha converte quaisquer
valores que não sejam maiores que zero em espaços em branco.
Nota: neste exercício você aprendeu a: copiar mais que uma célula de uma só vez e a utilizar a
função SE para tomada de decisão.
Atenção para: cópia das fórmulas e divisões. Você notou que para realizar um cálculo em
qualquer célula no Excel você precisa iniciar com o sinal de “=”?
6
1. Faça uma planilha em que o usuário entre com sua idade e você informe se ele pode
tirar sua carteira de motorista ou não (baseado na idade)
2. Altere o programa acima para calcular se ele pode votar, se não pode votar e se é
obrigado a votar. As condições são: se menor que 16 anos, não pode votar; se tem entre
16 e 18 anos, pode votar, mas o voto não é obrigatório; se possui entre 18 e 65 anos, o
voto é obrigatório, e se sua idade é superior a 65 anos, o voto volta a ser opcional.
Até R$1.556,94 8%
De R$1556,95 a R$2594,92 9%
Por exemplo, se uma pessoa possui salário bruto de R$2.500, ela se enquadra no
desconto de INSS de 9%, ou seja,
descINSS = 9% * R$2.500 = R$225.
Monte a planilha para que ela calcule o desconto do INSS de acordo com a faixa do
salário.
O abatimento ou desconto por filho varia anualmente, e para 2016, este valor é de
R$189,59 (por filho). Portanto, também precisamos do número de filhos de nosso
funcionário.
Como um exemplo, vamos assumir que ele tem 2 filhos. Assim, considerando os valores
calculados no item anterior (com base no salário bruto de R$2500), temos:
salario_bruto = R$2500
descINSS = R$225
7
num_de_filhos = 2
desc_por_filho = R$189,59
No nosso exemplo (salário bruto de R$2500 que nos levou ao salário de contribuição de
R$)1895,82, o funcionário é isento do IR. Portanto, neste caso,
descIR = R$0
Note que, se nosso empregado tivesse apenas 1 filho, seu salário de contribuição (a partir do
mesmo líquido) seria de R$2085,41, e portanto, ele cairia na faixa de 7,5%. Com isto, o desconto
do IR seria:
descIR = 7,5% * 2085,41 – 142,80 = R$13,61
8
3- Referencia absoluta e relativa.
Inicialmente, vamos montar uma tabela simples, de câmbio de valores. Monte uma planilha
com os dados abaixo
O cálculo em B3 indica =1/F1 e o cálculo em C3 indica =1/F2. Ou seja, pelo câmbio considerado,
R$1,00 equivale a $0,31 e €0,27.
Note ainda que formatamos a coluna A com valores em Reais (R$), B com o valor em Dólares
($) e a coluna C como euros (€). Veja que esta configuração faz com os dados destas colunas
sejam entendidos como um valor monetário. Esta formatação pode ser feita, por exemplo, pela
opção na aba Início, grupo de formatação numérica, conforme o detalhe abaixo:
Também podemos formatar nossas células com a formatação mais geral de células,
selecionando diretamente a opção Número ↘:
que nos leva à tela mais geral de formatação da célula, que permite definir não apenas o tipo
de dado, mas também detalhes como cor dos dígitos e do fundo, borda da célula, etc. O atalho
"Ctrl 1" (pressione as teclas Ctrl e 1 simultaneamente) também abre a caixa de diálogos abaixo
para formatação de células.
9
Na linha 4, vamos entrar com os símbolos R$, $ e € (para entrar com €, você pode ir em Inserir
-> Símbolo e buscar o símbolo para o Euro - após "inserir" o símbolo, feche a caixa de diálogo).
Vamos agora montar uma tabela que, fornecidos valores a cada na coluna A em reais,
efetuamos a conversão para saber quantos dólares e euros este valor representa nas colunas B
e C respectivamente. Como o câmbio pode ser alterado, queremos simplesmente alterar o valor
em F1 e F2 para novas referências e com isto, termos nossa tabela atualizada. Podemos calcular
as células B5 e C5 de forma semelhante ao que está indicado abaixo (faça a fórmula de
conversão de R$1,00 em Euros de forma semelhante ao que está indicado para dolares).
Imagine que nosso objetivo seja verificar o câmbio automaticamente para 100 ou 1000 valores
diferentes, um em cada linha. Como podemos automatizar o cálculo acima, ou seja, há alguma
10
forma inteligente de copiarmos a nossa fórmula para as próximas linhas? Se copiarmos
simplesmente as nossas fórmulas da linha 5 para a linha 6 abaixo,
o cálculo em B6 ficará como =A6 * B4, que nos leva a um erro: #VALOR! . O "problema" está
com a célula B4, que não contém o câmbio, mas sim o texto "$". E não é o que queremos. Nosso
desejo é que o valor em dólares em cada linha seja o cálculo do valor da coluna desta linha
multiplicado pelo valor do câmbio que estará sempre na célula B3 (para o câmbio em dolares)
ou C3 (câmbio em euros). Para "travar" nossa célula antes da cópia, podemos pressionar a tecla
F4 durante a edição da fórmula e verificar as diversas opções de "bloqueio ao copiar" uma
célula. Desta forma, coloque o cursor sobre a célula B5 e vá para a barra de edição de fórmulas
(veja abaixo no detalhe):
Com o mouse sobre "B3" (pode ser antes da letra B entre o B e o número 3, ou logo após o
número 3), pressione F4:
11
Pressionando novamente F4, sua fórmula muda para:
=A5*$B3
e novamente
=A5*B3
A diferença entre estas notações é qual propriedade está se tornando invariável em nosso
cálculo. O símbolo "$" em frente à indicação de coluna (letra) ou número (linha) indique que
esta propriedade está "travada" ao copiarmos o cálculo para outras células. Agora, com nosso
cálculo em B5=A5*B$3 e C5=A5*C$3 (também poderia ser B5=A5*$B$3 e semelhante para C5)
copie para as linhas abaixo.
Fizemos o cálculo utilizando uma referência absoluta e não relativa a uma outra célula. Neste
exemplo, consideramos que a cada cálculo da coluna B, o valor de B3 (cambio em dolares) seria
fixo, e depois, C3 (câmbio em euros) para a coluna C. Com isto, copiamos nossas 2 fórmulas para
as linhas abaixo. Mas você consegue alterar a célula B5 para que possamos copiar a fórmula
também para C5 a partir do cálculo em B5? Ou seja, escrever a fórmula apenas uma vez, e copia-
la para todas a célula C5 (e que o cálculo seja corretamente realizado) e em seguida, a partir
desta linha, copiar para as linhas 6-10?
Este exercício acima é um aquecimento para o exercício abaixo, que utilizará cálculo absoluto e
relativo para facilitar o seu trabalho. Vamos a ele!
12
Equação de Estado dos Gases: Lei de Van der Waals
Neste exercício, construiremos uma tabela para mostrar a pressão de um gás em diversas
temperaturas e volumes usando a equação de Van der Waals. Para nossa conveniência, queremos
variar os valores de a e b, utilizando diferentes tipos de gases. Vale realçar que pressões negativas
indicam que o gás seria condensado nessas condições e, portanto, a equação não deve ser
aplicada.
(a) Abra o arquivo do último exercício e crie uma nova planilha clicando em Plan2 ou Plan3.
Digite o texto das linhas 1 até 7 conforme figura abaixo. Em C4 digite CO2.Entre com os valores
em B4:E4. Formate as células ao seu gosto (centralização, subscrito, etc.).
(b) Entre os valores em B8:H8 e em A9:A18.
(c) Em B9 digite a fórmula =(B4*B8)/(A9-E4)-D4/(A9*A9). A célula deverá mostrar o valor
de 1374,21. Corrija a fórmula se necessário. Examine a fórmula e tenha certeza que entendeu
como é calculado o valor de V= 0,05 litros e T= 250 K.
13
Note que na planilha acima, o subscrito 2 em CO2 é apresentado – mas como podemos faze-lo no
Excel? A solução mais simples é esta: escreva CO2 na célula e marque o que você deseja mudar
para subscrito ou sobrescrito. Em seguida, selecione a Fonte no Grupo Página Inicial conforme
figura abaixo:
14
4- Nomeando variáveis
(a) Abra o arquivo dos exercícios anteriores e clique na planilha do último exercício. Apertando
o Ctrl, arraste a planilha para o lado criando uma Plan2(2) ou Gas(2). Delete os valores de
B9:H18.
(b) Selecionando B3:E4 use o comando Fórmulas/Criar a partir da seleção. Uma caixa aparecerá
conforme a figura abaixo.
(c) A criação de nomes é automática, mas tome cuidado que certos nomes não poderão ser usados.
O R, por exemplo, foi criado como sendo R_ .
Podemos usar o menu, colar nomes, lista para saber quais nomes foram dados às nossas
variáveis, ou podemos, simplesmente, escrevê-los nas fórmulas.
15
5 – Lista suspensa
Ainda no exercício anterior (Van Der Waals, utilizando as variáveis definidas), vamos criar uma
lista suspensa para trocar os valores de a e b para diversos gases. Primeiro, precisamos criar uma
tabela com os valores que iremos utilizar no nosso cálculo. Considere a tabela abaixo e a inclua
em sua planilha. Por simplicidade aqui vamos assumir que CO esteja na célula J8, e portanto, o
valor 0,0318 está em L14.
Gás a b
CO 1,485 0,0399
CO2 3,59 0,0427
H2 0,244 0,0266
H2O 5,464 0,0305
He 0,034 0,0237
N2 1,390 0,0391
O2 1,360 0,0318
Pelo exercício original, em C4 temos o gás CO2. Vamos colocar o mouse sobre esta célula e
selecionar:
Dados -> Validação de dados. Na janela que se abrir, vamos selecionar “Lista” ao invés de
“Qualquer valor”. Teremos algo assim:
16
Note que alteramos a opção “Permitir“ de “Qualquer valor” para “Lista”. Em “Fonte”, vamos
indicar a nossa lista, que vai (no caso acima) de J8 a J14 (valores CO a O2). E temos em nossa
planilha algo como:
Uma vez definida a lista suspensa para selecionar o gás que queremos, precisamos definir quais
são os valores de a e b de acordo com a tabela. Por hora, a forma como sabemos fazer isto é
utilizando um comando “se” aninhado, com uma pergunta para cada gás. Assim, para o
parâmetro a temos:
=se(c4=J8; k8; se(c4= J9; K9; se(c4 = J10; K10; se(c4 = J11; K11; se(c4 = J12; K12; se(c4 = J13; K13;
K14))))))
E algo semelhante para o parâmetro b. Veremos um pouco mais adiante que uma forma muito
mais adequada de resolver este problema é por meio da função “Procura Vertical” (PROCV).
OBS: você pode configurar os índices das fórmulas acima com subscrito (como em H2O) da
seguinte forma em Excel: Após escrever H2O em sua célula, marque o número 2 (ou o que
deseja alterar a formatação) e digite "CTRL 1" - a tela de formatação irá surgir e você poderá
colocar o texto selecionado no formato que deseja, subscrito, no caso.
17
6 - Procura horizontal
A função que faz essa busca é a “Procura Horizontal” (PROCH). Esta função recebe
4 parâmetros:
o que estamos buscando (o valor da célula B5)
a tabela de referência (de E2 a H3)
qual a linha que queremos retornar (2a linha da tabela acima)
VERDADEIRO - se aceita um resultado aproximado ou FALSO se requer uma
correspondência exata
Para uma ajuda completa sobre esta função (ou qualquer outra), selecione a opção abaixo
e veja a ajuda para a função e cada um de seus parâmetros.
Na prática agora:
(a) Em uma nova planilha do seu arquivo, digite o texto e os valores do intervalo A1:H3, A4:C4
e A5:B10.
(b) Em C5, digite =PROCH(B5;$D$2:$H$3;2; VERDADEIRO) e copie a fórmula até a célula
C10.
18
Perceba que um valor abaixo dos padrões (34 ppm) respondeu com um erro. Para
resolver esse problema podemos, por exemplo, apresentar uma célula vazia para valores abaixo
de 50 ppm.
Assim, a célula deixa de apresentar o erro. Mude você mesmo a planilha para que mostre
alguma mensagem do tipo “N/A”, ou “inaceitável”, “baixíssima concentração”...
Formatação Condicional
Imagine um cenário inicial em que queremos destacar os valores de cada sítio medido a seguinte
tabela de valores
Podemos também aproveitar para fazer a formatação condicional das nossas células, de acordo
com o grau de pureza de nossas amostras (coluna ppm). Se o nosso objetivo é formatar
diretamente a célula em que os valores numéricos se encontram, isto pode ser feito com a
opção Formatação Condicional -> Escala de Cor. Faça esta validação e veja algo como a figura
abaixo.
Porém, há casos em que queremos formatar uma determinada célula a partir dos resultados de
OUTRA célula, ou a partir de um cálculo qualquer. Por exemplo, vamos definir uma seleção de
cores de acordo com as amostras, que não corresponde exatamente à nossa classificação
anterior (utilizada no PROCH). Vamos considerar 4 cores:
<50 verde
<75 amarelo
<100 laranja
>100 vermelho
Note que nossa análise tem que ser feita na ordem acima. Se a amostra de determinada linha
(coluna B) for inferior a 50, a célula da coluna C (Grau) desta amostra será pintada de verde.
Senão, se for inferior a 75, a célula referente ao grau será pintada de amarela. Senão, se for
19
inferior a 100, a célula C da linha em questão será laranja, e, em caso contrário (grau superior a
100), a célula C correspondente será vermelha. As regras têm que estar ordenadas.
Para inserimos uma formatação condicional às nossas células neste caso, marcamos o conjunto
C5-C10 e selecionamos: Formatar->Formatação condicional e selecionamos (não é a unica
opção, mas vamos utiliza-la aqui) Gerenciar Regras:
e selecionamos "nova regra". Nesta nova janela, selecionamos a última opção de tipo de regra:
"Usar uma fórmula para determinar quais células devem ser formatadas". Na barra de edição de
fórmula, digite "=b5>50"
20
Em seguida, clique em "Formatar" vá na aba "Preenchimento" e escolha a cor verde.
Inclua as fórmulas para as 4 regras anteriores. Teremos algo assim (sempre selecionando "nova
regra" ao final da edição de cada uma delas):
21
Para ordenar corretamente as regras, conforme a indicação acima, você pode precisar utilizar os
botões ↑ ou ↓ presentes na janela acima. Note também que sua fórmula (Regra) não pode
apresentar valores absolutos como na segunda regra abaixo:
Se isto ocorrer, marque a regra e seleciona "Editar Regra", e com cuidado, remova (pressionando
F4, por exemplo) a indicação de referência absoluta.
22
7 – Procura vertical
A Procura vertical (PROCV) é muito semelhante à Procura Horizontal. A diferença básica é que
aqui nossa tabela de buscas está na vertical. Podemos retornar ao nosso exercício de Van Der
Waals. Nele, tinhamos uma tabela com os seguintes valores dos parâmetros a e b dos gases:
Gás a b
CO 1,485 0,0399
CO2 3,59 0,0427
H2 0,244 0,0266
H2O 5,464 0,0305
He 0,034 0,0237
N2 1,390 0,0391
O2 1,360 0,0318
Em nossa solução original, uma vez selecionado o gás que queremos analisar, utilizamos um
comando se "aninhado", com várias opções, para determinar o valor dos parâmetros de acordo
com o gás selecionado:
=se(c4=J8; k8; se(c4= J9; K9; se(c4 = J10; K10; se(c4 = J11; K11; se(c4 = J12; K12; se(c4 = J13;
K13; K14))))))
Monte o parâmetro b, baseado no cálculo acima. Porque o parâmetro pode/deve ser falso neste
caso? Pesquise e verifique você mesmo.
Exercício complementar
A partir destes dados, criem uma tabela de consulta que forneça o nome, cargo e salário de cada
funcionário cujo número de registro seja apresentado. Criem, basicamente, 8 células adicionais com os
campos abaixo, sendo que ao preenchermos o valor ao lado do registro (de 1 a 5), obtemos
automaticamente os demais campos (nome, cargo e salário). Por exemplo, ao entrarmos com o valor 2
na célula ao lado do registro, teremos o nome Joana, cargo Secretária e salário R$1.500,00
apresentados.
23
Registro
Nome
Cargo
Salário
24
8 – ÍNDICE e CORRESPONDÊNCIA
Vamos ver duas novas funções que são úteis quando trabalhamos com dados em tabelas
ou matrizes. Imagine que temos uma planilha com valores de vendas mensais de determinados
produtos:
A B C D E
1 MÊS\PRODUTO Televisores Geladeiras Fogões Computadores
2 Janeiro 234 75 103 215
3 Fevereiro 208 56 80 188
4 Março 301 75 95 206
Considere a matriz formada [A1:E4]. Suponha que nosso objetivo inicial é determinar em
que linha desta matriz encontra-se o mês de janeiro. Podemos fazer a seguinte busca (vamos
supor que estamos entrando nosso mês de busca na célula A20):
=CORRESP(A20; A1:A4; 0) -> o valor 0 indica que queremos uma busca exata, e estamos
restringindo nossa busca apenas à coluna A pois é nela que temos nossos meses definidos. Na
busca acima, teremos o retorno do valor como sendo "2", o que indica que Janeiro está na
segunda linha de nossa matriz (se definirmos a matriz de busca como sendo A2:A4, a linha
indicada como resposta é 1).
Agora queremos recuperar em que coluna da tabela temos o produto "Computadores".
Esta é uma busca semelhante à anterior, nos fornecendo o valor 4 se nossa tabela de busca for
B1:B4 (note que a quarta coluna a partir de B1 é a coluna "E", onde encontra-se o produto
"Computadores").
Assim, já sabemos que buscamos o total de vendas de computadores em janeiro. Basta
agora buscar qual o valor nesta célula, o que é dado pela função Índice (note que ela possui
acento!):
Índice(B2:E4; A20; B20) -> onde em A20 temos a função CORRESP para a linha (mês) e
em B20 a CORRESP para a coluna (produto).
Você consegue montar uma planilha completa com 12 meses e diversos produtos, e uma
lista suspensa para que o gerente escolha o produto e o mês você recupere o total de vendas?
Como um novo exercício de uso destas funções, vamos montar uma planilha para um
nutricionista. Ele entrará com os dados dos pacientes como altura, tamanho ou estrutura e o
peso. A planilha deverá informar o peso ideal para as condições do paciente e um comentário
sobre o peso atual. Para manter a tabela concisa, limitamos o exercício apenas para pacientes
do sexo masculino.
25
(a) Numa nova planilha do mesmo arquivo que temos trabalhado, digite o texto em A1:A13,
como mostrado na figura. Então, entre com os dados D1:G16.
(b) Use o comando “Definir nome” para definir os dados entre D2:D16 como “altura”, E1:G1
como “estrutura” e E2:G16 como “peso”. Estes dados compõe a tabela fixa, que é válida para
todos os pacientes do sexo masculino, e não deve ser alterada em seu exercício.
(c) Vamos agora simular um usuário de sua apostila (pode ser o enfermeiro que está coletando
os dados do paciente, ou o próprio paciente). Entre com os valores mostrados em B3:B5 (em
cinza claro na apostila).
(d) Uma vez que o usuário entre com seus dados, você quer recuperar qual seu peso ideal na
tabela E2:G16. Primeiro, precisamos determinar qual a coluna que corresponde à estrutura
fornecida pelo paciente, e em seguida, a que linha corresponde a altura do paciente.
Assim, vá para a célula B12 e digite =CORRESP(...verifique quais são os parâmetros corretos a
serem utilizados aqui, se precisar, utilize a ajuda do Excel – se tiver dúvidas, fale com o
professor). Essa função vai procurar pelo tamanho do paciente (valor de B4) no intervalo
(E1:G1) e retornará a sua posição (coluna). Quando o tamanho é G a fórmula retorna o valor 3.
Esta célula está com fundo verde na figura acima, para indicar que são valores calculados (via
CORRESP) a partir dos dados fornecidos pelo usuário em B4.
(e) Em B13 entre o texto =CORRESP(B3; altura; 1). Isso fará uma busca pela altura do paciente
na tabela de altura (D2:D16) e retornará a posição “Correspondente” mais próxima. Quando a
altura do paciente é 162,5 cm o valor deverá ser 3. Esta célula está com fundo verde na figura
acima, para indicar que são valores calculados (via CORRESP) a partir dos dados fornecidos pelo
usuário em B3.
(f) Agora sabemos a linha e a coluna para localizar o peso ideal na tabela usando função ÍNDICE.
A fórmula para B7 é =ÍNDICE(peso; B13; B12). Esta célula está pintada de azul na figura acima
para indicar que ela não é digitada, mas obtida automaticamente a partir do uso da função
ÍNDICE.
Outra opção para os 3 passos acima (sem utilizar as células auxiliares, B12 e B13) seria digitar
direto a fórmula =ÍNDICE (peso; CORRESP(B3; altura; 1); CORRESP (B4;tamanho;0)).
(g) Você pode formatar a célula B7 para mostrar o valor com suas respectivas unidades. Com a
célula B7 selecionada use o comando “Formatar células” (ou pressione Ctrl 1), categoria
“personalizado”. Na caixa de texto entre 00 “kg”.
26
(h) A fórmula em B8 é =SE(B5=B7; "OK"; ABS(B7-B5)&"kg"). Isso mostra uma outra forma de
adicionar unidades mas, agora, precisamos mudar o texto para justificado à esquerda.
(i) Complete a planilha com =SE(B5=B7; "";SE(B7<B5; "acima";"abaixo")) em C8.
(j) Salve o arquivo.
Teste com outros valores. Encontrou algum erro? Com a altura de 159, a planilha usa a
primeira linha da tabela. Ela não deveria usar a segunda, uma vez que 159 está mais perto de
160 que de 157? Como você pode resolver esse problema?
27
9 - Trabalhos com Matrizes
(a) Use o comando Inserir->Planilha na aba Início e crie uma nova planilha. Você também pode
inserir uma nova planilha com o comando (SHIFT + F11) ou clicando sobre a opção indicada
abaixo, no rodapé da planilha.
Entre com os valores em A1, A3, E3 e I3 conforme a figura abaixo. Utilize o comando Mesclar
e centralizar para centralizar seus dados
(b) Digite os valores abaixo para o intervalo A3:G6.
Podemos utilizar o cálculo matricial para resolver sistemas lineares. Por exemplo, o sistema
linear formado por:
2x + 3y – 3 = 0
3x + 2y – 5 =0
𝐴𝑋 = 𝐵
Onde
2 3
𝐴=
3 2
28
𝑥
𝑋= 𝑦
3
𝐵=
5
𝐴. 𝐴−1 𝑋 = 𝐴−1 𝐵
Mas como
𝐴. 𝐴−1 = 𝐼
1 0
Onde I é a matriz identidade (neste caso, 𝐼 = ).
0 1
𝑋 = 𝐴−1 𝐵
Já que a matriz identidade multiplicada por qualquer matriz dá a própria matriz (X, neste caso).
Assim, basta inverter nossa matriz A e multiplica-la pela matriz dos coeficientes B.
Em resumo: Coloque a matriz A nas células A2:B3 - e a matriz B em D2:D3 como abaixo
Em seguida, selecione as células onde ficará a matriz inversa e, com as estas 4 células
destacadas, conforme abaixo, chame a função Matriz.Inverso e coloque a matriz A como
parâmetro. Note, que, ao invés de confirmar o cálculo com "Enter", devemos utilizar as teclas
"Ctrl Shift Enter" simultaneamente após digitar “=matriz.inverso(A2:B3)”
29
E temos este resultado na nossa inversa:
4x1 + 0x2 + 3x3 + 5x4 + 6x5 + 3x6 + x7 + 0x8 + 4x9 + 31x10 = 439
0x1 + x2 + 4x3 +7x4 + 9x5 + 18x6 + 8x7 + 6x8 + 9x9 + 0x10 = 380
9x1 + 6x2 + 3x3 + 3x4 + 8x5 +6x6 +0x7 + 7x8 + 7x9 + 4x10 = 277
0x1 + 7x2 + 4x3 + 7x4 + 9x5 +15x6 +3x7 + 0x8 +2 x9 + 4x10 = 268
3x1 + 3x2 + 9x3 + 8 x4 + 0x5 + 5x6 +12x7 + 8x8 + 5x9 +11x10 = 401
9x1 + 2x2 +4x3 + 0x4 + 7x5 +x6 +5x7 + 9x8 +0 x9 +8x10 = 253
30
Solução de sistemas – cálculo iterativo
T T T T
(k ) (k ) (k ) q c
x x y y z z t
𝜕𝑇
3. Supor que o sistema está em estado estacionário ( = 0)
𝜕𝑡
E chegamos a:
𝜕2 𝑇 𝜕2 𝑇
2
+ =0
𝜕𝑥 𝜕𝑦 2
Ou
∇2 𝑇(𝑥, 𝑦) = 0
Que é conhecida como equação de Laplace. Esta equação nos leva à seguinte solução para x e y:
𝜕𝑇
𝑞𝑥 = −𝑘𝐴𝑥
𝜕𝑥
𝜕𝑇
𝑞𝑦 = −𝑘𝐴𝑦
𝜕𝑦
Vamos agora ver como podemos resolver esta questão. Se trabalhamos com um intervalo em x e y
pequeno, podemos aproximar as equações acima para:
∆𝑇 (𝑇2 −𝑇1 )
𝑞𝑥 ~ − 𝑘𝐴𝑥 = −𝑘𝐴𝑥 , ∆𝑥 → 0
∆𝑥 (𝑥2 −𝑥1 )
∆𝑇 (𝑇2 − 𝑇1 )
𝑞𝑦 ~ − 𝑘𝐴𝑦 = 𝑘𝐴𝑦 , ∆𝑦 → 0
∆𝑦 (𝑦2 − 𝑦1 )
31
32
10 - Solução para Equação Quadrática
Neste exercício, vamos montar uma planilha para a resolução de equações do segundo
grau, ax2+bx+c=0. Para tanto, vamos utilizar a fórmula:
b b 2 4ac
x
2a
B6: =(-b+RAIZ(disc))/(2*a)
D6: =(-b-RAIZ(disc))/(2*a)
(h) O que acontece se o valor do discriminante for negativo? Os próximos passos mudarão o
comportamento da nossa planilha e seus resultados para:
(i) Entre o texto em A5. Em C5, entre com a fórmula =SE(disc<0;0;SE(disc=0;1;2)) . Essa fórmula
retorna zero quando o discriminante é negativo e aparece um erro no valor das raízes. Caso o
discriminante seja zero, retorna 1. Em todos outros casos, retorna 2.
(j) Em A6, entre a fórmula =SE(C5>0;SE(C5=1;"Raiz única";"Raiz I");""). Caso haja apenas uma
raiz, o texto mostrará "Raiz única", se houver duas, "Raiz I" prosseguindo com o cálculo das
raízes ou deixará em branco caso não houver raízes.
33
(k) A fórmula em B6 fica sendo =SE(disc>=0;(-b+RAIZ(disc))/(2*a),””).
(l) Em C6, digite =SE(C5=2;"Raiz II";""). Isso fará com que o texto “Raiz II” apareça quando
necessário.
(m) Modifique D6 para =SE(disc>0;(-b-RAIZ(disc))/2*a;"") possibilitando, assim, o cálculo da
segunda raiz quando necessário.
34
11- Encontrando raízes de equações
Nos próximos exercícios, vamos encontrar raízes de equações não-lineares como, por
exemplo, a polinomial (3x3 - 7x2 - 22x + 40 = 0) ou equações exponenciais ou ainda
trigonométricas (e-x - sen x = 0). Se a equação é escrita como sendo f(x), sua raiz é o valor de x
para o qual f(x)=0. Esse valor é, algumas vezes, chamado de “o zero” da função.
Algumas equações podem ser resolvidas analiticamente, por exemplo, a fórmula de
Baskara é utilizada para encontrar as raízes de equações quadráticas. Para algumas equações,
o método analítico pode ser muito complexo ou, até, inexistente. Nesses casos, os métodos
numéricos são utilizados para se calcular, ou obter valores aproximados das raízes. O Excel tem
duas ferramentas para isso, "Atingir Metas" e o Solver. Mas antes, vamos utilizar o Método da
Bissecção para encontrar raízes.
Método da Bissecção
Na figura acima, os valores de f(a) e f(b) estão de lados opostos do eixo x, ou seja, tem
sinais opostos, f(a) é positivo e f(b) é negativo. A raiz f(x)=0, por sua vez, se encontra entre os
pontos a e b. Sendo, m o ponto médio do intervalo entre “a” e “b”, e tendo f(m) o sinal oposto
a f(b), sabe-se que a raiz encontra-se, agora, entre “m” e “b”. Dividindo o intervalo pela metade,
temos uma ideia mais próxima do valor da raiz.
Olhando para a função g(x) vemos que a raiz está entre “a” e “m”, logo, devemos usar
valores entre “m” e “a” para encontrar a próxima aproximação. Podemos repetir essa bissecção
várias vezes e, sucessivas vezes (também chamadas iterações) resultarão em intervalos cada
vez menores e cada vez mais próximos do valor da raiz. Até um valor que é tão próximo que
dizemos que convergiu para o resultado.
Isso nos permite desenvolver um algoritmo para encontrar a raiz de f(x),
(a) Comece com valores de “a” e “b” tais que, f(a) e f(b) tenham sinais opostos.
(b) Repita um passo de iteração até encontrar a precisão esperada.
(c) Encontre o ponto médio m=(a + b)/2.
(d) Se f(m) e f(b) tem sinais opostos, faça com que “a” tenha o valor de “m”.
(e) Senão, faça com que “b” tenha o valor de “m”.
(f) Volte à verificação de precisão (ou exatidão) no passo (b).
Para demonstrar como implementar esse algoritmo no Excel, vamos encontrar as raízes
da equação (e-x - sen x = 0) conforme a figura que mostra o gráfico da função para valores de x
35
entre 0 e 4. Podemos ver que essa equação tem uma raiz perto de 0,6 e outra perto de 3, mas
precisamos calcular mais exatamente ambas.
A linha 4 coloca as condições iniciais que podem ser alteradas dependendo das necessidades de
quem usa a planilha. Na próxima linha, ou seja, na próxima iteração, calculamos a primeira
aproximação.
(c) Em A5 digite a fórmula =SE(SINAL(F4)<>SINAL(E4); C4; A4). Isso compara os sinais de f(m) e
f(b). Se os sinais forem diferentes, a célula A5 (o novo valor aproximado de “a”) será o antigo
valor de m. Senão, a célula manterá o valor antigo de “a”.
(d) Em B5 entre com a fórmula =SE(SINAL(F4)<> SINAL(E4);B4;C4). Isso mantém o antigo valor
para “b” quando os sinais de f(m) e f(b) forem diferentes, mas usa o valor antigo de “m” para o
próximo valor de “b” quando o sinal for o mesmo. Os valores em A5 e A4 são iguais quando “a”
não for trocado por “m”, nesse caso o novo valor de “b” é o valor de the “m” da primeira
aproximação. Caso contrário, o valor prévio de “b” é usado.
Para calcular as sucessivas iterações, copie a linha 5 para baixo. Mas, por quantas linhas?
Lembrando que cada iteração divide pela metade o intervalo de aproximação, 20 passos
reduzem o intervalo para um fator de 220, ou ainda, um milionésimo. Obviamente, isso é mais
do que o necessário para a nossa precisão.
(e) Copie C4:F4 até a linha 24. Na figura acima, as linhas entre 10 e 20 foram suprimidas para
tornar a figura menor. Veja como as três primeiras colunas mostram valores muito próximos de
0,588 e as três últimas colunas mostram valores muito pequenos, ou seja, muito próximos de
zero.
(f) Podemos ver que a equação admite duas raízes, uma delas, próxima de 3. Troque os valores
iniciais de “a” e “b” na linha 4 para encontrar a segunda raiz. Não muda muito se você usar os
valores 3 e 4, ou 3 e 3,5. Porquê?
(g) Salve o arquivo.
36
12- Atingir Metas para resolução de uma Equação de segundo
grau
Num exercício anterior, mostramos como podemos usar o Excel para o cálculo de raízes
de equações de segundo grau de forma analítica usando a fórmula de Baskara. Nesse exercício,
vamos encontrar as raízes 2x2 - 5x - 12 = 0 usando o Atingir Metas.
O gráfico da figura abaixo vai nos ajudar a entender como o Excel faz isso. Se dermos dar
um chute inicial igual a 0, mostrado no gráfico como G1, o Atingir Metas achará a raiz -1,5 no
ponto R1. O Atingir Metas explora o ponto G1 e determina que a função move em direção de
zero conforme x se torna mais negativo. Se o chute inicial for 3, ponto G2, o Atingir Metas
encontrará a raiz 4.
(a) Abra uma nova planilha e digite os dados do intervalo A1:B2. Em B3, entre com a fórmula
=2*A3*A3-5*A3-12. Copie para B4.
(b) Clique em B3 e dados/teste de hipóteses/atingir metas. Coloque o valor como sendo 0 (raiz)
conforme figura e clique em Ok.
(c) O Atingir Metas deve obter um valor de -3.3424E-05 o que é bem perto de zero. O Atingir Metas
trocou o valor de A3 para -1,5. Com esse valor de x, f(x) chega bem próximo de zero, indicando que
essa é uma das raízes da função.
(d) Repetindo o mesmo procedimento para a linha de baixo, mas com um “chute inicial” diferente
de 0, o valor da raiz obtido em A4 é 4 e o zero em B4 assume o valor de -2.513 E-06.
37
“Teste de hipóteses” e “Atingir meta” para um valor diferente da raiz de uma função
Como você responderia à pergunta: Para que valor de x a função 3x3 - 10x2 - x + 1 resulta em
100? Você pode achar por tentativa e erro. Entre com algum valor para x em A1 e em B1 e entre com
a fórmula =3*A1^3-10*A1^2-A1+1.
Agora, varie A1 até o valor desejado. Você deve encontrar algo próximo de 4,8218 ou cansar
de buscar o resultado muito antes disso. O processo de tentativa e erro buscando a aproximação do
resultado é exatamente o que o Atingir Metas faz, mas de forma automática.
Note que, se você não conseguiu convergir para este valor, altere o seu “chute inicial”.
38
13 - Funções financeiras
O Excel possui uma grande quantidade de funções financeiras que podem ser úteis no nosso dia a dia
e também na empresa em que trabalhamos. A primeira função que podemos destacar é a função
Pagamento (PGTO). Esta função recebe pelo menos 3 parâmetros:
Por exemplo, desejo financiar um valor de R$1000 a uma taxa de juros de 2% ao mês e pagamento
em 12 meses:
PGTO(0,02;12;1000) = -R$94,56
-> o valor é negativo para indicar que este é o que estou descontando mensalmente de minha dívida.
Claro que o mais interessante é que nossos parâmetros sejam apresentados em uma célula para que
eu possa simular diversas situações. Assim, considere a seguinte planilha:
Note que demos os nomes Taxa, nper e VP para nossas células B2:B4 (ou seja, utilizamos a
denominação à esquerda delas). Novamente, o sinal negativo em nosso cálculo (-PGTO) faz com que
o valor mensal seja apresentado como positivo.
Exercícios
1. Pretendo realizar um empréstimo de R$5.000 a uma taxa de juros mensal de 2%. O máximo que posso pagar
é uma prestação de R$400. Em quantas parcelas devo realizar o meu empréstimo? A solução deste exercício
envolve o uso da função PGTO e da função Atingir Metas.
2. Uma empresa do setor comercial que trabalha no modelo do Simples nacional, pagando uma taxa
única de impostos de 4% sobre o valor bruto de suas vendas, paga a título de comissão x% do valor
39
da mercadoria vendida a seu vendedor. Para calcular o preço de venda, a empresa considera o custo
total do produto e adiciona uma margem de lucro (percentual) sobre este valor, e em seguida,
adiciona o valor da comissão.
Por exemplo, se a empresa trabalha com 20% de margem sobre o custo (sem levar em conta no custo
a comissão do vendedor) e o custo do produto é de R$1000, o valor de venda do produto será:
Sobre o valor da venda, você pagará 4% de impostos (R$48,00 no caso), o que levará seu lucro líquido
(após os impostos) a R$32,00.
O comerciante deseja ter um lucro final (após os impostos) de R$100. Qual deve ser sua margem?
Novamente, você deve utilizar o atingir metas para este cálculo.
O Ponto de Equilíbrio representa a receita de vendas que é suficiente para zerar os custos totais,
resultando em um lucro final zero (em outras palavras, é o mínimo de vendas que temos que fazer
para começar a ter lucro).
Na equação acima:
Custo Fixo = rateio dos custos (aluguel, salários, telefone, máquinas, etc - todas as despesas da
empresa que independem das vendas), conforme cada linha de produção (ou seja, qual a parcela dos
custos fixos deverá ser coberta pelo produto em questão) - este custo é chamado de fixo porque não
importa se eu vendo 1 ou 1000 unidades, tenho que arcar com este custo da mesma forma (você não
paga mais aluguel ou um salário direto maior para os empregados porque vendeu mais ou menos).
40
Ponto de Equilíbrio: cenário em que Receita Total é Igual ao Custo Total (ou seja, aquele em que o
Resultado é 0).
Considere que montamos uma pastelaria e que cada pastel é vendido por R$1,00. Sabemos que o
custo unitário para a produção de cada pastel é de R$0,60, e que o custo fixo é de R$1500 (por mês
- considerando o aluguel e o salário do pasteleiro - assuma que você é o caixa e só vai ficar com o
lucro...). Calcule quantos pasteis devemos vender mensalmente para atingir o ponto de equilíbrio.
Faça um segundo cálculo e verifique qual deveria ser o preço de venda de cada pastel para atingirmos
o ponto de equilíbrio vendendo 1000 pasteis por mês.
41
14- Solver para equações cúbicas
(a) Abra uma nova planilha e entre todos os valores exceto E4:E6.
(b) Selecione A4:B7 e crie os nome das células B4:B7 como ‘a’, ‘b’, ‘c_’, e ‘d’, respectivamente. Note
que nossa equação cúbica é 2x3 + x2 - 246x + 360 = 0.
(c) Em E4, digite a fórmula = a*D4^3+b*D4^2+c_*D4+d . Caso haja uma mensagem de erro, preste
atenção para a denominação do nome da variável c_ . Copie a fórmula para as células E5 e E6. Repare
que os valores para -20, 0 e 20 alternam-se entre valores negativos, positivos e positivos.
(d) Use o Goal Seek para achar a solução variando D4 para que E4 seja zero. Repita os passos para E5
e E6.
(e) As células D4:D6 devem mostram as três raízes -12, 1,5 e 10.
(f) Teste seu entendimento encontrando as raízes de 3x3 -12x2 -255x + 1120 = 0.
(h) Clique em E4 e selecione Dados/Solver. O suplemento do Solver deve ser habilitado antes.
(i) Certifique-se que Definir Célula Destino contenha a referência a $E$4, e que Valor de: esteja
selecionado e com o valor de zero.
(j) Células Variáveis deve conter D4, se você clicar na célula ao invés de digitar, ele vai mostrar $D$4.
42
(l) Repita os passos para o cálculo das outras raízes. Veja que o solver pode ser utilizado de forma
muito parecida com o Atingir Metas. Mas quais são as diferenças?
Importante: As versões mais recentes do Excel trazem a seleção automática de “Tornar Variáveis
irrestritas não negativas” -> Isto será importante na solução de nossos problemas de Pesquisa
Operacional. Porém, para os problemas como este, de encontrar raízes, isto pode ser um problema,
pois com esta opção ativada, não iremos encontrar as raízes negativas. Assim, desative esta opção!!
Opções do Solver
Dependendo da versão do Excel que você estiver utilizando, poderá ter uma visão diferenciada das
opções de configuração do Solver (parâmetros de convergência por exemplo). Considerando o Excel
2007, as opções são as apresentadas na figura abaixo:
Tempo máximo ajusta o limite temporal utilizado pelo Solver para resolver qualquer problema. O
valor default de 100 segundos é suficiente para resolver uma ampla gama de problemas atuais.
43
Iterações ajusta o limite no número de tentativas que o Solver utilizará para tentar chegar a uma
solução satisfatória.
Precisão. Um número entre 0 (zero) e 1 que especifica o grau de precisão com o qual as restrições
(incluindo restrições de número inteiro) serão atendidas. A precisão padrão é 0,000001. Um número
menor de casas decimais (por exemplo, 0,0001) indica um grau de precisão menor. Em geral, quanto
maior o grau de precisão especificado (menor o número), mais tempo o Solver levará para chegar às
soluções.
Presumir Modelo Linear. Selecionado para fazer o Solver supor que o modelo subjacente é linear.
Isso acelera o processo de solução, mas só deverá ser usado se todos os relacionamentos do modelo
forem lineares. O valor padrão é não selecionado.
Presumir não negativos. Quando selecionado faz com que o Solver suponha um limite inferior de 0
(zero) para todas as células variáveis de decisão que não tenham limites inferiores explícitos na caixa
de listagem Restrição (as células deverão conter valores não negativos). Quando não selecionada,
faz com que o Solver utilize somente os limites especificados na caixa de listagem Restrição.
Tolerância. Um número decimal entre 0 (zero) e 100 que especifica a tolerância de percentual Inteiro
Ideal. Esse argumento só se aplicará se restrições de número inteiro tiverem sido definidas; ele
especifica que o Solver poderá parar se encontrar uma solução de inteiro viável cujo objetivo esteja
dentro desse percentual do limite mais conhecido no objeto da solução ideal de inteiro verdadeiro.
Uma tolerância com percentual maior tenderia a acelerar o processo da solução.
Convergência. Um número entre 0 (zero) e 1 que especifica a tolerância de convergência para os
métodos Solução Não Linear GRG e Solução Evolutionary. Para o método GRG, quando a alteração
relativa no valor da célula de destino for menor do que essa tolerância nas cinco últimas iterações, o
Solver será interrompido. Para o método Evolucionário, quando 99% ou mais dos membros da
população tiverem valores "ajustados" cuja diferença relativa, que é percentual, for menor do que
essa tolerância, o Solver será interrompido. Em ambos os casos, o Solver exibirá a mensagem "O
Solver convergiu na solução atual. Todas as restrições foram atendidas".
Estimativa. Especifica a abordagem usada para obter estimativas iniciais das variáveis básicas em
cada pesquisa unidimensional: 1 representa estimativas de tangente e 2 representa estimativas
quadráticas. As estimativas de tangente usam extrapolação linear de um vetor de tangente. As
estimativas quadráticas usam extrapolação quadrática; isso pode melhorar os resultados para
problemas altamente não lineares. O valor padrão é 1 (estimativas de tangente).
Derivativas. Especifica a diferenciação direta ou a diferenciação central para estimativas de
derivativas parciais das funções objetivas e de restrição: 1 representa a diferenciação direta e 2
representa a diferenciação central. A diferenciação central exige mais recálculos de planilha, mas
pode ajudar com problemas que geram uma mensagem dizendo que o Solver não conseguiu
aprimorar a solução. Com restrições cujos valores sejam alterados rapidamente ao se aproximarem
de seus limites, use a diferenciação central. O valor padrão é 1 (diferenciação direta).
Pesquisar. Use as opções de Pesquisar para especificar o algoritmo de pesquisa que será usado em
cada iteração para decidir a direção da pesquisa: 1 representa o método de pesquisa Newton e 2
representa o método de pesquisa conjugado. Newton, que usa um método quasi-Newton, é o
método de pesquisa padrão.
44
Passo a passo. Apenas em versões mais recentes do Excel (2010 em diante). Quando selecionada,
permite que o Solver pause a cada solução de avaliação. Você pode passar uma macro para o Solver
a ser executada a cada pausa usando o argumento ShowRef da função SolverSolve . O padrão é que
esta opção não esteja selecionada, e assim, o Solver não pausa a cada solução de avaliação.
Escala. Se o objetivo ou as restrições forem diferentes por vários graus de magnitude, por exemplo,
maximizando o percentual de lucro com base em investimentos de milhões de dólares, defina essa
opção como True para fazer o Solver redimensionar internamente os valores do objetivo e da
restrição para ordens de magnitude semelhantes durante o cálculo. Se essa opção for False, o Solver
executará seus cálculos com os valores originais do objetivo e das restrições. O valor padrão é True.
Tamanho da População. True para fazer o Solver supor um limite inferior de 0 (zero) para todas as
células variáveis de decisão que não tenham limites inferiores explícitos na caixa de
listagem Restrição (as células deverão conter valores não negativos). False para fazer o Solver usar
somente os limites especificados na caixa de listagem Restrição.
RandomSeed. Um inteiro positivo especifica uma semente fixa para o gerador de números aleatórios
usado pelo métodoSolução Evolutionary e o método de inícios múltiplos para otimização global. Isso
significa que o Solve reencontrará a mesma solução sempre que for executado em um modelo que
não tenha sido alterado. Um valor zero especifica que o Solver deverá usar uma semente diferente
para o gerador de números aleatórios sempre que for executado, o que poderá gerar soluções
diferentes sempre que ele for executado em um modelo que não tenha sido alterado.
MultiStart. True para fazer o Solver usar o método de inícios múltiplos para otimização global com o
método Solução Não Linear GRG, quando SolverSolve for chamado. False para fazer o Solver
executar o método Solução GRG somente uma vez, sem inícios múltiplos, quando SolverSolve for
chamado.
RequireBounds. True para fazer com que o método Solução Evolutionary e o método de inícios
múltiplos retornem imediatamente de uma chamada a SolverSolve com um valor 18 se qualquer
uma das variáveis não tiver limites inferior e superior definidos. False para fazer esses métodos
tentarem resolver o problema sem limites em todas as variáveis.
MutationRate. Um número entre 0 (zero) e 1 que especifique a taxa na qual o método Solução
Evolutionary criará "mutações" em membros existentes da população. Uma taxa mais alta de
Mutação tende a aumentar a diversidade da população e pode gerar soluções melhores.
MaxSubproblems. O número máximo de subproblemas que o Solver explorará em problemas com
restrições de número inteiro, e problemas resolvidos por meio do método Solução Evolutionary. O
valor deve ser um inteiro positivo.
MaxIntegerSols. O número máximo de soluções viáveis (ou de inteiros viáveis) que o Solver
considerará em problemas com restrições de número inteiro e problemas resolvidos por meio do
método Solução Evolutionary. O valor deve ser um inteiro positivo.
SolveWithout. True para fazer o Solver ignorar todas as restrições de número inteiro e resolver o
"relaxamento" do problema. False para fazer o Solver usar as restrições de número inteiro na
resolução do problema.
MaxTimeNoImp. Quando o método Solução Evolutionary for usado, o tempo máximo (em
segundos) em que o Solver continuará a resolver sem encontrar soluções significativamente
melhoradas a serem adicionadas à população. O valor deve ser um número inteiro positivo.
45
Importante: ao resolver este problema utilizando GRG Não Linear, pode ser que cheguemos a um
resultado que, muito embora indicado pelo Excel que tenha convergido, na prática ficou longe do 0
que gostaríamos. Se este for o seu caso, altere a seguinte propriedade em Opções e refaça o seu cálculo:
“Usar Escala Automática” (remova a seleção do checkbox).
46
15- Solver para equações simultâneas
Um sistema linear é definido por n equações lineares nas quais cada equação tenha até n
variáveis ou incógnitas. Um exemplo simples pode ser:
2x + 3y – 3 = 0
3x + 2y – 5 =0
(a) Abra uma nova planilha e digite os valores conforme a figura abaixo, as fórmulas são:
Note que utilizamos os quadrados de f(x) e f(y) para evitar que haja resultados onde a soma de dois
números que não sejam 0 dê 0. Por exemplo, (2) + (-2) dá zero.
(b) Clique em D6 e utilize o Solver como anteriormente. Definir Célula Destino deve ser D6.
(c) Valor de deve ser zero, e Células Variáveis deve conter o intervalo B4:B5.
(d) Alternando os valores de x e y, o Solver deve dar os resultados 1,8 e -0,2.
47
Anexos:
48
16- Macros
Nós vamos começar explorando rapidamente a janela do Editor do Visual Basic (VBE).
Antes de iniciarmos, precisamos habilitar o uso do VBA, e devemos notar um ponto importante:
habilitar Macros e VBA no Excel abre uma porta perigosa para a invasão de vírus em nossa máquina
(os conhecidos “vírus de macro”). Para evitar problemas, mantenha seu antivírus sempre atualizado
e não abra qualquer email ou arquivo recebido, mesmo parecendo “inocente” ou um “aviso
importante”. Tome sempre cuidado, pois nosso mundo é cada vez mais digital e dependemos da
confiabilidade do que temos em nossas máquinas! Evite o uso de software pirata e sites de
compartilhamento de programas e chaves por exemplo.
Feito o alerta, para o nosso curso a partir deste momento, precisamos habilitar as macros e o VBA.
Portanto, siga os passos abaixo para esta tarefa, procurando “desfaze-la” quando não for mais
necessária (no final do seu trabalho, por exemplo).
1. Selecione Arquivo -> Opções -> Central de Confiabilidade (esta opção pode variar
ligeiramente, dependendo da sua versão do Excel; caso não a encontre aqui, utilize a Ajuda e
procure pela “Central de Confiabilidade”);
49
4. Clique em OK duas vezes.
Agora precisamos ativar também a aba de Desenvolvedor, onde ficará nosso código VBA.
6. Note que temos uma região onde constam as “Guias principais”. Nela, selecione também a
caixa referente a “Desenvolvedor” e clique em ok.
Pronto, nosso Excel está pronto para trabalharmos com Macros e VBA.
50
Uma Macro é uma sequência de operações que programamos em qualquer programa. Por
exemplo, imagine que tenha que criar mensalmente uma planilha com o seguinte formato:
Esta é uma tarefa que se repete mensalmente. Por simplicidade, eu posso criar uma Macro e
automatizar este processo de criação. Vamos aos passos:
b. Dê um nome à sua macro, por exemplo, MacroFormatação. Note que para nomear nossas
variáveis, macros, funções, etc, temos que seguir algumas regras: ao criar um nome
composto (ex: Nome Funcionário) nunca deixe espaço em branco entre suas palavras
(nosso nome deveria ser: NomeFuncionario ou Nome_Funcionario), evite acentos (nem
todas as linguagens aceitam), nunca iniciem por um número ou inclua caracteres especiais
no meio do nome ($, !, @, (, {, +, -, etc devem ser evitados – o único carácter especial que
está liberado é o “underline” (ou sobrescrito): _.
51
c. Note que além do nome, criamos um atalho para nossa macro. Ao escolhermos a letra
“F” para a macro, o Excel “nota” que a sequência CTRL F já existe (no Excel em inglês, CTRL
+ F representa a opção de buscar alguma coisa). Para uma lista completa dos atalhos do
Excel, faça uma busca no google por: “teclas atalho Excel”). Como dissemos, mesmo que
“CTRL F” não seja utilizado atualmente pelo Excel em português, para evitar conflitos
(veremos mais adiante que o Inglês é a língua que representa “tudo” em nossa
programação VBA), o Excel automaticamente sugere a mudança de nosso atalho para
“CTRL + SHIFT + F” (ou seja, você poderá pressionar as teclar Ctrl, Maiúsculas e F ao mesmo
tempo para executar posteriormente a macro). Mas vamos deixar isto para depois, por
hora, o que nos importa é o nome que estamos dando à macro para a chamarmos
posteriormente. Também podemos selecionar onde queremos guardar nossa macro.
Coloque ainda algum comentário que descreve o que sua macro fará. Por exemplo,
podemos dizer que ela “Formata a planilha para os nossos cursos mensais”.
d. Agora vamos formatar nossa planilha, siga estes passos (tudo que você fizer agora estará
sendo gravado)
52
a. Selecione em sua planilha de B2 a G12 (6 colunas e 11 linhas)
b. Selecione a opção de formatar célula (Aba Página inicial) e mude para a aba interna
de “Borda”
f. Marque as células das 2 primeiras linhas de sua tabela e formate o fundo com um
tom de cinza escuro (ou outra cor de sua preferência)
g. Marque as células CDE (mescladas) na linha 2 e G2 com uma cor diferente (cinza
claro, por exemplo)
i. Em F2: Ano:
j. Em C3: Aluno
k. Em D3: Nota 1
l. Em E3: Nota 2
m. Em F3: Média
n. Em F3: Faltas
o. Em G3: Situação
p. Agora vamos salvar nossa macro: Selecione Desenvolvedor -> Parar Gravação
q. Abra uma nova planilha e execute agora CTRL + SHIFT + F. Você deve ter sua
planilha formatada da forma como programou.
Você também pode executar a planilha assim: Desenvolvedor -> Macro -> Executar.
Exercício: Crie uma macro formatando uma planilha de gastos mensais com o seguinte
formato (adapte às suas necessidades e gosto pessoal, alterando as cores, tipo de letra e
outros detalhes):
53
PLANILHA DE GASTOS PESSOAIS
Despesa Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro NovembroDezembro
Condução
Refeição escola
Refeição trabalho
Outros alimentos
Material Escolar
Higiene e Limpeza
Prestação CB
Médico
Final de Semana
Reserva
TOTAL R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ -
Considere que na linha TOTAL você realiza uma soma de todos os itens da coluna (Ex: em
C13, coloque = SOMA(C2:cx12). Formate todas as células em que entrará com suas
despesas com valor monetário (R$). Utilize sua macro gravada para criar novas planilhas,
sempre com o mesmo formato. Voltaremos a tratar as macros posteriormente, este é um
passo inicial. Aprenderemos, inclusive, a alterar uma de nossas macros já salvas. Mas
antes... um pouco de VBA...
54
17- VBA
No capítulo anterior, criamos uma macro e nem chegamos a olhar o código gerado. Agora, vamos ver
um básico de programação em VBA, não relacionado diretamente às planilhas Excel. Posteriormente,
uniremos os dois capítulos.
Nosso objetivo agora é criar uma função “nova”, que não exista no Excel (ok, porque eu iria criar uma
função que já existe, não é mesmo?). Para exemplificar, imagine que queremos criar uma função que
receba os 3 lados de um triângulo qualquer e calcule sua área. Esta fórmula é dada por:
Pois bem, nosso objetivo é criar uma função que efetue este cálculo. Sem nos preocuparmos em
detalhes com a sintaxe, siga os seguintes passos:
(a) Chegamos à VBE a partir do Excel com o comando Desenvolvedor -> Editor (Em edições antigas to
Excel, pode estar em: Ferramentas->Macro->Visual Basic Editor) ou por meio do atalho [Alt]+[F11].
Certifique-se de selecionar “Modulo 1” e clique sobre o mesmo (se a opção de Módulo não estiver
presente, vá em Inserir -> Módulo). A figura abaixo mostra o Editor. É muito importante que você
escreva seu código em um módulo, e sempre em um módulo!
55
(b) De forma semelhante ao que ocorre com outros programas, temos um menu e uma barra de
ferramentas no topo de nossa janela. À direita, temos a janela de Projeto (sua janela pode ser um
pouco diferente, mas isto não é importante neste momento). A figura acima mostra dois projetos:
um para a folha de trabalho aberta Book1, e outro para o Analysis Tool Pak (“Pacote de ferramentas
de análise”). No seu caso, deve haver pelo menos o primeiro item, mas diferentemente do que ocorre
acima, você ainda não visualiza um item de macro no final – nós iremos inseri-lo brevemente.
(c) Na parte inferior à direita, você pode ver a Janela de Visualização Imediata (não é mostrada
acima). Caso não a esteja vendo, vá em Exibir -> Janela de Visualização Imediata (ou pressione CTRL
G).
(d) Para adicionarmos um modulo ao nosso projeto, vá na janela de Projeto e clique com um botão
direito sobre seu Projeto VBA (VBA Project Pasta 1) e selecione Inserir-> Módulo (ou, com o projeto
selecionado, vá em Inserir->Módulo a partir do menu). A janela de programação irá se abrir para que
você escreva sua macro.
(e) Antes de fazer especificamente a macro, retorne à janela do Excel com um destes métodos:
Para codificar uma função corretamente você precisa de duas habilidades. A primeira é a habilidade
de compor, utilizando símbolos matemáticos e a língua inglesa, o conjunto de regras que levará ao
resultado desejado. Esta tarefa é chamada de algoritmo. A segunda é a habilidade de traduzir o
algoritmo na linguagem Visual Basic. Da mesma forma que com todas as linguagens, tanto naturais
quanto de computador, a linguagem Visual Basic possui um conjunto de regras conhecidas como a
sintaxe da linguagem. A Figura abaixo apresenta a sintaxe para uma função definida pelo usuário.
56
[comandos]
[nome = expressão]
End Function
Os itens exibidos entre colchetes são opcionais. As palavras em negrito e itálico devem ser digitadas
como mostrado. Cada comando tem que ser iniciado em uma nova linha.
Se um comando for muito longo para uma única linha, digite um espaço e um caractere sublinhado e
complete o comando na linha seguinte. Este método não pode ser adotado para “quebrar” uma palavra.
Se você editar uma função de usuário já existente, cada planilha que utiliza esta função deverá ser
recalculada (F9) utilizando a nova definição.
Habilitar o uso de macros no Office representa uma vulnerabilidade muito grande. É relativamente
simples se criar um vírus que fique escondido e que seja executado automaticamente por uma macro.
Desta forma, versões mais recentes do Office vêm com as macros desabilitadas por padrão. O “Help”
(ajuda) do Excel mostra como habilitar as macros e fala um pouco sobre o risco que elas
representam. De forma geral, é aconselhável que você só habilite as macros pelo tempo necessário
para o seu desenvolvimento ou utilização.
Muitas vezes queremos levar nossas macros criadas em uma máquina (na escola, por exemplo) para
outra (em nossa casa). A forma correta de executar este procedimento é:
1. abrir o VBE
2. na janela do nosso projeto, clique com o botão direito do mouse sobre o módulo que você deseja
exportar (onde está a lógica de nossa sub/função/macro)
3. selecione a opção de “exportar arquivo” e defina o local onde quer salvar seu módulo (o nome
padrão será algo como “módulo1.bas”, ou seja seu programa fonte em basic
4. copie este arquivo para a nova máquina e execute a operação inversa, ou seja, abra o VBE e clique
em Arquivo -> Importar Arquivo (você também poderia ter exportado o arquivo a partir da opção
Arquivo -> Exportar Arquivo).
57
Exercício: Codificando nossa função
Vamos agora escrever o código de nossa função para calcular a área do triângulo.
(a) Use Alt + F11 para abrir a janela do VBE, caso não esteja nela. Clique no Módulo 1 na janela de
Projeto. Note que o título da janela deve ser ExercicioMacro.xls – [Módulo 1 (Codigo)]. Um dos erros
mais comuns que os iniciantes em VBA cometem é escrever seu código no local errado. Para os
nossos propósitos, o único local adequado para isto é em um módulo.
Digite as linhas abaixo, exceto os números das linhas (que estão colocados aqui apenas para facilitar
nossa discussão na sequência), na janela. Note que algumas “palavras” estão em português e outras
estão em inglês. Você pode manter o texto todo em inglês, mas não pode traduzir tudo para o
Português....
1
2 Function TriArea(a, b, c as Double) as Double
3 Dim sp ' sp é o semiperímetro do triangulo
4
5 sp = (a + b + c) / 2
6
7 End Function
8 ' Calcular a área do triangulo, dados seus três lados
9 TriArea = VBA.sqr(sp * (sp – a)*(sp – b)*(sp – c)) ' Cálculo da área
(b) A sintaxe de um módulo pode ser checada com o comando Debug->Compile VBA Project (ou,
Depurar->Compilar VBAProject). Se seu projeto compilou corretamente, parabéns. Porém, se você
foi um bom aluno e copiou o programa como colocado acima, terá um erro:
58
Reposicione o conteúdo de sua linha 7 para a linha 4. “End Function” encerra nossa função, e
nenhum conteúdo dela deve ficar fora da mesma. Você pode ter tido outro erro de digitação (ou de
lógica), procure corrigir e compile sua função. Após corrigir, volte à sua planilha e utilize sua nova
função. Por exemplo, na célula A1 escreva : “=TriArea(3, 4, 5)” e veja o resultado (você não deve
incluir as aspas).
O primeiro tipo de erro que podemos ter em qualquer programa é de sintaxe, como este que tivemos
acima. Isto significa que o nosso programa não irá compilar e não poderá ser executado pelo Excel
(ou pelo computador, de uma forma mais geral). Cometemos um erro de sintaxe por equívoco na
digitação ou desconhecimento da linguagem. Com o passar do tempo, você cometerá cada vez
menos erros por desconhecimento da linguagem, mas sempre estamos sujeitos a erros de digitação.
Você verá que o VBE e de forma mais abrangente os nossos Ambientes modernos de
desenvolvimento (como o Microsoft Visual Studio para C#/VB, o Eclipse e o NetBeans para Java, entre
outros) facilitam bastante nossa vida neste sentido. Erros de sintaxe acontecem, mas são
relativamente fáceis de corrigir (quanto mais conhecimento da sintaxe, menos erros).
O segundo tipo de erro comum é mais complexo: trata-se de um erro de lógica. O grande problema
neste caso é que aqui o seu programa compila normalmente (não tem erros de sintaxe), porém, ele
não faz o que você esperava que ele fizesse. Pode ser um caso simples, em que o cálculo da área do
triângulo foi codificado errado e seu cálculo levou a um resultado errado (você corrige este tipo de
erro testando seu programa/função ao terminar de codificá-la e compilá-la com valores conhecidos
e esperados). Um segundo tipo de problema pode acontecer quando não levamos em conta que os
usuários do nosso programa/função tem mais imaginação do que esperávamos a princípio. Por
exemplo, qual será o resultado da sua função do cálculo da área do triângulo se você fornecer como
lados do triângulo os valores: 1, 2, 10? Qual é a área deste triângulo?
Antes de mais nada, estes valores para os “lados” não formam efetivamente um triângulo. A forma
como sua função até este momento entende este resultado é dando um erro na resposta (#valor).
Você consegue ver em que ponto do cálculo este erro aconteceu?
59
O fato é que precisamos corrigir a nossa função para que ele identifique se os dados que fornecemos
representam efetivamente um triângulo. Como podemos saber se é este o caso? Uma forma é que a
soma dos lados maiores tem que ser maior que o lado maior. Assim, supondo que o lado maior seja
“a”, teremos um triângulo se b+c > a. Agora, podemos resolver a nossa função de várias formas,
desde que saibamos como perguntar o “se”. A linguagem VB (assim como 10 em cada 10 linguagens
de programação criadas pelo homem, cada qual com suas variações) possui o comando
If (condição) Then
...
End If
Opcionalmente, podemos ter a execução de uma sequencia em caso de falha na condição através do
Else
If (condição) Then
...
Else
...
End If
Ou ainda do ElseIf
If (condição) Then
...
...
End If
60
(d) Retorne à sua planilha e na célula E4 entre com a formula =TRIAREA(a4, b4, c4). Se você preferir,
pode utilizar o Assistente de Função (Inserir -> Função ou o símbolo de função na sua barra de
ferramentas) – note que sua função irá surgir na categoria “Definidas pelo Usuário”:
61
(e) Os valores das colunas D e E devem ser idênticos (utilizamos a mesma fórmula!). Se eles diferirem,
retorne à VBE e reveja sua função. Lembre-se de pressionar F9 na sua planilha após alterar sua função
(para que a mesma seja recalculada). Salve seu projeto.
Muito embora esta seja uma função muito simples, ela demonstra algumas características
importantes do Visual Basic. Vamos examinar cada linha usada para documentar nossa função acima:
1 Esta é uma linha em branco – linhas em branco são ignoradas pela compilação de nossa função.
2 Este é o começo real de nossa função, que se inicia com a palavra reservada Function. As palavras
reservadas são exibidas em azul pelo nosso editor. Nós demos o nome de Triarea à nossa função e
informamos que ela possui três argumentos. Você pode escolher quase que qualquer nome para sua
função (inclusive utilizando português, mas sem acentos e ç). Você não pode utilizar nomes de outras
funções ou de uma planilha existente. Os argumentos dão nome os valores passados para nossa
função pela planilha. Na planilha, nossa função é invocada ou chamada utilizando:
formula=TRIAREA(A4; B4; C4). No momento da chamada de nossa função, os argumentos são
passados por posição, e não por nome! Assim, o valor na célula A4 e passado para a variável lado1
na função.
3 Este é um comando de atribuição; atribuímos um valor à variável alfa. É muito importante notar
que este comando representa uma atribuição do valor do lado direito da igualdade à variável do
lado esquerdo. Nós não podemos escrever nunca um cálculo do lado esquerdo do sinal de atribuição
(=) e uma variável do lado direito (1+2 = c).
Nesta linha ainda, desejamos converter nosso ângulo de graus para radianos, e para isto, utilizamos
a função RADIANOS. Esta função é definida na nossa planilha, e por isto, precisamos referenciar a
planilha e então o nome da função. Você deve ter notado que tanto o nome da planilha quanto da
função estão em inglês – e tem que ser realmente desta forma. Para utilizar funções pré-definidas na
planilha, você precisará sempre referenciar “WorksheetFunction.” você irá notar que logo após
digitar o “.” após “WorksheetFunction”, todas as funções disponíveis na planilha irão surgir em ordem
62
alfabética. Nós poderíamos ter utilizado a atribuição: “Alfa = ângulo * 3.1416/180.0”, mas optamos
por utilizar a função RADIANS.
Application. FunctionName.
Ainda na nossa linha 3, nós adicionamos alguma documentação. Tudo que vier após um apóstrofo (´)
em qualquer linha, será interpretado como um comentário e será ignorado no processo de
compilação. Note que um comentário pode ser apenas parte de uma linha, ou uma linha inteira,
dependendo da localização do apóstrofo.
4. A linha 4 acima está em branco, e será ignorada pelo compilador. Posteriormente, mova sua linha
7 para cá.
5. Nesta linha, temos o encerramento da função. Toda função tem que terminar com o comando
“End Function” (sem aspas). Após esta linha, podemos ter a definição de outra função, mas não
podemos continuar o código de nossa função.
6. A linha 6 contém um novo comentário. Ele está mal localizado, por estar após o término de nossa
função. Porém, como um comentário é ignorado na compilação, ele não deverá causar erros. O ideal
é que seja movido para “dentro” de nossa função, na linha 4.
7. Temos aqui uma atribuição. A função recebe o valor que será retornado para a planilha.
63
Toda função tem que conter pelo menos um comando que assinala um valor para a função. A função
trigonométrica Sin é disponível no Visual Basic. Neste exemplo, foi utilizado VBA.Sin para que a lista
de funções disponíveis no VB para ser utilizadas fosse apresentada. Note que o comando Triaria =
0.5*lado1*lado2*Sin(alfa) seria sintaxicamente correta.
Procure utilizar nomes significativos e curtos para suas variáveis, funções e argumetos. As três regras
abaixo devem ser sempre seguidas:
(i) O primeiro caractere tem que ser uma letra. O Visual Basic não diferencia entre maiúsculas e
minúsculas – outras linguagens (tais como: C/C++, Java e C#) diferenciam, portanto, cuidado com
este aspecto! Se você utilizar o nome teste em um local e Teste ou tEstE em outro, o Editor do Visual
Basic irá alterar sua grafia, mantendo a primeira adotada.
(ii) Um nome não pode contér um espaço em branco, um ponto, ponto de exclamação e os sinais @,
$ ou #.
(iii) Um nome não pode conter uma palavra reservada do VBA. Geralmente, o VBA exibe suas palavras
reservadas em azul. Uma lista completa destas palavras pode ser obtida realizando uma busca por
“palavras reservadas” (ou procurando por vba na ajuda do Excel). Você irá se acostumar com estas
palavras com o seu uso, mas de qualquer forma, se você tentar utilizar uma palavra, e ela for
destacada em azul, é uma boa indicação de que se trata de uma palavra reservada. Uma mensagem
de erro também poderá ser exibida indicando que um identificador é esperado (“Identifier
expected”), ou outro erro semelhante.
As funções matemáticas disponíveis no VBA são mostradas na figura abaixo. Detalhes de outras
funções podem ser obtidos procurando-se por “String functions” ou “Date functions” na Ajuda do
VBA.
Ao copiar fórmulas a partir da ajuda do VBA, lembre-se de utilizar comandos na seguinte forma:
Arcsin = Atn(...)
E não
Arcsin(X) = Atn(...).
~~
64
Atn(x) Arco tangente de x. Outras funções inversas podem ser computadas utilizando identidades
trigonométricas, tais como:
Arcsin(X) = Atn(X / Sqr(-X * X + 1)). Para mais informações, faça uma busca na ajuda do Visual Basic por
Derived math functions (funções matemáticas derivadas).
Cos(x) O cosseno de x, onde x é expresso em radianos.
Exp(x) ex.
Fix(x) Retorna a porção inteira de x. Se x é negativo, Fix irá retornar o primeiro negativo maior
ou igual a x; por exemplo, Fix(-7.3) retorna -7. Veja também Int.
Int(x) Retorna a porção inteira de x. Se x é negative, Int retorna o primeiro inteiro negativo que
seja menor ou igual a x; por exemplo, lnt(-7.3) retorna -8. Veja também Fix.
Log(x) O valor do algoritmo natural de x. Note que esta definição é diferente da utilizada pela
função Log do Excel, que irá retornar o logaritmo base 10 se houver apenas um argument para Log. Em
VBA, o logaritmo de x na base n pode ser calculado utilizando-se o seguinte comando: y = Log(x)/Log(n).
Mod Em Visual Basic, este é um operador, não uma função, mas opera de modo similar à função
Excel MOD. É utilizada na forma: número Mod divisor e retorna o resto da divisão de número por divisor,
após arredondar valores em ponto flutuante para inteiros. Note que o Excel e o VBA retornam valores
diferentes quando o número e o divisor têm sinais contrários. Veja a ajuda para detalhes.
Rnd(x) Retorna um número aleatório entre 0 e 1.
Sgn(x) Retorna - 1, 0 ou 1 dependendo se x tem um valor negativo, zero ou positivo.
Sin(x) O seno de x, onde x é expresso em radianos.
Sqr(x) Raiz quadrado de x.
Tan(x) A tangente de x.
Você não pode utilizar uma função da planilha quando o VBA fornece uma função equivalente,
mesmo se o nome não for o mesmo. Portanto, as funções trigonométricas sen (sin), cos ou tan podem
ser utilizados, muito embora seja possível a utilização de Acos e Asin (arco-cosseno e arco-seno, que
não existem diretamente no VBA).
A função MOD do Excel pode ser utilizada (lembrando sempre que para utilizar uma função do Excel
precisamos precedê-la de “WorksheetFuncion.”), pois MOD no VBA é um operador e não uma função
(funções recebem parâmetros – mesmo que não haja parâmetros, passamos os parêntesis em branco
“( )”, enquanto operadores representam operações e não podem ter parâmetros).
Se você tentar utilizar uma função de usuário que referencia uma função indisponível (por exemplo,
WorksheetFunction.Sen(Alfa)), a célula da planilha em que sua função de usuário é chamada irá
65
apresentar o erro “#VALUE!”. Outros erros poderão ocorrer no uso de funções no VBA, e um curso
completo sobre VBA seria necessário para sua completa discussão.
Ao trabalharmos com Macros e VBA, é corriqueiro cometermos algum erro que venha a "travar"
nossa planilha.Por esta razão, vamos "forçar" um erro comum e ver como podemos resolver este
problema quando o mesmo ocorrer na prática, e por descuido.
Programming Structures
In short: an error in a module can cause a worksheet to lock. The
remedy is to use the command RunlReset to reset the module.
This exercise should help you with syntax error. Another type of
problem is the logical error. This occurs when you have coded your
function correctly as far Visual Basic is concerned (the syntax is
correct) but the wrong answer results from an error in the
algorithm. Some techniques for solving this type of problem are
explored in Exercise 12.
The normal flow in any computer program (and our function is a
66
small computer program) is from line to line. This is called a
sequential structure. In Exercise 2 (Figure 8.6) line 3 is executed,
followed by line 4, then line 5. Anything that changes this flow is
called a control structure. In the next exercise we look at a
branching or decision structure. This structure gives the program
two or more alternative paths to follow depending on the value of
a variable. The other control structure is the repetition or looping
structure which we explore in later exercises. The code within a
loop is executed one or more times.
67
ANEXO- Fórmulas diversas:
Exemplos de fórmulas:
sem argumentos =PI()
1 argumento =RAIZ(A2) ou =RAIZ(A2/2)
2 argumentos =ARRED(A2;2) - note que há diversas variantes para as funções de arredondamento,
veja na ajuda
número variável de parâmetros =SOMA(A1 :A10) ou =SOMA(A1 :A10; B3; B4)
Célula e faixa =SOMA(A1, B1:B10)
Faixa nomeada =SOMA(Xvalues)
Célula e constante =MÁXIMO(A1; 20)
Constante =LOG10(9,81) – logaritmo base 10
Expressão =LOG(A1/2, 10) – logaritmo recebendo a base também como parâmetro
=SENO(RADIANOS(A1))
=2*PI() retorna 6,283185...
=2,5*SOMA(A1:A20)/RAIZ(B1) fórmula com duas funções e uma constante
Erros comuns:
#DIV/O! divisão por zero.
#NOME?A formula contém uma variável ou função indefinida (verifique se a digitou corretamente) ,
ou um espaço em branco entre o nome da função e a abertura dos parêntesis).
#N/A Nenhum valor disponível.
#NULL! Um resultado não possui valor.
#NUM! Extravasamento numérico (Overflow). Por exemplo, uma célula com =RAIZ(Z1) com Z1
negativo.
#REF! Referência inválida em célula Invalid cell reference.
#VALOR! Tipo de argumento inválido. Por exemplo, célula com =LN(Z1) com Z1 contendo um valor
alfanumérico (texto).
Funções trigonométricas:
Funções Exponenciais:
(a) =EXP(2) retorna e2.
(b) =LN(5) retorna o logaritmo natural de 5.
(c) =LOG10(5), =LOG(5,10) e =LOG(5) todos retornam o log de 5 na base 10.
(d) =LOG(8,2) retorna 3, que é o log de 8 na base 2.
68
Operadores lógicos de comparação:
= igual a
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a
< > diferente de ou “não igual”
Funções de arredondamento:
69
70