我在sheet1上有多行单字符串数据,我使用MID公式在sheet2上分隔成多列;如果我向sheet1添加新的字符串数据行,我如何自动将相同的MID公式添加到每个添加的行的每列中?
以下是这两张纸目前的样子:
[sheet1] - 字符串数据
1239876010407201520.00
4566543010407201550.00
7893210010407201560.00
Sheet 2中
号码用户类型日期金额
123 9876 1 4/7/2015 $ 20.00
456 6543 1 4/7/2015 $ 50.00
789 3210 1 4/7/2015 $ 60.00
如果我向sheet1添加一行字符串数据,如何让Excel自动添加一行并将相同的MID公式应用于sheet2上的每个表格列?
答案 0 :(得分:0)
你可以将你的mid公式包装在一个iferror公式中,如果它是一个错误就把它设置为空白,然后将它拖到一堆行中,哪里有数据它会解决,哪里没有它只会是空白给人的感觉那里什么都没有。
如果您发布原始的mid公式,我会给你一个例子,测试单元格而不是使用iferror可能是谨慎的,因为iferror会捕获真正的错误。
答案 1 :(得分:0)
右键单击Sheet1的名称标签,然后选择查看代码。当VBE打开时,将以下内容粘贴到标题为 Book1 - Sheet1(Code),
的代码表中Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(1)) Is Nothing Then
On Error GoTo Safe_Exit
Application.EnableEvents = False
Dim rng As Range, str As String, rw As Long
For Each rng In Intersect(Target, Columns(1))
str = rng.Value
If Len(str) >= 18 Then
With Sheet2 'using sheet codename in case it gets reordered or renamed
rw = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(rw, 1) = Left(str, 3)
.Cells(rw, 2) = Mid(str, 4, 4)
.Cells(rw, 3) = Mid(str, 8, 2)
.Cells(rw, 4) = DateSerial(Mid(str, 14, 4), Mid(str, 10, 2), Mid(str, 12, 2))
.Cells(rw, 5) = CCur(Mid(str, 18, 99))
End With
End If
Next rng
End If
Safe_Exit:
Application.EnableEvents = True
End Sub
点击 Alt + Q 返回工作表。键入或粘贴到列A中的任何值都将被剥离并拆分为5个值,并填充到Sheet2列A:E中的第一个可用行中。在尝试处理之前,我已将最小长度设置为18个字符。这一长度相当于一年后的右手端数量的一位数。