首页 > 解决方案 > 即使存在多个实例,如何在excel的列中搜索连续数字的特定数据

问题描述

如何在excel电子表格的1和0的大数据列中找到多个连续数字存在的实例。例如,我的 excel 列如下所示:

0                    
0  
1   
1   
0  
0  
1  
0  
1   
0  
0  
1  
1   
0  
1  
1  
1  
0  
0  
1   
1    
0    
0  
1   
0

请假设这是我的一些列数据,我需要找到列中存在 1 和 0 的序列的任何位置。

我定义了一个查找单个实例的函数,如下所示:

Function FINDSEQ(seq As String, rng as Range) As Long
    FINDSEQ = InStr(1, Join(Application.Transpose(rng.Value), ""), seq)
End Function

但我找不到如何找到多个实例(如果存在)。例如,我需要找到:

1    
1  
0   
0   
1  
0   

作为连续数字的序列,我应该怎么做?
这里 1 1 0 0 1 0 出现了两次,但是根据上面定义的函数,我只能找到一个实例。

标签: excelvbaexcel-formulaspreadsheetexcel-2016

解决方案


请尝试下一个功能:

Function FINDSEQ(seq As String, rng As Range) As Long
 FINDSEQ = UBound(Split(Join(Application.Transpose(rng.Value), ""), seq))
End Function

并以以下方式调用它:

Sub testFINDSEQ()
  Dim sh As Worksheet, rng As Range
  
  Set sh = ActiveSheet
  Set rng = sh.Range("A1:A25")
  Debug.Print FINDSEQ("110010", rng)
End Sub

或来自单元格(如 UDF):

=FINDSEQ("110010",A1:A25)

不要忘记删除您已经存在的功能


推荐阅读