4

У меня очень длинное уравнение. (VLE).
Если VLE имеет определенное свойство (A1 = 5, for example) ,
Я хотел бы принять Absolute value of VLE , а не просто VLE .
Обычно это будет выглядеть

=if(A1=5, Abs(VLE),VLE)  

В качестве альтернативы, у меня будет вспомогательный столбец,

=if(A1=5,ABS(B1),B1)  

и отсылаю туда все.

Мне интересно, есть ли 3rd method , тот, который только VLE written once , и который не использует вспомогательный столбец.
Могут ли суффиксы, которые захватывают VLE, сжать в массиве (при этом уже используя ИЛИ?) Есть ли способ, чтобы массив мог ссылаться на себя? Или я застрял с одним из двух ранее предложенных решений?

VBA - это всегда возможность ... но на этом этапе я бы предпочел переписать ряд уравнений, чтобы предотвратить это.

2 ответа2

2

Третий вариант - использовать пользовательскую функцию (UDF):

Public Function ConditionalAbsolute(v As Variant, boo As Boolean) As Variant
    If boo Then
        ConditionalAbsolute = Abs(v)
    Else
        ConditionalAbsolute = v
    End If
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:

=CondionalAbsolute(A1+B1,C1=0)

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

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

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

2

Пусть C4-D4 будет заполнителем для длинной формулы. Затем, если вы можете изменить условие в A1 , чтобы A1 всегда было 1 или 2, а 2 означает использование абсолютного значения, формула основного столбца будет просто =((C4-D4)^$A$1)^(1/$A$1) . Если условие в A1 не может быть изменено, и вы можете зарезервировать одну дополнительную ячейку, скажем, A2 как =1+(A1=5) , тогда формула основного столбца будет =((C4-D4)^$A$2)^(1/$A$2) . В противном случае вы всегда можете использовать более длинную версию =((C4-D4)^(1+(--($A$1=5))))^(1-(--($A$1=5))/2) ,

Просто помните, что это может привести к потере точности или переполнению.

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