Anda di halaman 1dari 11

Otimiz

ando
o Uso
do Excel
através do
Visual

Para leigos em programação

Por Ismael de Carvalho


Foto: Maciço da Tijuca, Rio de Janeiro
APRESENTAÇÃO

Esta abordagem não esgotará o assunto, já que o nosso


objetivo é oferecer o melhor pelo mínimo esforço. Com o
conhecimento de apenas duas estruturas de programação,
essencialmente intuitivas, será possível potencializar o uso
do Excel para infinitas aplicações. Essa base permitirá
grande facilidade de evolução em programação àqueles
que futuramente desejarem se aprofundar no assunto.

Assim, veremos apenas dois exercícios com planilhas


pequenas, pois o que pretendemos é repassar o
conhecimento e não resolver problemas. O aprendizado
permitirá a aplicação em planilhas maiores, onde seria
inviável a solução visual ou manual que poderia ser
aplicada na planilha em estudo.

Por fim, priorizamos o conhecimento da ferramenta e não


a técnica. Assim, tanto os programadores, quanto os
leigos, têm elementos de sobra para gostar deste
trabalho: os primeiros, por conta das críticas que
poderão fazer à falta de técnica; os segundos, pela
didática e ausência de tecnicismos, embora pudessem
percorrer um caminho mais curto.
1. Nossa tarefa é calcular a média de alunos, com base nas notas
1 e 2, e colocá-las na coluna “E” da planilha abaixo
exemplificada:

1A B C D E
2 Matrícula Nota 1 Nota 2 Média
3 2387589 7,0 8,5
4 3942098 6,5 7,0
5 2587127 8,0 7,5
6 2434984 4,8 4,8
7 1389924 0,0 4,0
8 2989234 6,0 6,0
9 2347871 9,0 8,5
10 1392841 10,0 9,0
11 9284828 7,5 8,0
12 5238748 4,0 4,5
13 4239842 3,5 4,0
14 8239898 9,5 7,5

2. Utilizaremos a estrutura conhecida como “for...next”, que nos


permite verificar o conteúdo das células de cada linha das
colunas “C” e “D”, somá-las, tirar a média e colocá-la na coluna
“E”.

3. Em Visual Basic-(VB) as células são referenciadas na forma


CELLS(linha, coluna). Assim, a célula “a1” é chamada por
cell(1,1), pois a referência das colunas é numérica: A=1; B=2;
C=3 ... Z = 26; AA = 27 etc.

4. Observe a seguinte lógica, considerando que a planilha


mostrada tem dados a partir da linha 3 e da coluna “B”:
Faça de 3 a 14 (obs: já que o nosso interesse é das linhas 3 a 14)
Some as notas 1 e 2
Divida a soma por 2
Coloque o resultado na coluna “E”
Continue o Faça e, se ainda é 14 ou menos, faça a próxima

4. Dessa forma simples é como funciona o laço “for...next”, que


codificado ficaria assim:
For i = 3 to 14
soma = cells(i,3) + cells(i,4)
amedia = soma/2
cells(i,5) = amedia
Next i

5. Codificação comentada:
Chamamos de “variável” os termos ou letras que conterão e guardarão valores
variáveis. Note que as linhas de “For” e “Next” ficam alinhadas e as linhas
intermediárias com tabulação maior. Isso facilita a visualização da estrutura e a
subordinação, o que é fundamental em programação e é conhecido como
“indentação”.

For i = 3 to 14 (o “i” é a nossa variável que guardará os valores de 3 a 14,


sendo que se inicia com o primeiro valor indicado, no caso 3)
soma = cells(i,3) + cells(i,4) (“soma“ é a variável que guardará a soma das
células da linha “i” [que terá valores variáveis
de 3 a 14, a cada passagem pela rotina] e das
colunas 3 e 4)
amedia = soma/2 (“resultado” conterá a média, divisão da soma por 2)
cells(i,5) = amedia (a célula da linha “i”, coluna 5, receberá o resultado)
Next i (obs: o Next soma 1 ao valor de “i”, que na primeira passada já contém o
valor 3. Quando o “i” contiver 15 não executará o próximo “For”)

