有没有一种方法可以使用UserForm替换公式中的值?

时间:2019-06-12 15:55:32

标签: excel vba

我在I2:HM13栏中有一个很长的公式,其中包含需要更改的值,具体取决于哪个部门使用工作表,并且这些值可能会在一年中发生变化。该公式在指定范围内的所有单元格中都重复,只是参考列/行发生了变化。我想创建一个UserForm,以便最终用户可以在文本框中输入特定于其部门的值,然后单击命令按钮,然后将文本框中的值插入到公式中。

我已经尝试过一些查找和替换代码,但是我尝试过的一切都没有用。以下是我要修改的公式。

=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”。如果用户在文本框2中输入270000000000,则所有“ 260000000000”都将替换为270000000000。

2 个答案:

答案 0 :(得分:0)

您最好的方法是创建工作表范围内的名称,然后在公式中使用这些名称:您的用户窗体可以将这些名称的“ refersto”值更改为用户提供的值。

例如:

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

在工作表上

=FOO/BAR

答案 1 :(得分:0)

找到了我的问题的解决方案:

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

我需要为每个部门要更改的所有值重复此格式。