0

Excelでこれを行うかなり簡単な方法があると思います。これを行うカスタム Python の方法を作成するつもりでしたが、CSV モジュールに精通していません。私は VBA をまったく知りません (ただし、このタスクのために VBA を学ぶことに反対しているわけではありません)。

基本的に私の問題はこれです:

複数の名前を持つ列 J があります (列 H と I の姓名を数式=H&" "&Iで連結し、いくつかのことをしたい:

1 - まず、列 G を列 J に関連付けます (列 G には、他のすべての行に関連付けようとしている連絡先 ID が含まれています)。私はグループでこれを行うと思いますか?

2 - 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 に答える