6. Pronto, missão cumprida. Basta incluir o código na planilha.


Para isso, verifique se a caixa de ferramentas de controle está
visível. Caso contrário, a exiba através do menu “Exibir/barra
de ferramentas/caixa de ferramentas de controle”. A caixa é a
seguinte:

· Acione o modo de design clicando no primeiro ícone:


· Acione a inclusão de um botão, clicando no 6º ícone :
· Desenhe um botão em qualquer local livre da planilha;

· Vamos personalizar o “CommandButton1”:


o Clique no botão direito do mouse e selecione
propriedades;
o Aberta a janela de propriedades, altere o conteúdo
dos campos “name” (o primeiro) e o “caption”
(sétimo) para “média” e feche a janela (note que nessa
janela você poderia alterar a fonte, cor de fundo, etc);
o Dê um clique duplo sobre o botão e se abrirá a
seguinte janela:

o Digitaremos o código do item 4 acima entre as duas


linhas que já aparecem: Private Sub Média_Click(),
que significa ser uma subrotina privada que será
aciona com um clique no botão Média e End Sub,
que delimita o código da subrotina.

o Feito isso, gravamos a rotina clicando o disquete na


barra abaixo do menu principal. Note que um pouco
mais a frente há um botão play verde, que poderá ser
usado para executar a rotina. Entretanto, não faça
isso, volte para a planilha e clique no botão de modo
de design (esquadro) para desligar o modo de edição.
Só então clique no botão média da planilha.
o Se tudo correu bem, a sua planilha deverá apresentar
o seguinte resultado:

1A B C D E
2 Matrícula Nota 1 Nota 2 Média
3 2387589 7,0 8,5 7,8
4 3942098 6,5 7,0 6,8
5 2587127 8,0 7,5 7,8
6 2434984 4,8 4,8 4,8
7 1389924 0,0 4,0 2,0
8 2989234 6,0 6,0 6,0
9 2347871 9,0 8,5 8,8
10 1392841 10,0 9,0 9,5
11 9284828 7,5 8,0 7,8
12 5238748 4,0 4,5 4,3
13 4239842 3,5 4,0 3,8
14 8239898 9,5 7,5 8,5

7. Em nossa segunda tarefa você conhecerá a segunda estrutura:


“IF THEN...ENDIF” e já observará o potencial da combinação
dessas duas ferramentas, o que encerra nosso objetivo.

8. A missão agora é, a partir de outra relação, verificar e


informar se o aluno foi: “aprovado”, média igual ou maior que
7; “reprovado”, média menor que 4; ou se irá para “prova final”,
para as demais notas.
1A B C D E F G H
2 Matrícula Nota 1 Nota 2 Média Matrícula Resultado
3 2387589 7,0 8,5 7,8 1389924
4 3942098 6,5 7,0 6,8 1392841
5 2587127 8,0 7,5 7,8 2347871
6 2434984 4,8 4,8 4,8 2387589
7 1389924 0,0 4,0 2,0 2434984
8 2989234 6,0 6,0 6,0 2587127
9 2347871 9,0 8,5 8,8 2989234
10 1392841 10,0 9,0 9,5 3942098
11 9284828 7,5 8,0 7,8 4239842
12 5238748 4,0 4,5 4,3 5238748
13 4239842 3,5 4,0 3,8 8239898
14 8239898 9,5 7,5 8,5 9284828

Por exemplo: o aluno da linha 7 teve média 2,0, então


deveremos registrar na coluna “h” o resultado
“REPROVADO”.

9. Neste exemplo, a lógica seria esta:


