土星三号:提取含有文本15的数字组-vba+函数

来源:百度文库 编辑:我要文章网 时间:2019/11/18 07:31:18
提取含有文本15的数字组-vba+函数

 

用函数解决:(数组)

=OFFSET($A$2,SMALL(IF(OFFSET($A$2,1,,21,7)="15",ROW($A$3:$A$23),65536),ROW()-3)-2,COLUMN()-9,,)

I 4 单元格 输入 下拉 右拉即可:

效果如下

*******************************************************************************

$A$3:$G$23="15"-------》{FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE}

*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*--*-*-*-

MMULT({0,0,0,0,0,0,0;0,0,0,1,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,1,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,1,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,1;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,1,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0},{1;1;1;1;1;1;1})------》{0;1;0;0;0;1;0;0;0;1;0;0;0;0;1;0;0;1;0;0;0}

提取含有文本15所在行的下一行数字组
=INDEX(A:A,SMALL(IF(MMULT(($A$3:$G$23="15")*1,{1;1;1;1;1;1;1})>0,ROW($3:$23),""),ROW(1:1))+1)

***********************************************************************************************

提取同行时含有文本15和07的数字组

=INDEX(A:A,SMALL(IF(MMULT(($A$3:$G$23="07")+($A$3:$G$23="15"),{1;1;1;1;1;1;1})=2,ROW($3:$23),""),ROW(1:1)))

******************************************************************************************

提取同行时含有文本15和07所在行的下一行数字组
=INDEX(A:A,SMALL(IF(MMULT(($A$3:$G$23="07")+($A$3:$G$23="15"),{1;1;1;1;1;1;1})=2,ROW($3:$23),""),ROW(1:1))+1)

vba解决:

 

Dim endrow, R15ow
Sub 提取含有文本15的数字组()
Range("I4:o100").Clear
共有多少行
Range("A3:G" & endrow).Select
B = 2
DanQrow = 4
查找15的行
100:   If R15ow > B Then
      Range("A" & R15ow & ":G" & R15ow).Copy Range("I" & DanQrow)
      DanQrow = DanQrow + 1
      B = R15ow
    查找15的行
    GoTo 100
    Else
    Exit Sub
   End If
End Sub
Sub 共有多少行()
endrow = Range("a65536").End(xlUp).Row
End Sub
Sub 查找15的行()
Selection.Find(What:="15", After:=ActiveCell, LookIn:=xlFormulas).Activate
      R15ow = ActiveCell.Row
End Sub

Sub 提取含有文本15所在行的下一行数字组()
Range("Q4:W100").Clear
共有多少行
Range("A3:G" & endrow).Select
B = 2
DanQrow = 4
查找15的行
100:   If R15ow > B Then
      Range("A" & R15ow + 1 & ":G" & R15ow + 1).Copy Range("Q" & DanQrow)
      DanQrow = DanQrow + 1
      B = R15ow
    查找15的行
    GoTo 100
    Else
    Exit Sub
   End If
End Sub