Excel UDF Funcao Definida Pelo Usuario UDF No Excel 2010

download Excel UDF Funcao Definida Pelo Usuario UDF No Excel 2010

of 7

description

UDF

Transcript of Excel UDF Funcao Definida Pelo Usuario UDF No Excel 2010

  • Tweet 7 0Curtir

    Funo Definida pelo Usurio

    (UDF) no Excel 2010Posted on 12/05/2013 by Victor SantAnna

    Em nossa ltima postagem, onde falarmos sobre Anlise Combinatria (Anlise

    Combinatria no Excel 2010: Combinao, Arranjo ou Permutao) mencionamos sobre

    criao de Funo Definida pelo Usurio. Conforme prometemos, mostraremos como criar

    uma funo personalizada para calcular a combinao com repetio no final desta

    postagem.

    Existem muitas funes prontas no EXCEL, mas nem todas as frmulas do mundo esto

    implementadas na forma de funo. Entretanto, possvel criar nossas prprias funes,

    uma funo definida pelo usurio (UDF User Defined Functions ou Custom Excel

    Functions). Este tpico descrito pela Microsoft como

    Escrevendo um procedimento Function

    Se houver um clculo complexo a ser reutilizado com freqncia no Microsoft Excel, voc

    pode criar sua prpria funo de planilha para executar o clculo.

    Para criar suas prprias funes personalizadas, utilize o Microsoft Visual Basic for

    Applications (VBA). O VBA uma linguagem de programao interna do Excel que est

    acessvel pelo atalho ALT+F11.

    Vamos comear com uma frmula simples de ser implementada como funo

    Funo Definida pelo Usurio

    Problema: um termmetro americano marca 68 graus Fahrenheit. Ser que est quente ou

    frio?

    A fim de manter o exemplo simples, escolhemos implementar uma funo calcula o

    xek.meDicas, informaes, anlises e curiosidades sobre Informtica

  • nmero de graus Celsius a partir dos graus Fahrenheit. Quando a funo for chamada a

    partir de uma clula do EXCEL, o resultado do clculo retornado e mostrado na clula.

    Antes de comear, crie a seguinte planilha colocando os valores numricos nas clulas

    A2, A3 e A4:

    O procedimento a seguir ensina, em apenas 5 passos, como criar e usar uma funo

    definida pelo usurio:

    I) O atalho ALT+F11 abre a janela do VBA (Microsoft Visual Basic For Applications)

    II) Procure pela guia Inserir e selecione a opo Mdulo:

    III) Na janela que abriu, digite o cdigo de sua funo. Por exemplo, uma funo para

    calcular graus Celsius a partir dos graus Fahrenheit:

    Function Celsius(grausF)

    Celsius = (grausF - 32) * 5 / 9

    End Function

    Digite a funo acima na janela Mdulo 1 aberta:

  • IV) No menu Arquivo do VBA, clique em Fechar e voltar para Microsoft Excel (ou use

    o atalho Alt+Q) e Volte para a planilha Excel .

    V) Teste sua funo. Digite na planilha a funo que voc acabou de implementar (no

    esquea de comear com o sinal de igualdade) colocando entre parnteses o argumento

    desejado (neste caso um nmero ou uma clula que contm um nmero). Neste exemplo

    voc deve digitar =CELSIUS(A2) na clula B2 (ou outra clula qualquer) do Excel.

    Observe que o Excel reconhece a existncia da funo CELSIUS medida que est

    sendo digitada:

    Na planilha, se os valores numricos estiverem nas clulas A2, A3 e A4, use sua funo

    para frmulas do mesmo modo que usaria qualquer funo de planilha. Por exemplo, a

    funo Celsius pode ser usada na planilha assim:

  • Importante: Uma funo criada dessa maneira somente se encontra disponvel para uso

    na pasta de trabalho onde tiver sido criada e, se quiser ser usada posteriormente,

    precisar ser salva como Pasta de Trabalho Habilitada Para Macro Do Excel.

    Dica: se quiser usar essa funo em outro local, voc pode copiar o cdigo da funo para

    mdulos do VBA situados em outras pastas de trabalho.

    Detalhes da funo definida pelo usurio Celsius

    Eis, novamente, a listagem de nossa funo, vamos examin-la em detalhes:

    Function Celsius(grausF)

    Celsius = (grausF - 32) * 5 / 9

    End Function

    O nome da funo que ser usada pelo usurio, Celsius no exemplo acima, deve receber

    dentro do corpo da funo o resultado do clculo realizado com o argumento grausF, que,

    neste caso foi subtrado de 32 e depois multiplicado por cinco nonos (5/9). As quatro

    operaes bsicas (soma, subtrao, multiplicao e diviso) mais a potncia utilizam os

    mesmos operadores que usamos dentro de uma planilha Excel: +, -, *, / e ^.

    Outros operadores bem como algumas funes esto disponveis, mas usam uma forma

    diferente dos operadores e funes que usamos dentro de uma planilha. Outros

    operadores disponveis dentro do VBA: \ (diviso inteira), Mod (para obter o resto da

    diviso inteira), & (para concatenar texto). Existem ainda vrias funes , mas isso fcil

    de achar na Internet e foge do escopo da nossa postagem.

    O exemplo de FUNO DEFINIDA PELO USURIO (UDF) usado nesta postagem foi

    bastante simplificado, apenas para demonstrar o funcionamento bsico de uma funo

    definida pelo usurio. Para criar funes complexas no VBA, preciso conhecer um

    pouco o modelo de objetos do VBA para Excel, a estrutura da linguagem do Visual Basic

    (VB) e o ambiente VBA.

    Exemplo de outra Funo Definida pelo Usurio

  • 1) Como calcular atravs de uma UDF o processo inverso, transformao de Celsius para

    Fahrenheit?

    Neste caso, siga os mesmos passos anteriores, mas a funo digitada em mdulo 1

    ficar assim (pode ser digitada abaixo da funo anterior, se no quiser apagar a outra

    funo j digitada):

    Function Fahrenheit(grausC) ' de graus C para graus F

    Fahrenheit = grausC * 9 / 5 + 32

    End Function

    Para usar a funo acima dentro de uma planilha, escreva =FAHRENHEIT(100) dentro de

    uma clula no Excel para saber, por exemplo, a temperatura em que a gua ferve (100C)

    em um termmetro com a escala Fahrenheit. Dever surgir o nmero 212.

    2) Eis aqui um outro exemplo de funo definida pelo usurio para calcular centmetros a

    partir de valores em polegadas:

    Function cm(pol) ' transformar polegadas em centmetros

    cm = pol * 2.54

    End Function

    A funo acima, quando digitada em Mdulo 1 (conforme fizemos com a funo anterior),

    permite calcular na planilha a converso de polegadas para centmetros, bastando para

    isso digitar =CM(A2) na planilha Excel, caso o nmero em polegadas esteja na clula A2,

    por exemplo.

    3) A funo que faz o contrrio, transforma centmetros em polegadas est aqui:

    Function pol(cm) ' transformar centmetros em polegadas

    pol = cm / 2.54

    End Function

    Para usar, basta digitar, por exemplo, =POL(12) na planilha Excel e saberemos quanto

    mede, em polegadas, a medida 12 centmetros. Deve dar 4,724409 polegadas.

    Como criar uma funo para calcular a combinao com repetio

  • Seguindo os passos acima, mostrados aqui de forma resumida:

    I) Tecle o atalho ALT+F11 para abrir a janela do VBA

    II) V na guia Inserir e selecione a opo Mdulo

    III) Digite o seguinte cdigo:

    Function CombinRep(ByVal n As Long, ByVal p As Long) As Double

    If (n > 0 And p > 0) Then

    CombinRep = factorial(n + p - 1) / (factorial(p) * factorial(n - 1))

    Else

    CombinRep = Error()

    End If

    End Function

    Function factorial(ByVal n As Long) As Double

    factorial = 1

    Dim a As Double

    For a = 1 To n

    factorial = factorial * a

    Next a

    End Function

    IV) Tecle o atalho ALT+Q para sair do VBA e voltar planilha

    V) Teste a funo entrando com algum valor, como por exemplo, digitando na planilha

    Excel, =CombiRep(4,2) em alguma clula qualquer. Se tudo estiver funcionando como

    deveria, deve aparecer programagicamente o nmero 10, conforme previsto em nossa

    ltima postagem (http://xek.me/?p=1099).

    Acabamos de criar, conforme prometido, uma funo para clculo de Combinao com

    Repetio.

    Em nossa prxima postagem veremos como fazer funes que permitam usar intervalos

  • ONE THOUGHT ON FUNO DEFINIDA PELO USURIO (UDF) NO EXCEL 2010

    About Victor SantAnna

    Professor de Informtica e blogueiro, adoro esclarecer as dvidas - quando

    posso - de alunos, ex-alunos e pblico em geral.

    View all posts by Victor SantAnna

    como argumentos ou entrar com nmero varivel de argumentos, exatamente como faz a

    funo SOMA do Excel e assim poderemos implementar a PERMUTAO com

    ELEMENTOS REPETIDOS.

    SHARE THIS:

    Facebook Twitter LinkedIn Google Email

    This entry was posted in Dicas Excel and tagged como fazer, excel 2010, funo, udf

    by Victor SantAnna. Bookmark the permalink [http://xek.me/?p=1100] .

    Frantchesco Andrade

    on 30/06/2014 at 23:36 said:

    Fala doutor, tima publicao.

    Nunca mexi no UDFs, porm gostaria de ver se voc consegue me ajudar.

    Problema: Quero buscar um valor X da coluna A PROCV, porm com uma

    condio SE na coluna B for = Lista de pea. E me traz o valor da coluna D.

    Contudo o PROCV procura na tabela o primeiro valor X da coluna A deixando de

    buscar os seguintes. J fiz SOMARPRODUTO com as matrizes para encontrar as

    linhas que tenho o valor X descontei os zeros ordenei MENOR fiz NDICE para

    retornar o valor, ou seja, ficou uma equao muito grande e est dando erro.

    Conseguimos fazer no UDFs ou at VBA?

    Abrao.