我有一张工作表,我们需要将所有符合模式的值移动到不同的列。
例如,我们有一列,其值为一个或多个字母,B
后跟一个或多个数字,如k123
,,,,,,等。我需要将以 开头的所有值放在列中,将以 开头的所有值放在列中,等等。k4567
g345
g65535
HJ4567
KL4553
k
C
g
D
有没有什么宏可以做到这一点?
答案1
此代码将创建一个宏,根据列中每个单元格的数字前面的字母移动数据B
。将其粘贴到 VBA Explorer ( Alt+ F11) 中,它将在宏窗口中显示为MoveData
。
您将看到代码查看每个单元格以查看最左边的字符是什么。如果是,则将k
单元格内容复制到右侧 1 个位置的单元格(C 列),然后清除原始单元格。如果字符是g
,则将其复制到右侧 2 个位置的单元格(D 列),然后清除原始单元格。
Sub MoveData()
Dim myrange, cell As Range
Set myrange = ActiveSheet.Range("B:B", Range("B:B").End(xlDown))
For Each cell In myrange
If Left(cell.Value, 1) = "k" Then
cell.Offset(0, 1).Value = cell.Value
cell.ClearContents
ElseIf Left(cell.Value, 1) = "g" Then
cell.Offset(0, 2).Value = cell.Value
cell.ClearContents
End If
Next cell
'Delete empty cells in column C
Columns("C:C").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
'Delete empty cells in column D
Columns("D:D").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("A1").Select
End Sub
您可以通过修改语句中的"k"
或来更改它寻找的值。"g"
IF
免责声明:使用风险自负。备份您的作品。对任何数据丢失概不负责。