Notifications
Clear all

Criar função  

  RSS

Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
18/05/2010 6:29 am  

Gostaria de saber se há como criar uma função onde eu possa colocar quantos números eu quiser e como ficaria ela. Eu fiz uma básica mas ela fica muito extensa já que tenho que adicionar todos os números. Aqui está a função:

TESTE = num1 * (num13 + num14 + num15 + num16 + num17 + num18) + num2 * (num13 + num14 + num15 + num16 + num17 + num18) + num3 * (num13 + num14 + num15 + num16 + num17 + num18) + num4 * (num13 + num14 + num15 + num16 + num17 + num18) + num5 * (num13 + num14 + num15 + num16 + num17 + num18) + num6 * (num13 + num14 + num15 + num16 + num17 + num18) + num7 * (num13 + num14 + num15 + num16 + num17 + num18) + num8 * (num13 + num14 + num15 + num16 + num17 + num18) + num9 * (num13 + num14 + num15 + num16 + num17 + num18) + num10 * (num13 + num14 + num15 + num16 + num17 + num18) + num11 * (num13 + num14 + num15 + num16 + num17 + num18) + num12 * (num13 + num14 + num15 + num16 + num17 + num18)

Agradeço quem puder ajudar.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
18/05/2010 1:44 pm  

Se tiver uma função que faça a mesma coisa também pode ser... Eu procurei mas não conegui achar

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
18/05/2010 9:30 pm  

para que voce que usar essa função, dependendo do uso da função, os argumentos podem ser mais reduzidos

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
20/05/2010 5:47 am  

Eu quero a função para o seguinte (vou demonstrar, porque não sei direito com explicar):

1*(1+2+3+4+5+6) + 2*(1+2+3+4+5+6) + 3*(1+2+3+4+5+6) + 4*(1+2+3+4+5+6)...

E assim em diante, é só pra facilitar minha vida para não ter que sair fazendo isso toda vez que for necessário :D .

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
29/05/2010 3:01 pm  

segue rotina...

Option Explicit

Function GeraFuncaoSequencial(intNumero As Integer, intNumeroArgumentos As Integer)
    Dim sFunc As String, y As Integer, x As Integer, sNumArgs As String, sFormula As String
    For y = 1 To intNumero
        sNumArgs = ""
        For x = 1 To intNumeroArgumentos
            sNumArgs = sNumArgs & "+" & x
        Next
        sNumArgs = Mid(sNumArgs, 2)
        sFormula = sFormula & y & "*(" & sNumArgs & ") + "
    Next
    GeraFuncaoSequencial = Trim(Mid(Trim(sFormula), 1, Len(sFormula) - 2))
End Function

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
29/05/2010 3:19 pm  

Coloque essa função em uma celula e mesma retorna a sequencia da formula com base nos parametros passados.

Exemplo:
na celula A2, coloque a seguinte formula.

= GeraFuncaoSequencial(3;5)

Isso irá gerá a seguinte sequencia

1*(1+2+3+4+5) + 2*(1+2+3+4+5) + 3*(1+2+3+4+5)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Fernando Fernandes
(@fernandofernandes)
Illustrious Member
Entrou: 12 anos atrás
Posts: 44273
31/05/2010 5:21 am  

Tá aparecendo exatamente como você disse só que eu quero que ele faça o cálculo, então pra isso seria necessário um igual antes do resultado que aparece.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel


ResponderCitar (Quote)
Compartilhar: