我需要一个公式来查找姓氏重复。公式是
ThisWorkbook.Activate
Range("M1").Select
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(J:J,J1)>1,""Duplicates"","""")"
但是当我运行宏时会产生下面的....并且有额外的括号和单引号。
=IF(COUNTIF(J:(J),'J1')>1,"Duplicates","")
我一定是做错了什么但不知道是什么。
答案 0 :(得分:1)
这是因为您使用.FormulaR1C1 =
将其更改为.Formula =
那就是它。这将解决问题。
另一方面,在执行此操作之前没有理由选择范围(除非您确实希望在宏完成后由于某种原因选择它),但通常这会减慢宏执行速度。虽然它不会在这里产生任何显着差异,但是当你可以消除许多选择时,这个概念是很好的。
以下是没有范围选择的宏的外观:
ThisWorkbook.Activate
[m1].Formula = "=IF(COUNTIF(J:J,J1)>1,""Duplicates"","""")"
答案 1 :(得分:0)
您将R1c1与常规参考混合。用于r1c1,
"=IF(COUNTIF(C[9],R1C10)>1,""Duplicates"","""")"
C[9]
是相对引用(类似于J
),而R1C10是绝对引用(第1行,单元格10 = $J$10
)。
答案 2 :(得分:-2)
由于您没有提供足够的详细信息,您的问题无法解决。
单引号出现,因为excel试图修正公式。
您需要查询COUNTIF的工作方式(第二个参数用于标准)
您还需要手动在单元格中输入公式并使其首先运行。您需要在问题中提供此公式。
使用“FormulaR1C1”将要求您提供R1C1样式的公式。您可能希望使用此属性,以便您可以使用正常的“A1”样式的寻址单元格:
ActiveCell.Formula = "=A1"
COUNTIF(J:J,J1)>1
是一种非常奇怪的方法来实现所有单元格的计数,其中包含“Duplicate”一词。 (我假设J1的文本为“Duplicate”)。
更好的代码可能包含COUNTA
或COUNTIF(J:J,"Duplicate")>1