我总体上是相当新的excel,所以任何帮助都非常感谢,关于我的问题。
我从一个供应商那里下载了数据,识别数据,(第一列),在同一列中有一个人的名字和他们的参与者编号,用逗号隔开。信息不是excel的通用格式,单元格是文本格式。我将在以后转换,但只是想我会提到它,以防它对创建一个合适的vba宏很重要。
问题是标识数据列中逗号的数量并不总是相同的。
- 有时一行只有参与者编号
- 有时一行包含姓、名、参与者编号
- 有时一行有名字、参与者编号。
参与者编号将始终位于识别列的最后,其前面只有可变数量的逗号,因为如果个人希望匿名,姓名可能不存在或仅部分存在。
我尝试做的是将其分开,以便参与者编号在单独的列中。姓可以与名放在一起,也可以在单独的列中。这两种方式都可以。姓名会更改,行数也会经常更改,但每次运行此宏时可能会更改大约1000行。
数据开始是这样的:
我在excel中使用record macro创建了这个宏。本质上我在标识列的右边添加了两列,然后使用文本到列的功能,用逗号分隔数据。因此标识数据被放入三列,然后我重命名了这三列。
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
在宏之后,我得到了这个:
正如您所看到的,并非所有参与者的编号都在同一列中。感谢您给予的任何帮助。
3条答案
按热度按时间e5nqia271#
如果我没理解错的话...
运行潜艇前的数据如下:
下入接头后(预期结果):
rg变量是A列从第4行到最后一行的数据范围,然后插入两列,再循环到rg中的每个单元格。
在循环中,它填充每个循环单元格。调整大小(1,3),拆分单元值得到的数组用逗号分隔,先检查循环单元值中是否没有逗号,然后在循环单元值前加两个逗号,再拆分,如果循环单元值中有一个逗号,则用两个逗号替换一个逗号。然后拆分它。如果循环单元格值中有两个逗号,则它只拆分循环单元格值。
pgky5nke2#
从列表中插入两个空白列,编辑下面的列范围,然后尝试
91zkwejq3#
非常感谢你们两个的帮助。卡玛的回答对我的需要稍微好一点,但两个回答都做了我需要做的。我感谢你们两个的回答。