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

尝试删除Excel中J列中不在F列中的所有值,excel,Excel,现在我想在Excel中有一个相当简单的方法来实现这一点。我打算用一种定制的Python方法来实现这一点,但我对CSV模块不是非常精通。我一点也不懂VBA(尽管我并不反对为这项任务学习VBA) 基本上,我的问题是: 我有一个J列,其中有多个名称(将H列和I列中的名字和姓氏用公式=H&&“&I连接起来),我想做几件事: 1-首先,我想将G列与J列相关联(G列包含一个联系人id,我正试图将其与所有其他行相关联)。我相信我会对一个组执行此操作 2-第二,我想删除在整个F列中不匹配的J(和G)的所有值 本

现在我想在Excel中有一个相当简单的方法来实现这一点。我打算用一种定制的Python方法来实现这一点,但我对CSV模块不是非常精通。我一点也不懂VBA(尽管我并不反对为这项任务学习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中的数据也是名字和姓氏。

我知道这是非常不雅观的(甚至可能是完全不必要的),但这将满足您的需要。您只需将列的范围调整到您想要的范围(我使用了17000行).我像你说的那样使用了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

祝你好运。

你好,Andrew,你完全不喜欢Python解决方案吗?如果你熟悉Python,那么CSV模块实际上并不是那么糟糕:)很乐意帮助解决方案。在任何情况下,您能提供一些示例行来了解如何设置它吗?实际上,我已经开始用Python开发一个解决方案。这是我到目前为止得到的:导入csv F=csv.reader(open('F.csv','rb'),delimiter=',')FList=[]用于F:FList.append(','.join(row))中的行JG=csv.reader(open('JG.csv','rb'),delimiter=','))ultralist=[]用于FList中的项:用于JG中的行:如果行[1]==项:ultralist.append(row)打印ultralistNice!因此,csv.reader的一般概念是,它将把csv中每一行的内容读入一个列表,其中每个元素表示一个列值。或者,还有csv.DictReader,它允许您按名称访问列。如果你想解决问题,很高兴进入聊天室。这是VBA附带说明。你需要将此代码插入VBA模块,然后运行它。