Faça de 3 a 14
Pegue a matrícula da coluna “G”
Faça2 de 3 a 14 na coluna B
Verifique se a matrícula de “B” é = a “G”, então pegue a Média da coluna “E”
Continue Faça2
Se a média é igual ou maior que 7.
Registre “Aprovado” na respectiva coluna “H”
Fim do Se
Se a média for menor que 4
Registre “Reprovado” na respectiva coluna “H”
Fim do Se
Se a média for igual ou maior que 4 E menor que 7
Registre “Prova Final” na respectiva coluna “H”
Fim do Se
Continue o Faça e, se ainda é 14 ou menos, faça a próxima

10. Dessa forma, a combinação das estruturas “for...next” e “if


then...endif” codificada ficaria assim:
For i = 3 to 14
guardamatr_G = cells(i, 7)
For z = 3 to 14
guardamatr_B = cells(z, 2)
if guardamatr_B = guardamatr_G then
amedia = cells(z, 5)
z = 15
end if
Next z
if amedia => 7 then
cells(i, 8) = “Aprovado”
end if
if amedia < 4 then
cells(i, 8) = “Reprovado”
end if
if amedia => 4 and amedia < 7 then
cells(i, 8) = “Prova Final”
end if
Next i

11. Codificação comentada:


Relembro que, tecnicamente, esta não é a melhor opção para solução do
problema, mas em nosso entendimento é a mais didática para o leigo.
Para cumprir esta missão, precisamos verificar para cada matrícula da coluna
“G” as matrículas da coluna “B” até encontrar a correspondente. Logo, além da
variável “i”, que nos servirá de ponteiro para a coluna “G”, usaremos a variável “z”,
como ponteiro da coluna “B”. Ou seja, quando eu aponto o ponteiro “i” para uma
célula da coluna “G”, ele permanece parado enquanto o ponteiro “z” percorre a
coluna “B” procurando a matrícula correspondente àquela apontada pelo ponteiro
“i”.

For i = 3 to 14
guardamatr_G = cells(i, 7) (guardo a matrícula da coluna “G”)

For z = 3 to 14 Aqui percorro toda a coluna B, em


guardamatr_B = cells(z, 2) busca da matrícula apontada na
if guardamatr_B = guardamatr_G then coluna G. Quando a encontro,
amedia = cells(z, 5) incremento Z para 15, para que ele
z = 15 fique maior que o limite superior do
end if laço e não seja mais executado, vez
Next z que já encontrei o que queria.

if amedia => 7 then (aqui que testo se a media encontrada é maior que 7)
cells(i, 8) = “Aprovado” (se for, registro a aprovação na coluna “H”)
end if
if amedia < 4 then (se é menor que 4, vou registrar a reprovação)
cells(i, 8) = “Reprovado”
end if
if amedia => 4 and amedia < 7 then (se é igual ou maior que 4 e menor que 7)
cells(i, 8) = “Prova Final” (registro que irá para Prova Final)
end if
Next i

12. Pronto, nova missão cumprida e vamos incluir o código.


Entre no modo de design e crie novo botão na planilha.
renomeie-o para “resultado” (tanto “name” quanto “caption” na
janela de ferramentas), feche a janela ferramentas. Dê um clique
duplo sobre o novo botão e inclua o código do item 10 acima.
saia do modo de design e clique o novo botão.
Note que melhoramos o relatório ao incluir mais uma linha (em
destaque), que imprime a média na coluna “i”, logo após o
resultado.

--------------------------- x --------------------------

No meu site há uma pasta excel com a planilha aqui


mostrada já pronta para o exercício, além de outra já
resolvida e outra, ainda, com alguns exemplos muito
simples, porém bastante úteis para o aprendizado do
iniciante.

O endereço é www.ismael.pro.br na seção:


colaboradores / download de arquivos

No site também há um link para meu e-mail, fique à


vontade para apresentar eventuais dúvidas.

Aqui termino, com a certeza de que não cheguei ao


final, talvez sequer ao começo. Porém, frente à
diversidade de nossas expectativas, certo de que nem
um nem outro eu conseguiria.

Anda mungkin juga menyukai