如何删除包含指定字符串(最后一个匹配项)的最后一行以下的行?通过VBA

时间:2018-11-25 12:16:48

标签: excel vba match

嗨,我正在搜索并尝试合并一些VBA代码以解决我的问题,但到目前为止还没有成功。我想要做的是在列中搜索特定的单词(即“ XxX”,这只是该单元格的一部分)并找到最后一个匹配项,然后使用VBA删除该行下方的行。我有278个txt文件需要转换为xlsx才能批量应用。我添加了一个示例,所以也许我会更好地解释。

Ağ Teknolojileri Elemanı
Network Technologies Personnel
(Level 5)
12UY0046-5/A1
Occupational Health and Safety, Quality, Work Organization and Professional Development
XxX Explains OHS measures.
XxX Explains environment protection measures.
XxX Defines quality applications.
XxX Explains how to make work organization.
XxX Defines activities needed to be carried out for professional development.
12UY0046-5/A2
Basis of Computer Hardware and Software
XxX Explains the operating logic of the computer.
XxX Explains basic computer use.
XxX Explains the working principles of computer energy hardwares.
XxX Describes the basic features of computer components.
df
fsd
s
gfd
gdfg
dfs
fd

注意:全部在“ A”列中。

对于此示例,我希望VBA代码将找到包含“ XxX”的最后一个单元格(XxX描述计算机组件的基本功能。)并删除该行下方的所有行。

我不知道我是否可以对txt文件执行此操作。但是,尽管如此,我仍然找不到针对txt文件的方法,我需要将这些txt文件更改为xlsx。

谢谢。

2 个答案:

答案 0 :(得分:0)

好吧

此代码应适用于a列中包含XxX的字符串

onclick

答案 1 :(得分:0)

尝试:

Option Explicit
Sub delAfter()
    Const sFind As String = "XxX"
    Dim WS As Worksheet, R As Range

'Find last sFind
Set WS = Worksheets("sheet2") 'or ActiveSheet or whatever
With WS.Cells
    Set R = .Find(what:=sFind, _
         after:=.Item(1, 1), _
         LookIn:=xlValues, _
         lookat:=xlPart, _
         searchorder:=xlByRows, _
         searchdirection:=xlPrevious, _
         MatchCase:=True)
    If Not R Is Nothing Then
        Set R = WS.Range(R.Offset(1, 0), .Cells(.Rows.Count, R.Column).End(xlUp))
        R.EntireRow.Delete 'deletes entire row.  If just want a single column, adjust
    End If
End With

End Sub

找到最后一个XxX后,将删除整行。 如果检查代码,您会看到我们从第一行开始,但是搜索顺序是xlprevious,所以我们将从底部开始搜索。

如果需要将其限制为特定列,只需更改要搜索的范围。