首页 > 解决方案 > Excel 宏 - 复制和粘贴值并删除原始列

问题描述

我会尽我所能,不要听起来令人困惑 - 所以这里是:

我正在创建一个电子表格,一旦用户提供了值,它将散列 SSN 和 DOB。一旦提供了完整的 SSN 和 DOB,我有公式可以将最后 4 个 ssn、前 4 个 dob、散列的 dob 和散列的 SSN 添加到它们自己的列中。但是,我想删除具有提供的完整 SSN 和 DOB 的列,而不会丢失散列的 DOB 和 SSN,包括前 4 个 DOB 和最后 4 个 SSN。

电子表格格式为:

J N X AQ Hashed DOB First 4 DOB Last 4 SSN Full SSN Hash

和列在列Full date of Birth和中。Full SSNQR

这是我正在尝试删除原始值Full date of BirthFull SSN值的旧宏。我不知道如何让它在分散而不是彼此相邻的列上工作。

Sub CopyAndDeleteSensData()

    Columns("E:H").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("A:D").Select
    Selection.Copy
    Columns("E:E").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Columns("A:D").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("A:D").EntireColumn.AutoFit
    Columns("J:K").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("E2").Select

End Sub

预先感谢您的帮助!

标签: vbaexcel

解决方案


更新以修复最后一行:

您的问题可能在于您正在逐个(或一次删除几个)删除列,因此数据在一次删除后发生变化,不再与您指定的列对齐。在所有插入完成后,尝试一次删除所有列,如下所示。

Sub main()

    ' Delete columns A and C from "Sheet1"    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    ws.Range("a:a, c:c").EntireColumn.Delete


End Sub

推荐阅读