首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel表中列中字符串模式匹配的VBA代码

Excel表中列中字符串模式匹配的VBA代码
EN

Stack Overflow用户
提问于 2012-02-16 21:11:02
回答 2查看 5.5K关注 0票数 1

请张贴VBA代码。

我们将在Excel中得到17列的报告,在sheet1中的“K”列中匹配字符串模式后,我要取出项目。

下面是列“K”项的示例

女英雄

我是英雄,我是零,我是恶棍

英雄

反派

女英雄

我是英雄,我是零,我是恶棍

恶棍,女英雄

英雄,恶棍

演员

我是英雄,我是零

现在,我已经将过滤器应用于列'K‘,然后->文本筛选器->包含->然后给定模式*英雄*零*(它选择包含英雄&零的所有字符串)。

下面是为上述操作录制的宏。

代码语言:javascript
复制
Sub Macro1()  
'  
' Macro1 Macro  
'  

'
    Columns("H:H").Select  
    Selection.AutoFilter  
    ActiveSheet.Range("$H$1:$H$12").AutoFilter Field:=1, Criteria1:= _  
        "=****hero*zero****", Operator:=xlAnd  
End Sub

现在我得到的结果是(在同一张纸(Sheet1)的“K”栏中)

我是英雄,我是零,我是恶棍

我是英雄,我是零,我是恶棍

我是英雄,我是零

我希望VBA代码执行上面的操作,我希望上面的结果(它应该包含sheet1中的17列)在Sheet2中。

请在上面帮助我。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 00:57:45

现在你的问题更有意义了:)

试试下面的。

试用并测试了

代码语言:javascript
复制
Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim LastRowWs As Long
    Dim Rng As Range

    '~~> Set your Input Sheet
    Set ws = Sheets("Sheet1")

    '~~> Get the lastrow in Sheet1
    LastRowWs = ws.Cells.Find(What:="*", After:=ws.Range("A1"), _
    SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    '~~> Filter the Range
    ws.Range("A1:K" & LastRowWs).AutoFilter Field:=11, Criteria1:= _
    "=*hero*zero*", Operator:=xlAnd

    With ws.AutoFilter.Range
        On Error Resume Next
        '~~> Set the copy range [17 to include all 17 columns]
        Set Rng = .Offset(1, 0).Resize(.Rows.Count - 1, 17) _
                   .SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
    End With

    '~~> There is no match found
    If Rng Is Nothing Then
        MsgBox "There is no data which matches the '*hero*zero*' criteria"
        Exit Sub
    End If

    '~~> Prepare sheet 2 for output
    Sheets("Sheet2").Cells.Clear

    '~~> Copy the cells
    Rng.Copy Sheets("Sheet2").Range("A1")

    '~~> Remove autofilter from Input sheet
    ws.AutoFilterMode = False
End Sub
票数 4
EN

Stack Overflow用户

发布于 2012-02-17 00:09:21

我现在不能调试代码,但是这样的代码应该可以:

代码语言:javascript
复制
Sub filter_and_copy()   
    Sheets("Sheet1").Range("K1").AutoFilter Field:=1, Criteria1:= _  
        "=*hero*zero*", Operator:=xlAnd 
    Sheets("Sheet1").Range("A:R").SpecialCells(xlvisible).Copy Destination:= _
        Sheets("Sheet2").Range("A1")
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9319128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档