jvidinwx

jvidinwx1#

将其作为函数调用,例如

=CountPairs(B3:S3)

NB仅适用于当前版本中的行范围。

Function CountPairs(rng As Variant) As Integer
Dim v As Variant
Dim count, length, i As Integer
Dim found As Boolean

count = 0
found = False

v = rng
length = UBound(v, 2)

For i = 1 To length

' Count if second of pair

If Not (IsEmpty(v(1, i))) Then
    If found Then
        count = count + 1
        found = False
    Else
        found = True
    End If
Else
    found = False
End If

Next i

CountPairs = count

End Function

wmtdaxz3

wmtdaxz32#

这样可以很好地查看列A到H:这是一个数组公式,它比较A1B1,然后B1C1...H1I1,如果它们相同,就把1加到和上,否则就是0.
使用Ctrl+Shift+Enter使其作为数组公式工作,并且显然不要键入{}

kuhbmx9i

kuhbmx9i3#

[This这是我正在做的,请看图片链接。我的问题是我想计算两个0在一行中出现的次数。一串三个0不应该被计算两次。
问题的背景:我不想计算一个产品两周内没有销售一次的次数。如图所示,没有销售记录为0,销售记录为空白。因此,如果第1周和第2周的销售记录为0,则应计为1。这样,我就可以告诉我们的外部销售人员,他们需要查看该产品的演示等内容。因为它已经两周没有卖出任何东西了。因此,只要两周内连续出现两个0,它就应该被视为一次出现,然后公式应该查找下一次出现的两个0(两周没有卖出任何东西)。] 1

n6lpvg4x

n6lpvg4x4#

有了所有不同的、不重叠的对都应该被计数并且非零单元格可以是空的附加信息,我将设置一个帮助行,该帮助行具有从B4开始的公式,以便在每次零运行期间从零开始递减计数,并计算出每次零运行结束时的对的数量:-

=IF(AND(B3=0,LEN(B3)=1),IF(A4<=0,A4-1,-1),IF(A4<0,INT(ABS(A4)/2),0))

然后用U4中的以下公式计算该行中的对数(忽略任何负数):-

=SUMIF(B4:T4,">0")

gfttwv5a

gfttwv5a5#

我会把这个作为另一个答案贴出来,这要归功于@ambrosen。
因此,找出每次出现两个或多个零后跟一个空格并计算出现次数的公式是:

=SUM(ISNUMBER(B3:S3)*ISNUMBER(C3:T3)*ISBLANK(D3:U3))

必须使用CtrlShiftEnter作为数组公式输入
对于图片中的前两个产品:

考虑到所有不同的、不重叠的对都应该被计数,并且非零单元格可以为空的附加信息,纯数组公式的解决方案是非常难以实现的,但是折衷的解决方案是使用现有的数组连接函数,如here,将范围复制到字符串中,然后用单个字符替换每对零:-

=LEN(StringConcat("",IF(B3:S3="","/",B3:S3)))
-LEN(SUBSTITUTE(StringConcat("",IF(B3:S3="","/",B3:S3)),"00","0"))

相关问题