You are on page 1of 70

Apostila de Introdução ao Excel

APOSTILA DE INTRODUÇÃO AO EXCEL 1

1- CÁLCULOS BÁSICOS 4

2 –TOMADA DE DECISÃO (SE) 6

3- REFERENCIA ABSOLUTA E RELATIVA. 9

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

9 - TRABALHOS COM MATRIZES 28

RESOLUÇÃO DE SISTEMAS LINEARES UTILIZANDO MATRIZES 28

10 - SOLUÇÃO PARA EQUAÇÃO QUADRÁTICA 32

11- ENCONTRANDO RAÍZES DE EQUAÇÕES 35

MÉTODO DA BISSECÇÃO 35

12- “TESTE DE HIPÓTESES” E “ATINGIR META” 37

13- ATINGIR METAS PARA RESOLUÇÃO DE UMA EQUAÇÃO DE SEGUNDO GRAU 37

14 - FUNÇÕES FINANCEIRAS 39

EXERCÍCIOS 39

14- SOLVER PARA EQUAÇÕES CÚBICAS 42

OPÇÕES DO SOLVER 43

15- SOLVER PARA EQUAÇÕES SIMULTÂNEAS 47

1
ANEXO- FÓRMULAS DIVERSAS: 68

Introdução – informações iniciais

V4 – 3 finalizada em 4/8/16 – inclui exercício dos salários para 2016 após SE (Ex 2).

V4 – 4 iniciada em 25/8/16 – remove antecipação do SE no exercício 1.

V4- 5 iniciada em 8/9 – revisão geral

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).

V4-7 iniciada em 6/11 - Atualização do VBA + exercício de Laplace (incompleto ainda)

V4-8 corrigindo o cálculo da margem sobre o custo

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.

Corrigidos alguns erros em VBA-

V4-9 (iniciada em 16/11/17)

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.

Os tópicos abordados são os seguintes:

1. Cálculos básicos em planilhas


2. Utilização de funções nos cálculos
3. Tomada de decisão (se)
4. Utilização de funções de Procura
5. Trabalho com matrizes
6. Solução de Equações (raízes)
7. Utilização do Atingir Metas
8. Utilização do Solver
9. VBA

3
1- Cálculos básicos
Exercício dos resistores

O objetivo desse exercício é montar uma planilha para o cálculo da resistência


equivalente aos resistores em paralelo conforme figura abaixo:

(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 “=”?

Exercícios adicionais relacionados à tomada de decisão:

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.

3. Um funcionário de qualquer empresa tem descontado de seu salário bruto ao menos 2


contribuições federais: o imposto de renda (IRPF) e o desconto da seguridade social
(INSS). Vamos inicialmente calcular o desconto do INSS. Todo ano, a Receita Federal
publica novas tabelas de descontos levando em consideração o que o Governo e o
Congresso aprova (baseados na inflação). Baseado na tabela do INSS válida para 2016
abaixo, calcule o desconto do INSS a partir de um salário bruto que um usuário de sua
planilha forneça:

Salário bruto Alíquota

Até R$1.556,94 8%

De R$1556,95 a R$2594,92 9%

De R$2594,93 a R$5189,82 11%

Acima de R$5189,83 11% sobre R$5189,82 (=R$570,88)

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.

4. Como dissemos anteriormente, o primeiro desconto calculado sobre o salário de um


empregado é o INSS. Em seguida, deve-se calcular o desconto do IRPF. Para isto, o salário
considerado não é o bruto, mas o denominado "Salário de Contribuição", que é dado
por:
Salario_de_contribuicao = salario_bruto – descINSS – desc_por_filho * num_de_filhos

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

que nos leva a:


Salario_de_contribuicao = R$2500 – R$225 – 2*R$189,59 = R$1985,82
Agora que você entendeu a lógica, faça o cálculo do salário de contribuição para
qualquer salário bruto. Sugestão: coloque os valores intermediários (como o desconto
do INSS) em células específicas.

5. Falta agora o desconto do Imposto de Renda. O desconto do IR é calculado a partir da


tabela abaixo:

Salário de Contribuição Alíquota IR Deduzir

Até R$1903,98 ISENTO -

De R$1903,99 a 7,5% 142,80


R$2826,65

De R$2826,66 a 15% 354,80


R$3751,05

De R$3751,06 a 22,5% 636,13


R$4664,68

Acima de R$4664,69 27,5% 869,36

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

E o salário líquido é dado por:


Salário_liquido = salário_bruto – descINSS – descIR = R$2275.

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

E portanto, seu líquido seria de:


Salário_liquido = 2500 – 225 – 13,61 = R$2261,39
Agora, calcule o salário líquido para qualquer valor de salário bruto.

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:

E pressionando repetidamente, teremos a fórmula sendo alterada 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.

Precisamos modificar a formula em B9 antes de sair copiando para o intervalo B9:H18.


Considerações: (i) Na fórmula, B4 se refere ao valor da constante geral dos gases, D4 à constante
a e E4 à constante b. Essas referências não devem mudar quando a fórmula for copiada; (ii) Por
outro lado, B8 se refere à temperatura e temos uma faixa de variações na linha 8.
Quando a formula em B9 é copiada, a referência a B8 deve permanecer à linha 8 mas a
coluna deve mudar; precisamos mudar B8 para B$8; e (iii) As referências à A9 devem continuar
a apontar os valores de volume na coluna A mas a conforme a fórmula é copiada, a linha deve
mudar. Logo, precisamos usar $A9.
Resumindo, Precisamos editar a formula para =($B$4*B$8)/($A9-$E$4)-
$D$4/($A9*$A9). Uma forma de trabalhar essas referências é clicar em F2 para editar a fórmula
e F4 para ver as possíveis variações de cada parâmetro.

(d) Copie B9 preenchendo as células abaixo.

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:

E selecione a opção Subscrito:

14
4- Nomeando variáveis

Ao invés de usar as referências absolutas às células, podemos criar nomes, ou seja,


variáveis, e utilizá-los sempre que quisermos com a facilidade de usar nomes mais fáceis de
decorar.

(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.

(d) Em B9 digite a fórmula =(R_*B$8)/($A9-b)-a/($A9^2). Copie para B9:Hl8.

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

Num determinado momento, um geólogo precisa classificar amostras de acordo com a


concentração de minério em cada amostra. Amostras entre 50 e 59 ppm são consideradas de baixo
teor, de 60 a 79 de média qualidade, de 80 a 99 alta concentração e acima disso, muito alta.

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.

(c) Na célula C5, podemos alterar a fórmula para =SE(B5>=50; PROCH(B5;$D$2:$H$3;2;


VERDADEIRO); “”).

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))))))

