Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel计数模式和单元格_Vba_Excel_Excel Formula - Fatal编程技术网

Vba Excel计数模式和单元格

Vba Excel计数模式和单元格,vba,excel,excel-formula,Vba,Excel,Excel Formula,我想知道是否有办法: 我有1000个细胞。我想知道一个x在一个7格周期中放置了多少次 即X被放置在单元格1和单元格3中。这将计为1 X放置在单元格1、8和9中。这将计为2 X被放置在单元格1、2、3、4、5、6、7、8、9、10、1170中。这将计为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

我想知道是否有办法:

我有1000个细胞。我想知道一个x在一个7格周期中放置了多少次

即X被放置在单元格1和单元格3中。这将计为1

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

X被放置在单元格1、2、3、4、5、6、7、8、9、10、1170中。这将计为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组1000个单元与不同的7单元模式进行比较。

尝试此用户定义的功能:它似乎可以工作,但尚未完全测试。如果你把公式放在一个X日跨度的中间,这个函数会产生一个循环公式问题,如果你放在一个超过1行的范围内,它可能会崩溃和燃烧。 我无法找出任何内置Excel函数的组合来对一系列范围进行这种渐进式计数,但可能可以使用SUMPRODUCT和其他深奥的公式来完成。然而,之前花了数小时试图想出一个可爱的公式来完成复杂的任务,以后没有人(包括我)会理解,你最好的办法是编写一些代码,你可以根据需要调试和更改

但是,最终,您将不得不问自己,使用电子表格来完成类似数据库的功能是否值得。考虑到您给出的业务描述,我认为您可能需要很快问自己这个问题:)


你的问题描述很难理解。如果你编辑它(点击问题下方的编辑链接),设置条件的格式(例如,每个条件都有新行)并检查标点符号(缺少一些句点?)以及关于工作表结构的更多信息(银行)?对不起,我没有意识到所有内容都在一行上。嗯,是的,StackOverflow需要两个“输入”创建新行,或使用“项目符号”或“编号”列表工具格式化。对于代码,使用代码工具进行格式化。为什么放在单元格1和单元格3中的x不能计数两次?一次用于单元格1-7,一次用于单元格2-8?实际单元格数是1001。集合将是{1-7}、{8-14}、{15-21},等等。我想计算有多少集合不是空的=SUM(IF(COUNTA(M77:N77)=0,0,1)、IF(COUNTA(O77:P77)=0,0,1)、IF(COUNTA(Q77:R77)=0,0,1))是一个开始,但我希望有一个比大型SUM/IF语句更简单的方法
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