猿问

最好能用VBA代码在一个单元格内显示OK数另一个单元格显示NG数据,用函数解决也可以。

有20个产品每个产品测有4个数据,管控范围是0-0.05,其中每个产品有些有一个不良或多个不良数据,最好能用VBA代码在一个单元格内显示OK数另一个单元格显示NG数据,用函数解决也可以。






白衣染霜花
浏览 214回答 2
2回答

慕运维8079593

楼主如果只要获得每一列符合条件的OK数和NG数,其实函数公式就够了,效率也很高。示例1:在显示OK的单元格里输入 =COUNTIFS(B2:B21,">0",B2:B21,"<0.05");示例2:在显示NG的单元格里输入 = 20 - OK的个数,即可。如果想实现截图所示的效果:即用颜色区分开OK和NG属性的单元格,同时计算个数,则可以用VBA代码来实现。Sub&nbsp;计数并用颜色标记()Dim&nbsp;rng&nbsp;As&nbsp;Range,&nbsp;c&nbsp;As&nbsp;Range,&nbsp;i%,&nbsp;ok%,&nbsp;ng%Dim&nbsp;startRow&,&nbsp;endRow&startRow&nbsp;=&nbsp;2:&nbsp;endRow&nbsp;=&nbsp;21&nbsp;'在此处定义数据区域的开始行和结束行,根据楼主截图,设定为2和21i&nbsp;=&nbsp;1With&nbsp;Sheet1&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;rng&nbsp;=&nbsp;.Range(.Cells(startRow,&nbsp;i),&nbsp;.Cells(endRow,&nbsp;i))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;=&nbsp;0:&nbsp;ng&nbsp;=&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;Each&nbsp;c&nbsp;In&nbsp;rng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;c.Value&nbsp;>&nbsp;0&nbsp;And&nbsp;c.Value&nbsp;<&nbsp;0.05&nbsp;Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.Interior.Color&nbsp;=&nbsp;RGB(255,&nbsp;0,&nbsp;0)&nbsp;'红色&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;=&nbsp;ok&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.Interior.Color&nbsp;=&nbsp;RGB(0,&nbsp;0,&nbsp;255)&nbsp;'蓝色&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ng&nbsp;=&nbsp;ng&nbsp;+&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cells(endRow&nbsp;+&nbsp;1,&nbsp;i).Value&nbsp;=&nbsp;ok&nbsp;'在数据检索区域的下一行写入ok的个数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cells(endRow&nbsp;+&nbsp;2,&nbsp;i).Value&nbsp;=&nbsp;ng&nbsp;'在数据检索区域的下两行写入ng的个数&nbsp;&nbsp;&nbsp;&nbsp;Loop&nbsp;Until&nbsp;i&nbsp;=&nbsp;5&nbsp;'i&nbsp;=&nbsp;5意味着数据判断要执行完第E列再结束End&nbsp;WithEnd&nbsp;Sub

元芳怎么了

Sub&nbsp;Macro1()&nbsp;Dim&nbsp;Rng&nbsp;As&nbsp;Range, Rng1&nbsp;As&nbsp;Range&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;Rng = Range("a1:d20")&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;Each&nbsp;Rng1&nbsp;In&nbsp;Rng&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;If&nbsp;Rng1.Value > 0.05&nbsp;Or&nbsp;Rng1.Value < 0&nbsp;Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Rng1.Interior.Color = vbRed&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Rng1.Interior.Color = vbBlue&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;End&nbsp;If&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;Rng1&nbsp;&nbsp;&nbsp;End&nbsp;Sub
随时随地看视频慕课网APP
我要回答