我会尽力去尝试,不要让声音听起来令人困惑-到此为止:
我正在创建一个电子表格,一旦用户提供值,该电子表格将对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 SSN
列在Q
和R
列中。
这是一个旧的宏,我正在尝试删除原来的Full date of Birth
和Full 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
预先感谢您的帮助!
答案 0 :(得分:0)
已更新为最后一行:
您的问题可能出在以下事实:您正在逐个(或一次几个)删除列,因此一次删除后数据在移动,并且不再与指定的列对齐。完成所有插入操作后,尝试一次删除所有列,如下所示。
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
答案 1 :(得分:0)
这将:
LRow
)J, N, X, AQ
)的文本Q, R
)并将单元格向左移动Option Explicit
Sub PrivateInfo()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Application.ScreenUpdating = False
With ws
Dim LRow As Long: LRow = .Range("J" & .Rows.Count).End(xlUp).Row
.Range("J2:J" & LRow).Copy: .Range("J2").PasteSpecial xlPasteValues
.Range("N2:N" & LRow).Copy: .Range("N2").PasteSpecial xlPasteValues
.Range("X2:X" & LRow).Copy: .Range("X2").PasteSpecial xlPasteValues
.Range("AQ2:AQ" & LRow).Copy: .Range("AQ2").PasteSpecial xlPasteValues
.Range("Q:Q", "R:R").EntireColumn.Delete (xlToLeft)
End With
Application.ScreenUpdating = True
End Sub
您的问题专门要求复制/粘贴解决方案,但是清除公式并保持值(此处的速度稍快,但在其他情况下更快)的更快方法是将范围设置为{{1} }:
range.value