Ao invés deste comando, no entanto, podemos simplesmente utilizar a PROCV:

= PROCV(C4; J9:L14; 2; FALSO)

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

1. Considere a seguinte tabela de cargos e salários da empresa “Pagamal SA”:

Registro Nome Cargo Salário


1 Maria Aux Administrativo R$1.200,00
2 Joana Secretária R$1.500,00
3 Malaquias Gerente R$4.200,00
4 Ana Cláudia Assistente Vendas R$1.350,00
5 Paulo Recursos Humanos R$1.000,00

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.

(c) Selecione o intervalo I4:K6 e digite =MATRIZ.MULT(A4:C6;E4:G6) na barra de fórmulas,


para finalizar não dê ENTER, mas clique Shift+Ctrl+Enter.

Outras operações de matrizes:

Resolução de sistemas lineares utilizando matrizes

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

Este sistema pode ser escrito, na forma matricial como:

𝐴𝑋 = 𝐵

Onde
2 3
𝐴=
3 2

28
𝑥
𝑋= 𝑦

3
𝐵=
5

Se multiplicarmos nossa equação matricial pela inversa de A, A-1, teremos:

𝐴. 𝐴−1 𝑋 = 𝐴−1 𝐵

Mas como
𝐴. 𝐴−1 = 𝐼

1 0
Onde I é a matriz identidade (neste caso, 𝐼 = ).
0 1

E portanto, temos que:

𝑋 = 𝐴−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.

A inversão da matriz é data pela função MATRIZ.INVERSO no Excel.

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:

E, para finalizar, calculamos nossa matriz X, ou seja, resolvemos o sistema, utilizando


matriz.mult para a multiplicação das matrizes passadas como parâmetros.

Como exercício complementar, resolva o seguinte sistema de equações lineares:

x1 + x2 + x3 + x4 + x5 +x6 +x7 + x8 + x9 +x10 = 55

x1 + 2 x2 +3 x3 + 6x4 + 4x5 +5x6 +2x7 + x8 +0 x9 +4x10 = 150

8x1 + x2 +0 x3 + 0x4 + 0x5 + 0x6 + x7 + x8 + x9 + 4x10 = 74

11x1 + 5x2 + x3 + 3x4 + x5 +x6 + 8x7 + 5x8 + 8x9 + 6x10 = 275

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

Considere a equação de difusão de calor em coordenadas cartesianas abaixo:

 T  T  T T
(k )  (k )  (k )  q  c
x x y y z z t

Podemos fazer algumas aproximações como:

