用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写,所以录了个宏,select单元格,按F2再回车。我得到:
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
我知道如何使用公式 "by hand" 并且我知道如何将它用于 vba 中的单个单元格,但我不知道如何在循环中使用它。 (我必须在 25+ 列上使用公式,这就是我需要循环和变量的原因)
抱歉我的英语不好,
提前致谢
谢谢托尼抽出时间。
所以:
- 我的 excel 文件有 A 到 BQ 列
- 从L到BQ,两列一列是数据,一列是公式
- 我的ID一直是C列
- 基本上 M 列将使用 C 列检查 ID,使用 L 列检查值。
现在公式:
单元格 M2 Excel:
=IF(COUNTIF($C:$C;C2)=COUNTIFS($C:$C;C2;$L:$L;L2);"PRODUIT";"ARTICLE")
单元格 M2 VBA:
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...
这次希望你能明白,
再次抱歉我的英语水平很低
您只需要将 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
我的基本公式是:=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写,所以录了个宏,select单元格,按F2再回车。我得到:
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
我知道如何使用公式 "by hand" 并且我知道如何将它用于 vba 中的单个单元格,但我不知道如何在循环中使用它。 (我必须在 25+ 列上使用公式,这就是我需要循环和变量的原因)
抱歉我的英语不好, 提前致谢
谢谢托尼抽出时间。
所以:
- 我的 excel 文件有 A 到 BQ 列
- 从L到BQ,两列一列是数据,一列是公式
- 我的ID一直是C列
- 基本上 M 列将使用 C 列检查 ID,使用 L 列检查值。
现在公式: 单元格 M2 Excel:
=IF(COUNTIF($C:$C;C2)=COUNTIFS($C:$C;C2;$L:$L;L2);"PRODUIT";"ARTICLE")
单元格 M2 VBA:
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...
这次希望你能明白, 再次抱歉我的英语水平很低
您只需要将 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