Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 动态添加到Excel公式/动态搜索和替换_Vba_Excel_Excel Formula_Formula - Fatal编程技术网

Vba 动态添加到Excel公式/动态搜索和替换

Vba 动态添加到Excel公式/动态搜索和替换,vba,excel,excel-formula,formula,Vba,Excel,Excel Formula,Formula,第一次在这里发帖,如果我遗漏了什么,很抱歉。如果是,请告诉我 因此,当前的问题是: 我有很多公式(数千个)需要更改/添加,但我不确定如何/什么是最聪明的方法 所有公式都类似于: =C5+D5-S5 但其中一些在基本公式之后有一个附加部分,它可以是多个东西,但一个例子是: =C829+D829-S829 +T834+T835+T835+(T836*2) 或许 =SUM(C5:H5)-S5 同时保留“-Sx”之后可能存在的附加部分 我使用的是64位Excel 2016。 我玩过搜索和替换,但没有

第一次在这里发帖,如果我遗漏了什么,很抱歉。如果是,请告诉我

因此,当前的问题是: 我有很多公式(数千个)需要更改/添加,但我不确定如何/什么是最聪明的方法

所有公式都类似于:

=C5+D5-S5
但其中一些在基本公式之后有一个附加部分,它可以是多个东西,但一个例子是:

=C829+D829-S829 +T834+T835+T835+(T836*2) 或许

=SUM(C5:H5)-S5
同时保留“-Sx”之后可能存在的附加部分

我使用的是64位Excel 2016。 我玩过搜索和替换,但没有太大成功。 我有一点使用VBA的经验,所以也许这就是解决这个问题的方法。

这个公式将来可能需要再次修改。

因此,我想出了如何制作一些VBA来完成这项工作——只要稍加调整,如果以后需要的话,我就可以重用它了

谢谢你的意见!最后的代码发布在下面

Sub RPLF()
    Dim idr As Range
    Dim crp As Double
    Dim lrp As Double
    Dim form As String
    Dim newform As String

    crp = 4

    With Worksheets("S-S")
        lrp = .Cells(.Rows.Count, "A").End(xlUp).row
    End With

    For Each idr In Range("A4:" & "A" & lrp)
         crp = crp + 1
         form = Worksheets("S-S").Range("T" & crp).Formula
         newform = Replace(form, "=C" & crp & "+D" & crp & "-S" & crp, "=SUM(C" & crp & ":H" & crp & ")-S" & crp)
         Worksheets("S-S").Range("T" & crp).Formula = newform
    Next
End Sub

是的,VBA是您问题的答案。到目前为止你写了什么?说实话,没有什么,因为我不确定VBA是答案。我需要使用VBA中的哪些功能?还有,是否有可能为公式的进一步更改重新编写一些代码?您需要获取单元格及其公式的引用。在那之后,是时候根据你的逻辑改变公式了。一旦这项工作开始,开始考虑如何对所有单元格执行此操作。为了更改公式,您只需要对字符串执行一些操作:在字符串中查找字符,参与其中,等等。因此,我编写了一些代码,它在每行中运行,将公式作为字符串返回,我可以在VBA中操作。然而,正如伊根·沃尔夫(Egan Wolf)所说,我没有太多/任何“在字符串上进行操作”的经验。我想我需要做的是找到-Sx部分,并将其和之前的任何内容更改为我的更新公式,同时保留-Sx部分之后的任何内容。有人能给我指出正确的方向吗?谢谢你的回复!
=SUM(C5:H5)-S5
Sub RPLF()
    Dim idr As Range
    Dim crp As Double
    Dim lrp As Double
    Dim form As String
    Dim newform As String

    crp = 4

    With Worksheets("S-S")
        lrp = .Cells(.Rows.Count, "A").End(xlUp).row
    End With

    For Each idr In Range("A4:" & "A" & lrp)
         crp = crp + 1
         form = Worksheets("S-S").Range("T" & crp).Formula
         newform = Replace(form, "=C" & crp & "+D" & crp & "-S" & crp, "=SUM(C" & crp & ":H" & crp & ")-S" & crp)
         Worksheets("S-S").Range("T" & crp).Formula = newform
    Next
End Sub