根据列数据创build新的Excel行

大家下午好,

我有一个问题,我有用户谁拥有多个银行帐户的详细信息。 我需要为拥有多个银行账户的每位员工创build一个新行,并为第二个银行账户分配一个新行。

Employee Number User ID BSB Account number 10000591 WOODSP0 306089,116879 343509,041145273 10000592 THOMSOS0 037125 317166 

截图1

我需要它看起来像这样:

 Employee Number User ID BSB Account number 10000591 WOODSP0 306089 343509 10000591 WOODSP0 116879 041145273 10000592 THOMSOS0 037125 317166 

截图2

有什么想法吗? 您的意见非常感谢!

截图在这里来演示:

右键单击选项卡并select“查看代码”

将此代码粘贴到:

 Sub SplitOnAccount() Dim X As Long, Y As Long, EmpNo As String, UserID As String, BSB As Variant, AccNo As Variant Range("F1:I1") = Application.Transpose(Application.Transpose(Array(Range("A1:D1")))) For X = 2 To Range("A" & Rows.Count).End(xlUp).Row EmpNo = Range("A" & X).Text UserID = Range("B" & X).Text BSB = Split(Range("C" & X).Text, ",") AccNo = Split(Range("D" & X).Text, ",") For Y = LBound(AccNo) To UBound(AccNo) Range("F" & Range("F" & Rows.Count).End(xlUp).Row).Offset(1, 0).Formula = EmpNo Range("G" & Range("G" & Rows.Count).End(xlUp).Row).Offset(1, 0).Formula = UserID Range("H" & Range("H" & Rows.Count).End(xlUp).Row).Offset(1, 0).Formula = BSB(Y) Range("I" & Range("I" & Rows.Count).End(xlUp).Row).Offset(1, 0).Formula = AccNo(Y) Next Next End Sub 

closures窗口回到excel

按ALT-F8

selectSplitOnAccount并点击运行。

请注意,这将填充拆分数据到行F到I,确保没有什么在那里。 如果有回帖,我们可以改变它。

在运行它之前,还要将列F-I格式化为文本,否则Excel会将前导零除去,因为它会将其解释为数字。

这是另一个似乎执行你正在寻找的子。

 Sub stack_accounts() Dim rw As Long, b As Long Dim vVALs As Variant, vBSBs As Variant, vACTs As Variant With ActiveSheet '<-define this worksheet properly! For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 vVALs = .Cells(rw, 1).Resize(1, 4).Value vBSBs = Split(vVALs(1, 3), Chr(44)) vACTs = Split(vVALs(1, 4), Chr(44)) If UBound(vBSBs) = UBound(vBSBs) Then For b = UBound(vBSBs) To LBound(vBSBs) Step -1 If b > LBound(vBSBs) Then _ .Rows(rw + 1).Insert .Cells(rw - (b > LBound(vBSBs)), 1).Resize(1, 4) = vVALs .Cells(rw - (b > LBound(vBSBs)), 3).Resize(1, 2).NumberFormat = "@" .Cells(rw - (b > LBound(vBSBs)), 3) = CStr(vBSBs(b)) .Cells(rw - (b > LBound(vBSBs)), 4) = CStr(vACTs(b)) Next b End If Next rw End With End Sub 

我原本只是要处理列C和D中逗号分隔值的行,但我认为处理所有这些行将允许macros设置文本数字格式,摆脱作为文本错误警告的数字,并保持在041145273领先零。

分割帐户并添加新行(s)