Excel计数模式和单元格

时间:2016-01-14 18:26:21

标签: excel vba excel-vba excel-formula

我想知道是否有办法:

我有1000个细胞。我想看看x在7个细胞周期中放置了多少次,

IE中。 X放在单元格1和3中。这将计为1

X放在单元格1,8和9中。这将计为2

X放置在单元格1,2,3,4,5,6,7,8,9,10,11,170中。这将计为3。

到目前为止,我已经

=SUM(IF(COUNTA(M77:N77)=0,0,1),IF(COUNTA(O77:P77)=0,0,1),IF(COUNTA(Q77:R77)=0,0,‌​1)) 

不确定VBA是否会更容易,但它需要不断更新,并且将比较10-12个具有不同7个单元格模式的1000个单元组。

1 个答案:

答案 0 :(得分:0)

尝试这个用户定义的功能:它似乎工作,但没有完全测试。如果您将公式放在x天跨度的中间,该函数将创建一个循环公式问题,如果您放入一个超过1行的范围,它可能会崩溃和刻录。

我无法找出内置Excel函数的任何组合来进行一系列范围的渐进计数,但它可能可以使用SUMPRODUCT和其他深奥公式来完成。然而,以前花了好几个小时试图想出一个可爱的公式,执行复杂的任务,没有人(包括我)以后会理解,最好的办法是编写一些代码,你可以根据自己的需要进行调试和更改。

但是,最后,您将不得不问自己,使用电子表格来执行类似数据库的功能是值得的。考虑到您给出的业务描述,我假设您可能需要尽快问自己这个问题:)

Public Function CountRangeSpanEntries(span As Integer, rng As Range) As Integer


Dim length As Integer
length = rng.Columns.count

Dim count As Integer
count = 0

Dim rw As Integer
rw = rng.Row

Dim used As Boolean
Dim index As Integer
Dim i As Integer

For index = 1 To length Step span
    For i = index To index + span - 1
        If Cells(rw, i).Value = "x" Then
            used = True
            End If
    Next i
    If used Then
        count = count + 1
        End If
used = False
Next index

CountRangeSpanEntries = count


End Function