1. Supor que o sistema não possui fontes de calor (𝑞̇ = 0)

2. Supor que a transmissão é bidimensional (T independe de z)

𝜕𝑇
3. Supor que o sistema está em estado estacionário ( = 0)
𝜕𝑡

4. Supor que a condutividade térmica é isotrópica (k independe de x e y)

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

O valor b 2  4ac é conhecido como discriminante porque determina o número de raízes


da equação (0, 1 ou 2).

(a) Entre os valores mostrados na figura abaixo para o intervalo A1:C3.

(b) Selecione A2:C3 e “crie Nomes a partir da seleção”


(c) Digite disc (discriminante) em E2.
(d) Em E3 entre a fórmula =b^2-4*a*c_ . Preste atenção nos nomes que foram criados. Em geral,
“c” acaba sendo substituído por “c_”.
(e) Crie o nome disc para a célula E3.
(f) Ignore temporariamente as entradas em A5, B5, A6 e C6 que se encontram na figura.
(g) Digite essas fórmulas em B6 e D6.

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) Abra um novo arquivo e salve-o. Digite o texto entre A1:F3.


(b) Na linha 4 entre:
A4: 0,5 O primeiro valor de a
B4: 1 O primeiro valor de b
C4: =(A4+B4)/2 Calcula o ponto médio m
D4: =EXP(-A4) - SEN(A4) Calcula o valor de f(a)
E4: =EXP(-B4) - SEN(B4) Calcula o valor de f(b)
F4: =EXP(-C4) - SEN(C4) Calcula o valor de f(m)

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.

(a) Inicie uma nova planilha.


(b) Após digitar qualquer valor numérico em A1, digite a fórmula =3*A1^3-10*A1^2-A1+1 em B1.
(c) Clique em dados/teste de hipóteses/atingir metas.

(d) A resposta deve aparecer na célula A1 como sendo 4,82182065565117.

Note que, se você não conseguiu convergir para este valor, altere o seu “chute inicial”.

Porque você pode não atingir o valor proposto?


Há algumas razões. Primeiro porque pode não existir (imagine a busca por uma raiz de uma equação
que não possui raízes reais). Em segundo lugar, pela forma como o Atingir Metas funciona, você pode
cair em uma região que o fará buscar “na direção errada”, ou ficar em um “vale”, e o atingir metas fica
testando valores dentro desta região, e não efetivamente uma raiz (ou valor buscado para a função)
neste intervalo. Neste caso, altere o chute inicial, da mesma forma como foi feito para obter as 3 raízes
anteriormente.

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:

Taxa -> taxa de juros

Nper -> número de prestações

VP -> Valor presente

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á:

R$1.000 * 1,20 = R$1.200 (o vendedor receberá R$120,00 de comissão e o lucro bruto do


comerciante será de R$80,00 = R$1200 - R$120 - R$1000).

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.

3. Exercício com Cálculo do Ponto de Equilíbrio.

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).

O Resultado de uma operação da empresa é dado por:

Resultado = (Receita Total) - (Custo Total)

E o ponto de equilíbrio é justamente o cenário em que o Resultado é zero.

Na equação acima:

Receita Total = (Preço unitário de venda) * (Quantidade vendida)

Custo Total = (Custo Fixo) + (Custo Variável)

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).

Custo Variável = (Custo de fabricação ou aquisição de cada unidade do produto) * (quantidade


vendida). Já o custo variável depende de quanto eu vendo ou produzo. Por exemplo, matéria prima.

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

Vamos agora resolver uma equação cúbica.

(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.

(g) Volte a digitar -20, 0 e 20 em D4:D6.

(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.

(k) Clique em resolver. A tela abaixo deve aparecer.

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.

Opções presentes em versões mais recentes do Excel/Solver

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:

C4: =2*B4 + 3*B5 - 3 primeira equação


C5: =3*B4 + 2*B5 - 5 segunda equação
D4: =C4^2
D5: =C5^2
D6: =D4+D

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”);

2. Selecione Configurações da Central de Confiabilidade

3. Selecione Configurações de Macro e habilite a opção “Habilitar todas as macros”.

49
4. Clique em OK duas vezes.

Agora precisamos ativar também a aba de Desenvolvedor, onde ficará nosso código VBA.

5. Selecione Arquivo -> Opções -> Personalizar Faixa de Opções

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:

Nome do curso: Ano:


Aluno Nota 1 Nota 2 Média Faltas Situação

Esta é uma tarefa que se repete mensalmente. Por simplicidade, eu posso criar uma Macro e
automatizar este processo de criação. Vamos aos passos:

a. Na aba de Desenvolvimento, selecione Gravar Macro

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”

c. Formate o contorno externo com uma linha grossa

d. Formate as linhas internas com uma linha fina

e. Mescle e centralize as células C2-E2

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)

