1

我需要查找如果说 COL A 具有 COL B 中缺少的值,我想查找它是否丢失,然后删除并向上移动行,问题是结构看起来像这样

ID   | INFO1    | INFO2   | INFO3 ------------    ID2   | INFO1    | INFO2   | INFO3  
50   | XXXXX    | XXXXX   | XXXXX ------------    50    | XXXXX    | XXXXX   | XXXXX  
51   | XXXXX    | XXXXX   | XXXXX ------------    51    | XXXXX    | XXXXX   | XXXXX  
52   | XXXXX    | XXXXX   | XXXXX ------------    52    | XXXXX    | XXXXX   | XXXXX  
53   | XXXXX    | XXXXX   | XXXXX ------------    53    | XXXXX    | XXXXX   | XXXXX  
54   | XXXXX    | XXXXX   | XXXXX ------------    55    | XXXXX    | XXXXX   | XXXXX  
55   | XXXXX    | XXXXX   | XXXXX ------------    56    | XXXXX    | XXXXX   | XXXXX  

我的问题开始了,到目前为止我已经解决了这个问题:

Sub Teste()
   Dim rngA As Range
   Set rngA = Range("F2")
   Set rngB = Range("H2")
   While rngA.Value <> ""
        Columns("H:H").Select
        Set Cell = Selection.Find(What:=rngA.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        If Cell Is Nothing Then
            rngA.Value = ""
            Set rngA = rngA.Offset(1)
        Else
            Set rngA = rngA.Offset(1)
        End If
    Wend
    While rngB.Value <> ""
        Columns("F:F").Select
        Set Cell = Selection.Find(What:=rngB.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        If Cell Is Nothing Then
            rngB.Value = ""
            Set rngB = rngB.Offset(1)
        Else
            Set rngB = rngB.Offset(1)
        End If
    Wend

End Sub

这设法找到 ID2 上缺少的 ID 值并将其替换为空值,但我想删除缺少的 ID | 信息1 | 信息2| INFO3 删除它们并将行向上移动,对于我的生活,我找不到如何去做。(代码不反映示例)

有人知道怎么做吗?

4

1 回答 1

0

您的示例与代码不完全匹配 - 看起来您想要删除 ID 列和右侧的三列(因此 ID 列是分开的列),但在您的代码中,ID 列是 F 和 H。对于我的代码如下,我假设您要删除 FG 和 HI。

Dim searchColumn As Range
Dim rngA As Range

Dim i As Integer
For i = 1 To 2
    If i = 1 Then
        Set rngA = Range("f2")
        Set searchColumn = Range("h:h")
    Else
        Set rngA = Range("h2")
        Set searchColumn = Range("f:f")
    End If
    While rngA.Value <> ""
        searchColumn.Select
        Set Cell = Selection.Find(What:=rngA.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
        If Cell Is Nothing Then
            Set rngA = rngA.Offset(1)
            Range(rngA.Offset(-1), rngA.Offset(-1, 1)).Delete xlUp
        Else
            Set rngA = rngA.Offset(1)
        End If
    Wend
Next

如果您需要删除其他列,请将该行更改为.Delete--1在该行中表示要删除的 ID 列右侧的列数。

于 2013-09-19T23:20:09.977 回答