统计行组内的特定观测值的数量
可重复的例子
考虑以下数据:
ID ID_2 Specie Area Tree DBH H Cod 2 111 E_citriodora 432 1 19.098 20 2 111 E_citriodora 432 2 1 2 111 E_citriodora 432 3 1 2 111 E_citriodora 432 4 20.530 17.4 6 ... 2 111 E_grandis 557 1 1 2 111 E_grandis 557 2 24.828 15 6 2 111 E_grandis 557 3 1 2 111 E_grandis 557 4 14.483 16 5 ... 2 111 E_paniculata 704 1 1 2 111 E_paniculata 704 2 14.164 19.5 2 111 E_paniculata 704 3 1 2 111 E_paniculata 704 4 17.507 20
这是208行的一个完全可重复的例子。 实际的数据有更多的行和物种,其中每种物种的行数并不总是相同的。
题
我想要做的是以下几点:
检查每个实体的“Cod”列的代码6的计数是否小于3(最小阈值)并且大于Area/100
(考虑到四舍五入为整数)。 如果满足其中一个条件,我想显示一个消息框。
代码6的计数小于3或大于舍入(Area / 100,0)
预期结果
E_citriodora在“Cod”栏中有四个数字6。 代码6的正确计数应该在3和=ROUNDUP(432/100,0)
= 5之间。 所以,3 <4 <5不会触发消息框。
E_grandis对代码6有7个观测值,但是在这种情况下,最大阈值是6,因为557/100的面积是5.57,四舍五入为6。
3 <7 <6.这个结果会触发消息框。
第三个例子,E_paniculata对于代码6只有2个观察值。这个值小于最小值3. 3 <2 <8.这个结果也会触发消息框。
每次满足条件时不需要显示一个消息框,而只需要一条消息指出至less有一个缺陷。
我曾经尝试过
我可以使用公式为每个物种手动执行此操作。 例如,关于dataframe的第一类:
=IF(OR(COUNTIF(H2:H73,6) < 3,COUNTIF(H2:H73,6) > ROUNDUP(D2/100,0)),"Not Ok", "Ok")
但是我期望用macros来实现这个目标,而且我的主要困难是在每组硬币中设置计数,在这种情况下哪种types的循环是最合适的。 韩国社交协会。
假设你的数据总是按照你的示例文件的方式sorting,那么这个代码会将所有的code6大于3的物种打印到你的控制台:
小测() '假设表1中的A2包含您的第一个ID 昏暗的范围 设置r = ThisWorkbook.Sheets(1).Range(“A2”) 如果r =“”则退出子 昏暗物种作为string specie =“” 昏暗的cod6作为整数 “先停在空行 尽pipe不是r =“” “下一个硬币 如果物种<> r.Offset(0,2)那么 物种= r.Offset(0,2) cod6 = 0 万一 “算鳕鱼 如果r.Offset(0,7)= 6则cod6 = cod6 + 1 '检查鳕鱼在物种结束 如果物种<> r.Offset(1,2)那么 '把你的真实情况放在这里,并创build一个msgbox 如果cod6> 3那么Debug.Print specie&“cod6大于” 万一 设置r = r.Offset(1,0) 循环 结束小组