首页 > 解决方案 > 在列中查找以“SS”开头的单元格并将行向左移动

问题描述

我复制了一份需要整理的pdf。我在 A 列中有规范(SS####),在 BH 中有其他文字。问题是一些规范最终出现在 B 列中,所以我想搜索所有与 SS 一起使用的单元格,然后将整行移过来。我尝试使用自动过滤器并选择可见单元格以及 .find 无济于事。

谢谢您的帮助!

Sub Test()
Dim Sheet As Worksheet
Application.ScreenUpdating = False
Set Sheet = Sheets("Original Index Goes Here")

Dim rng As Range, sel As Range, selrange As String, r As Long


Set rng = Range("B1:B10000")


rng.AutoFilter Field:=1, Criteria1:="=SS*", _
             Operator:=xlAnd, visibledropdown:=True
ActiveSheet.AutoFilter.Range.Offset(1,0) _
            .Rows.SpecialCells(xlCellTypeVisible).Select

End Sub

这将为下面显示的四个中的每一个选择 B 列中的单元格,但我不知道如何抓取该行的其余部分并将其向右移动。()

Excel 示例

标签: vbaexcel

解决方案


试试这个,它会在 B 列中搜索类似“SS”的任何内容,如果找到,则删除左侧的单元格,即 A 并将整行向左移动。

Sub findSS()
Dim getLastRow As Long
getLastRow = Range("B" & Rows.Count).End(xlUp).Row

For i = 1 To getLastRow
    If Range("B" & i) Like "*SS*" Then
        Range("A" & i).Select
        Selection.Delete Shift:=xlToLeft
    End If
Next
End Sub

更新,将在 D 列中找到“SS”,或者如果您希望它在任何列中找到,只需将“D”更改为您想要的任何列,它将获取 SS 并插入一行并将其放在那里。

Sub findSS()
Dim getLastRow As Long
Dim columnLetter As String
getLastRow = Range("B" & Rows.Count).End(xlUp).Row
columnLetter = "D"

For i = 1 To getLastRow
    If Range(columnLetter & i) Like "*SS*" Then
        Range(columnLetter & i).Insert shift:=xlDown
    End If
Next

End Sub

推荐阅读