1

Базовое уравнение

(J3+x)/150

Умножьте ответ на x затем разделите все на 150 и повторите

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

Продолжайте повторять до тех пор, пока ответ на последнее повторение не станет <=1 . Сумма всех частей.

Возможно, визуально это лучше объяснит.

Прямо сейчас я просто разбил уравнение на несколько ячеек и затем суммировал их, но это ужасно неэффективно.

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

2 ответа2

2

Поместите следующую пользовательскую функцию (UDF) в стандартный модуль:

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

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

=deflime(A1,B1)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

а подробности о UDF смотрите в:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Макросы должны быть включены, чтобы это работало!

Вот пример:

0

Я вижу, у вас есть решение VBA, но это можно сделать с помощью формул.

Предполагая, что ваше значение "x" в J2, поместите эту формулу в J4, чтобы дать число итераций, которые приведут вас к <= 1 в первый раз.

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

а затем эта формула в J5, чтобы получить ваше окончательное значение

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

Эта первая формула ограничивает вас 10 итерациями, но вы можете расширить ее, если потребуется ..... или даже объединить эти две формулы в одну "мегаформулу"

в моих тестах эти формулы дали мне те же результаты, что и UDF ученика Гэри

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .