【问题标题】:Use vba to write formula in cell使用vba在单元格中编写公式
【发布时间】:2017-03-06 04:14:28
【问题描述】:

我的基本公式是:=IF(COUNTIF($A:$A,$A2)=COUNTIFS($A:$A,$A2,$B:$B,$B2),"OK","NOT OK")

我用它来知道A列中是否有重复,我检查B中的值。

ID    Age   My formula

1     15    NOT OK
2     50    OK
2     50    OK
3     35    OK
1     15    NOT OK
1     16    NOT OK

现在我想用 VBA 编写它,所以我录制了一个宏,选择单元格,按 F2 然后按 Enter。我明白了:

ActiveCell.FormulaR1C1 = _
 "=IF(COUNTIF(C3,RC[-10])=COUNTIFS(C3,RC[-10],C12,RC[-1]),""PRODUIT"",""ARTICLE"")"

好的,它工作。现在我想在新列中使用这个公式:

Id    Age   Age formula   Money   Money formula   Value3   Value3 formula   ...

1     15    NOT OK        150     OK              ...      ...
2     50    OK            5       NOT OK          ...
2     50    OK            800     NOT OK
3     35    OK            80      OK
1     15    NOT OK        150     OK
1     16    NOT OK        150     OK

我知道如何“手动”使用公式,并且我知道如何将它用于 vba 中的单个单元格,但我不知道如何在循环中使用它。 (我必须在 25+ 列上使用公式,这就是我需要循环和变量的原因)

对不起,我的英语不好, 提前致谢

【问题讨论】:

    标签: vba excel duplicates formula


    【解决方案1】:

    您只需将For r = 2 To 25 中的25 编辑到您要使用公式填充的最后一行。

    代码:

    'Loops throug the rows
    For r = 2 To 25
        'Loops throug the columns
        For c = 13 To 69 Step 2
            'Converts the column-index into the column-letter
            Dim col As String
            col = Split(Cells(r, c - 1).Address(True, False), "$")(0)
            'Writes the formula into the cell
            Cells(r, c).Formula = "=IF(COUNTIF($C:$C,C" & r & ")=COUNTIFS($C:$C,C" & r & ",$" & col & ":$" & col & "," & col & r & "),""PRODUIT"",""ARTICLE"")"
        Next
    Next
    

    【讨论】:

    • 没问题的伙伴:)
    • 我想提高你的答案,但我没有足够的声誉! :(
    • 没问题,因为你接受它作为答案^^ 我认为你赢得了大约 20 声望的正确 tu upvote。
    【解决方案2】:

    感谢托尼的宝贵时间。

    所以:

    1. 我的 excel 文件有 A 到 BQ 列
    2. 从L到BQ,二分之一是数据,接下来是公式
    3. 我的 ID 始终是 C 列
    4. 基本上 M 列将使用 C 列检查 ID 和 L 列检查值。

    现在公式: 使用 Excel 的单元格 M2:

    =IF(COUNTIF($C:$C;C2)=COUNTIFS($C:$C;C2;$L:$L;L2);"PRODUIT";"ARTICLE")
    

    带有 VBA 的单元格 M2:

    ActiveCell.FormulaR1C1 = _ "=IF(COUNTIF(C3,RC[-10])=COUNTIFS(C3,RC[-10],C12,RC[-1]),""PRODUIT"",""ARTICLE"")"

    现在 Excel 中的单元格 O2(基于 C 和 N 列):

    =IF(COUNTIF($C:$C;C2)=COUNTIFS($C:$C;C2;$N:$N;N2);"PRODUIT";"ARTICLE")
    

    最后用 VBA 单元格 O2:

        ActiveCell.FormulaR1C1 = _
        "=IF(COUNTIF(C3,RC[-12])=COUNTIFS(C3,RC[-12],C14,RC[-1]),""PRODUIT"",""ARTICLE"")"
    

    现在我想使用一个循环(从 L 到 BQ,第 2 步)用变量填充 M2、O2、Q2、S2...

    我希望你这次能得到它, 再次对不起我的英语水平低

    【讨论】:

    • 我尝试将 [-10] 替换为 [-" variable "] 并将 [-12] 替换为 [-" variable +2 "] 但它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2022-01-14
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多