我从一个供应商那里下载数据,识别数据(第一列)在同一列中有一个人的名字和他们的参与者编号,用逗号分隔。
信息不是Excel的通用格式,单元格是文本格式。我以后会把它改过来的。
标识数据列中的逗号数不相同。
- 有时一行只有参与者编号
- 有时一行包含姓、名、参与者编号
- 有时一行有姓名、参与者编号。
参与者编号将始终位于标识栏的最后。如果一个人想匿名,名字就不会在那里或部分在那里。
我试着把它分开:
- 参与者编号在一列中。
- 姓氏可以与名字在一起,也可以在自己的列中。
两种方法都可以。
名称会改变,行数也会经常改变,但每次运行这个宏时,可能会改变大约1000行。
数据是这样开始的:
我是用Excel中的记录宏做的。
我在标识列的右侧添加两列,然后使用文本到列的特性来用逗号分隔数据。标识数据被放入三列中,我重命名了这三列。
Sub Add_and_rename_columns()
' Add_and_rename_columns Macro
'
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Range("A3").Select
ActiveCell.FormulaR1C1 = "Participant Last Name"
Range("B3").Select
ActiveCell.FormulaR1C1 = "Participant First Name"
Range("C3").Select
ActiveCell.FormulaR1C1 = "Participant Number"
End Sub
之后我得到:
并非所有参与者编号都在同一列中。
2条答案
按热度按时间mzaanser1#
如果我没理解错的话...
运行潜艇之前的数据是这样的:
运行子程序后(预期结果):
rg变量是列A中从第4行到最后一行的数据范围,然后插入两列,然后循环到rg中的每个单元格。
在循环中,它填充每个循环单元格。resize(1,3)使用逗号分隔单元格值的数组。它首先检查循环单元格值中是否没有逗号,然后在该值前面添加两个逗号,然后将其拆分。如果循环单元格值中有一个逗号,则将其替换为两个逗号,然后将其拆分。如果循环单元格值中有两个逗号,则它只是拆分循环单元格值。
wr98u20j2#
从列表中插入两个空白列,编辑下面的列范围,然后尝试