Есть ли способ заменить значение в формуле с помощью пользовательской формы? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть очень длинная формула в столбцах I2: HM13, которая содержит значения, которые необходимо изменить в зависимости от того, какой отдел использует рабочий лист, и эти значения могут изменяться в течение года. Эта формула повторяется во всех ячейках в пределах указанного диапазона с изменением только ссылочного столбца / строки. Я хотел бы создать пользовательскую форму, в которой конечный пользователь может вводить значения, специфичные для своего отдела, в текстовые поля и нажимать кнопку команды, а значения в текстовых полях вставляются в формулу.

Я пытался найти и заменить коды, но ничто из того, что я пробовал, не работает вообще. Ниже приведена формула, которую я пытаюсь изменить.

=IF($H2="No","",IF(($B2-I$1)<100,"",IF(((($B2-I$1)*$C2)*1000000)<260000000000,"",IF(((I$1*$C2)*1000000)<330000000000,"",IF(AND(($B2-I$1)>=200,($B2-I$1)<=800,((($B2-I$1)*$C2)*1000000)>=620000000000,((($B2-I$1)*$C2)*1000000)<=920000000000,I$1>=375,I$1<=420,((I$1*$C2)*1000000)>=680000000000,((I$1*$C2)*1000000)<=790000000000,$C2>=1300,$C2<=2100),1)))))

Выше приведена небольшая часть формулы интереса. Значения, которые я пытаюсь изменить на основе входных данных текстового поля, - это все значения после символов меньше, меньше или равно, больше или больше или равно символам.

Например, в текстовом поле 1 пользовательский ввод 150, 150 затем заменит все «100» в формуле. Если пользователь вводит 270000000000 в текстовое поле 2, все «260000000000» будут заменены на 270000000000.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Нашел решение моего вопроса:

Private Sub CommandButton1_Click()
Dim cell As Range
For Each cell In Range("I2:HM2")
cell.Formula = Replace(cell.Formula, "100,", TextBox4.Value + ",")
cell.Formula = Replace(cell.Formula, "260000000000,", TextBox5.Value + ",")
Next cell
End Sub

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

0 голосов
/ 13 июня 2019

Наилучшим подходом было бы создание имен в виде листа, которые вы затем используете в своих формулах: ваша пользовательская форма может затем изменить значения "referto" для этих имен на предоставленные пользователем значения.

Например:

With ActiveSheet
    .Names("FOO").RefersTo = txtName1.Value
    .Names("BAR").RefersTo = txtName2.Value
End With

На вашем листе:

=FOO/BAR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...