标题:if 多层嵌套,excel区域多条件筛选并计数
只看楼主
宇house
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-11-2
结帖率:0
已结贴  问题点数:20 回复次数:1 
if 多层嵌套,excel区域多条件筛选并计数
想对产品报告单进行分析,公差上限-下限<=0.02的进行判定并计数,最后输出合格个数与不合格个数,乱写了一个,但是不对,请大神帮忙看看,谢谢@

Sub 宏1()
'
' 宏1 Macro
'
Dim i, j, s, k, m, n, t As Integer '定义
For i = 3 To Range("B65536").End(xlUp).Row  '从B列第三行到最后一行
  If Cells(i, "B") - Cells(i, "C") > 0 And Cells(i, "B") - Cells(i, "C") <= 0.02 Then  '如果公差在0.02以内,开始判断每行的数据
  
    For j = 4 To Range("IV" & i).End(xlToLeft).Column '每一行从D列到最后一列进行判断
    t = Mid(Cells(i, j), i, 1)
    For s = 1 To Len(Cells(i, j))
    k = Asc(Mid(s, 1, 1))
    If IsNumeric(Cells(i, j)) Then '判断为数字
      If Cells(i, j) >= Cells(i, "A") + Cells(i, "C") And Cells(i, j) <= Cells(i, "A") + Cells(i, "B") Then '若在范围内
      m = m + 1 '合格数+1
      Else
      n = n + 1 'NG数+1
      End If
    ElseIf Cells(i, j) = "OK" Or Cells(i, j) = "NG" Then
    j = 4
    i = i + 1
    ElseIf IsEmpty(Cells(i, j)) Then '判断为空
    ElseIf k > 0 And k < 255 Then '判断为字母
    ElseIf Asc(t) < 0 Then '判断为汉字If Asc(t) < 0
    ElseIf Cells(i, j) = "OK" Or Cells(i, j) = "NG" Then
    j = 4
    i = i + 1
    Else
    End If
    j = j + 1
   
  Else: j = 4 And i = i + 1
  End If
  Next i
Range("A1") = m
Range("B1") = n
End Sub



搜索更多相关主题的帖子: And Then 判断 End if 
2019-11-02 00:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
干嘛在写宏。
在后面另起一格子,写个计算公式,B列-C列。
然后再下一个是格子写公式: if(and(k1>0,k1<0.02),"合格","NG")
这步如果需要复查,你还可以使用条件单元格,自动标准不合格产品行。
最后再使用条件统计公式 countif(...,"合格") 统计合格的数量。

代码没看。

授人于鱼,不如授人于渔
早已停用QQ了
2019-11-02 23:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497560-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083255 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved