0

现在我认为在 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 中的数据也是名字和姓氏。

4

1 回答 1

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

祝你好运。

于 2012-08-14T16:18:15.640 回答