Excel VBA:匹配A2指定文本筛选Table1第9列后复制整列到新表并分列如何实现?
修改后完整VBA代码
Private Sub TextBox1_Change() Dim filterinput As Range Dim filterrange As Range Dim targetSheet As Worksheet Dim visibleCells As Range ' 初始化筛选区域和筛选条件单元格 Set filterinput = Range("A2") Set filterrange = Range("Table1") ' 执行筛选 filterrange.AutoFilter Field:=9, Criteria1:="*" & filterinput & "*", _ VisibleDropDown:=False ' 捕获筛选后的第9列可见单元格 On Error Resume Next Set visibleCells = filterrange.Columns(9).SpecialCells(xlCellTypeVisible) On Error GoTo 0 ' 无匹配内容时直接退出 If visibleCells Is Nothing Then MsgBox "未找到匹配内容" Exit Sub End If ' 新建工作表存放结果,按时间命名避免重名 Set targetSheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) targetSheet.Name = "筛选分列结果_" & Format(Now(), "HHMMSS") ' 复制可见内容到新工作表A列 visibleCells.Copy Destination:=targetSheet.Range("A1") ' 执行分列,此处默认按英文逗号分隔,可根据实际需求修改分隔符 targetSheet.Columns("A:A").TextToColumns _ Destination:=targetSheet.Range("A1"), _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Comma:=True, _ Other:=False End Sub
参数调整说明
- 分隔符修改:如果需要用其他分隔符,可修改
TextToColumns部分的参数,例如用分号分隔就把Comma:=True改成Semicolon:=True,用自定义字符分隔就设置Other:=True, OtherChar:="你的分隔符" - 表头处理:如果不需要复制Table1的表头,可将
Set visibleCells = filterrange.Columns(9).SpecialCells(xlCellTypeVisible)改为Set visibleCells = filterrange.Columns(9).Offset(1).SpecialCells(xlCellTypeVisible) - 结果工作表:如果不需要每次新建工作表,可删除新建工作表的代码,直接指定已存在的工作表作为目标表,粘贴前先清空原有内容即可
内容的提问来源于stack exchange,提问作者Mohammed Qaradaghi
相关产品推荐
相关产品推荐

