Como a soma pode ser repetida na equação até que a resposta seja menor ou igual a 1?

1

Equação de base

(J3+x)/150

Multiplique a resposta por x , depois divida todos por 150 e repita

( ((J3+x)/150)x )/150
(( ( ((J3+x)/150)x )/150 )x)/150

Continue repetindo até que a resposta para a última repetição seja <=1 . Soma todas as partes.

Talvez ver isso visualmente seja melhor explicado.

Neste momento, eu simplesmente dividi a equação em várias células e as somamos, mas isso é terrivelmente ineficiente.

A1: =(J3+x)/150
B1: =(((J3+x)/150)x)/150
C1: =(( (((J3+x)/150)x)/150 )x)/150
D1: =(( (( (((J3+x)/150)x)/150 )x)/150 )x)/150
E1: etc, etc
    
por deflime 06.01.2015 / 07:31

2 respostas

2

Coloque a seguinte Função definida pelo usuário (UDF) em um módulo padrão:

Public Function deflime(J3 As Variant, x As Variant) As Double
    deflime = 0
    result = (J3 + x) / 150
    For i = 1 To 9999
        deflime = deflime + result
        If result <= 1 Then
            Exit Function
        End If
        result = x * result / 150
    Next i
End Function

Funções Definidas pelo Usuário (UDFs) são muito fáceis de instalar e usar:

  1. ALT-F11 exibe a janela do VBE
  2. ALT-I ALT-M abre um novo módulo
  3. cole o material e feche a janela do VBE

Se você salvar a pasta de trabalho, a UDF será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx

Para remover o UDF:

  1. abrir a janela do VBE como acima
  2. limpe o código
  3. feche a janela do VBE

Para usar o UDF do Excel:

=deflime(A1,B1)

Para saber mais sobre macros em geral, consulte:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

Aqui está um exemplo:

    
por 06.01.2015 / 20:12
0

Vejo que você tem uma solução de VBA, mas é possível fazer isso com fórmulas.

Supondo que seu valor "x" esteja em J2, coloque esta fórmula em J4 para fornecer o número de iterações que o levará para < = 1 pela primeira vez

=MATCH(TRUE,(J3+J2)/150^{1,2,3,4,5,6,7,8,9,10}*J2^{0,1,2,3,4,5,6,7,8,9}<=1,0)

e, em seguida, essa fórmula em J5 para obter seu valor final

=SUMPRODUCT((J3+J2)/150^ROW(INDIRECT("1:"&J4))*J2^(ROW(INDIRECT("1:"&J4))-1))

Essa primeira fórmula limita você a 10 iterações, mas você pode expandi-la se necessário ... ou até mesmo amalgamar essas duas fórmulas em uma "megaformula"

em meus testes, essas fórmulas me deram os mesmos resultados que a UDF do aluno de Gary

    
por 06.01.2015 / 22:58