我试着在vba中做一些类似的事情,我只知道在python循环中。有人能教我如何用vba (函数或模块宏)来做这件事吗?
对于A4:A30栏中的每个不同值,C4:C30栏中不应超过9个不同值。如果为真,则在单元格A1中返回“OK”。如果为false,则在单元格A1中返回“错误”
如图中所示,山姆不应该有超过9种不同的水果。玛丽也是如此。
最新情况:
我尝试过filterxml方法,但不幸的是,它似乎对我不起作用:1
发布于 2020-10-27 09:03:35
用过滤器/唯一公式求解excel
在Excel365中实现它的最简单的方法是:添加额外的列,该列对每个键(名称)的唯一值(水果)进行计数,并在该列中找到最大值。
从找到每一个非空白的公式开始,它符合关键。
=FILTER($C$4:$C$30,($A$4:$A$30=A4)*($C$4:$C$30<>""))然后删除重复的:
=UNIQUE(FILTER($C$4:$C$30,($A$4:$A$30=A4)*($C$4:$C$30<>"")))然后检查过滤后的数据中有多少单元格没有空白和重复:
=COUNTA(UNIQUE(FILTER($C$4:$C$30,($A$4:$A$30=A4)*($C$4:$C$30<>""))))然后将我们的新列(在我的例子中是B列)公式扩展到我们的键中的每一行。
最后,将公式添加到检查最大计数器的A1中:
=IF(MAX($B$4:$B$30)<10,"OK","Error - to many velues")*有一个小错误,应该是"Error - to多个值“=)
下面是工作表在我的测试文件中的外观

excel旧版本的解决方案
我已经检查了我是否能够在没有这些公式的情况下使它工作,并且有可能:
我们需要从计算当前行上方的键值开始。
=COUNTIFS($A$4:A4,A4,$C$4:C4,C4)如果我们上面有重复的,它们应该已经被计算,所以我们跳过它们:
=IF(COUNTIFS($A$4:A4,A4,$C$4:C4,C4)>1,"",1)现在我们有"1“或空白的colum。在这种情况下,我们需要计数每一个非空的单元格,其中正确的键(名称),并添加1所以而不是“和”,我们将有"“或1,2,3,4,.
=IF(COUNTIFS($A$4:A4,A4,$C$4:C4,C4)>1,"",COUNTIFS($A$3:A3,A4,$F$3:F3,">0")+1)编辑
如果值为空,我添加了一个额外的IF跳过键:
=IF(C4="","",IF(COUNTIFS($A$4:A4,A4,$C$4:C4,C4)>1,"",COUNTIFS($A$3:A3,A4,$B$3:B3,">0")+1))A1中的单元格公式是相同的
=IF(MAX($B$4:$B$30)<10,"OK","Error - to many values")快速说明:

https://stackoverflow.com/questions/64550587
复制相似问题