首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA查找重复,然后评估另一个单元格值。

VBA查找重复,然后评估另一个单元格值。
EN

Stack Overflow用户
提问于 2016-10-07 18:03:01
回答 2查看 194关注 0票数 0

我最初问了一个问题。

基本上,我希望VBA查看L:L列。如果cell=program和下面的单元格不等于车床,我希望删除上面的行。如果单元格不相等,则继续查找直到数据结束。

我意识到我需要看不同的数据,因为我失去了我需要保留的行。

新逻辑,我认为它仍然会使用一些旧的程序,但它需要使用另一列排序。我需要VBA查看E:E列。如果下面一行中的单元格是上面单元格的副本,那么请查看该行中的L列,看看该单元格是否表示Program。如果是这样的话,下面的单元应该是车床。如果不是车床,删除程序行,如果是车床,请离开两行。如果E列中的单元格不是重复的,请继续查找。例如。如果E5=E6,如果不继续查找。如果是,请查看L5,看看它是否表示程序。如果是这样的话,请看L6的车床。如果不删除ROW5。

这是我收到的第一个问题的答案,我认为这个问题还会被使用。

代码语言:javascript
复制
Dim rngCheck as Range
Dim rngCell as Range

Set rngCheck = Range("L1", "L" & Rows.Count - 1)

For each rngCell in rngCheck
    If rngCell.value = "Program" And rngCell.offset(1,0).value <> "lathe" then
        rngCell.offset(-1,0).EntireRow.Delete
    End if
Next rngCell
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 18:40:52

这样就行了

代码语言:javascript
复制
For i = ThisWorksheet.Cells.SpecialCells(xlCellTypeLastCell).Row to 2 step -1
    ' that row do you mean the duplicate or the original (I am using original)
    If ThisWorksheet.Cells(i, 5) = ThisWorksheet.Cells(i-1, 5) and _        
       ThisWorksheet.Cells(i-1, 12) = "Program" and ThisWorksheet.Cells(i, 12) <> "Lathe"
       ThisWorksheet.Rows(i-1).EntireRow.Delete
    End If
Next i
票数 0
EN

Stack Overflow用户

发布于 2016-10-07 18:53:53

当删除时,最好先从上到后迭代。如果防止您跳过行的话。

代码语言:javascript
复制
Sub RemoveRows()
    Dim x As Long

    With Worksheets("Sheet1")

        For x = .Range("E" & .Rows.Count).End(xlUp).Row To 2 Step -1
            If .Cells(x, "E").Value = .Cells(x - 1, "E").Value And Cells(x - 1, "L").Value = "Program" Then
                .Rows(x).Delete
            End If
        Next

    End With

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39923367

复制
相关文章

相似问题

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