h. Em B2 escreva: Nome do Curso:

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:

𝐴𝑟𝑒𝑎 = √𝑠𝑝 ∗ (𝑠𝑝 – 𝑎) ∗ (𝑠𝑝 – 𝑏) ∗ (𝑠𝑝 – 𝑐)

Onde sp é o semiperímetro do triângulo (sp = (a + b + c) / 2), e os lados do triângulo são a, b e c. Esta


fórmula é conhecida como “Fórmula de Heron”.

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:

(i) clique no ícone Microsoft Excel na barra de tarefas do Windows,

(ii) clique no ícone Microsoft Excel na barra de ferramentas do VBE, ou

(iii) ALT + F11. Salve a sua planilha como ExercicioMacro.xls.

Sintaxe para uma Função

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.

Function nome [(list_args)][As type]


[comandos]
[nome = expressão]
[Exit Function]

56
[comandos]
[nome = expressão]
End Function

nome = O nome que você deseja dar a esta função.


list_args = Lista dos argumentos passados para a função. Os argumentos são separados uns dos
outros por vírgulas.
Type = O tipo do dado retornado pela função.
Comandos = Um ou mais comandos válidos do Visual Basic.
Expressão = Uma expressão para ajustar o valor a ser retornado pela função.

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.

IMPORTANTE: HABILITANDO AS MACROS A PARTIR DO OFFICE 2007

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.

IMPORTANTE: COMO TRANSFERIR SUAS MACROS E PROGRAMAS VBA DE UMA


MÁQUINA A OUTRA

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

...

ElseIf (segunda condição) Then

...

EndIf ‘ fim do If do Else

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”:

E copie o conteúdo para as linhas D5 e D6.

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.

A sintaxe completa para referenciar funções das planilhas é:

Application. WorksheetFunction.FunctionName, ma a primeira palavra pode ser omitida. Por


compatibilidade com versões antigas do Excel, você também pode escrever simplesmente:

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.

Nomeando Funções e Variáveis

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.

Funções da Planilha e VBA

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(...).
~~

Abs(x) Valor absoluto de x (módulo).

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).

Relembrando, ao digitar em um módulo “WorksheetFuncion.”, somos apresentados a uma lista de


funções do Excel, enquanto que ao digitar “VBA.” neste mesmo módulo, somos apresentados a uma
lista de funções do VBA.

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.

Quando algo sai errado...

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.

Exercise 3: When Things Go Wrong


Recalling the adage ‘To err is human, but to really mess up you
need a computer’, we will make an error in a module and lock our
worksheet. Do not worry, we can fix the problem. It is very likely
that you will accidentally make such an error, so it is good to know
what is needed to correct it.
(a) Open the VBA Editor and change line 4 by replacing the equal
sign by a minus sign. Do not p r1e-(ss and do not use
-De buglcompile. Just return to the worksheet.
(b) Press [F9j to recalculate the worksheet. Microsoft Excel
returns you to the VBA Editor window and displays an error
dialog box. Click the OK button. Note that the function header
is highlighted in yellow. Correct the error by replacing the
minus sign by an equal sign. The yellow highlighting does not
disappear.
(c) Return to the worksheet. Try to do something like changing the
active cell. Nothing works; the worksheet (indeed the whole
workbook) is locked.
(d) Return to the VBA Editor and use the command RunlKeset to
remove the highlighting. Now when you go to the worksheet
and press (F9j all is well again.
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.

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.

Exercise 4: The IF Structure

The function sin(x)/x presents a minor problem in that we cannot


compute its value by simple division when x = 0. However, it is
known that sin(x)/x = 1 when x = 0. So we need one method for
the calculation when x = 0 and another method for all other cases.
On a worksheet we would use =IF(AI=O, I, SIN(Al)/Al). The same
type of construction is used in a macro using the IF ... ELSE
structure whose syntax is shown in Figure 8.8. The items enclosed
in square brackets are optional. For details on conditions refer back
to Chapter 5. There is a slightly simpler syntax which may be used
when the IF statement will fit on one line.
(a) On Sheet2 of CHAP8.XLS enter the text in Al:B3 and the
values in A4:A14 as shown in Figure 8.9.
(b) In B4 enter the formula =FSIN(A4). Because we have yet to
write a function named Fsin, the error value #NAME? is
displayed in B4. This problem will be solved shortly. Copy B4
down to B14.

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.

Trabalhando com funções de lógica e decisão

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:

Outras funções matemáticas:

69
70

You might also like