根据值查找连续的单元格

时间:2014-11-12 21:07:59

标签: excel vba excel-vba

我有一组每月更新的数据。我需要分析所述数据以确定64以下的所有值,然后我需要查找此事件的两个连续实例。一旦找到,我想返回一个值,表明该供应商是一个问题。

第二个难题是,如果供应商已被标记为问题,我还需要分析三个连续值高于64的数据实例的数据。

我不确定VBA是否合适或公式方法是否有效。我能够编写大多数VBA代码并使用基本公式。这里的例子:
http://s28.postimg.org/im5rq83al/Untitled.png

2 个答案:

答案 0 :(得分:2)

此代码假设您的数据在单元格B4中开始(如图片所示),如果连续两次找到64以下,则输出问题。但是,如果在问题发生后连续3次发现超过64,则返回" N"没问题:

Sub VendorProblems()
    Dim cl As Long, LastRow As Long, i As Long, LastCL As Long, Problem As String
        LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
        LastCL = ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column - 1
    For i = 4 To LastRow
        Problem = ""
        For cl = 2 To LastCL
            Set r1 = Cells(i, cl)
            Set r2 = r1.Offset(0, 1)
            Set r3 = r1.Offset(0, 2)
            If r1.Value < 64 And r2.Value < 64 Then
            Problem = "Y"
            Else
            End If
            If r1.Value >= 64 And r2.Value >= 64 And r3.Value >= 64 Then
            Problem = "N"
            Else
            End If
        Next cl
        If Problem = "Y" Then
        Cells(i, LastCL + 1).Value = "Y"
        Else
        Cells(i, LastCL + 1).Value = "N"
        End If
    Next i
End Sub

答案 1 :(得分:1)

这是在单个列中粘贴这些公式的最简单的解决方案。如果第一个公式列为False,则可以忽略第二个。

低于64的两个连续值:

=OR( A1 + B1 < 128 , B1 + C1 < 128, etc.)

高于64的三个连续值:

=OR( A1 + B1 + C1 > 192 , B1 + C1 + D1 > 192 , etc.)