簡體   English   中英

使用VBA在單元格中編寫公式

[英]Use vba to write formula in cell

我的基本公式是: =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+列上使用公式,這就是為什么我需要循環和變量的原因)

對不起,我的英語不好,謝謝

您只需要在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

謝謝托尼的時間。

所以:

  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 ...

希望這次您能收到,對不起,我英語水平太低

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM