尝试从列J中删除不在Excel中的列F中的所有值

时间:2012-08-14 14:19:01

标签: excel

现在我认为在Excel中有一个相当简单的方法。我打算用一种自定义的Python方式来做这件事,但我并不是非常精通CSV模块。我根本不了解VBA(虽然我不会因为这项任务而学习它。)

基本上我的问题是:

我有一个列J,其中有多个名字(连接的第一个和最后一个名字来自H和I列,公式为=H&" "&I,我想做一些事情:

1 - 首先,我想将列G与列J相关联。(列G包含我尝试与所有其他行关联的联系人ID)。我相信我会和一群人一起做这件事吗?

2 - 其次,我想删除整个F列中没有匹配的J(以及G)的所有值。

基本上,对于F的所有值,如果J列中没有任何值相等,我希望删除或隐藏J和G的分组。

注意,绝对没有在整个时间内对G进行验证,仅在F和J之间进行验证。

我的怀疑是,这意味着将J的每个值与F的值数组进行比较,然后如果没有对应的值,则删除该J的特定值是其中一部分的组

编辑:为了澄清,F中的数据也是名字和姓氏。

1 个答案:

答案 0 :(得分:0)

我明白这是非常不优雅的(甚至可能完全没有成功),但这会做你想要的。您只需要将列的范围调整为您想要的任何值(我使用了17,000行)。我像你说的那样使用了J和F列,所以你只需要运行它:

Sub CheckColumnForValuesInAnotherColumn()

Dim CheckColumn As Range
Dim ColumnToDeleteValuesFrom As Range

Dim wbk As Workbook
Set wbk = ThisWorkbook
Set ws = wbk.Sheets(1)

Set CheckColumn = ws.Range("F2:F17000")
Set ColumnToDeleteValuesFrom = ws.Range("J2:J17000")

Dim cell As Range

On Error Resume Next

Application.ScreenUpdating = False

ws.Select

    For Each cell In ColumnToDeleteValuesFrom

        If Application.WorksheetFunction.VLookup(cell.Value, CheckColumn, 1, False) = IsError(xlErrNA) Then
            cell.ClearContents
        End If

    Next cell

ws.Select
Range("A1").Select

Application.ScreenUpdating = True

End Sub

祝你好运。