Excel 额外的de限制器导致数据向右移动1列
所以我得到了一个.csv文件,不幸的是,其中一个字段有时包含一个客户名称,格式为lastname,firstname,这会丢失数据。幸运的是,我可以检测到何时发生这种情况,因为正在移位的列之一具有固定值。例如: 好行:Excel 额外的de限制器导致数据向右移动1列,excel,vba,Excel,Vba,所以我得到了一个.csv文件,不幸的是,其中一个字段有时包含一个客户名称,格式为lastname,firstname,这会丢失数据。幸运的是,我可以检测到何时发生这种情况,因为正在移位的列之一具有固定值。例如: 好行: [New Contact!] [phonenumber] 5939262 [Unknown] 2000 5083 5083 坏行: [lastname] [firstname] [phonenumber] 2800 [Unknown] 20
[New Contact!] [phonenumber] 5939262 [Unknown] 2000 5083 5083
坏行:
[lastname] [firstname] [phonenumber] 2800 [Unknown] 2000 5061 5061
因此,如果第5列=[未知],我知道该行的列需要向左移动。第一列包含未使用的数据,因此,如果我丢失了名称,我不在乎,它只是数字
有没有简单的方法可以在不重新生成数据的情况下执行此操作?您可以在导入后尝试使用此宏修复文件:
Sub fixIt()
Dim r As Range
For Each r In Worksheets("Sheet1").UsedRange.Rows ' <-- put the right sheet name here
If WorksheetFunction.CountA(r) > 7 Then r.value = r.Offset(, 1).value
Next
End Sub
Sub-fixIt()
调光范围
对于工作表(“Sheet1”)中的每个r。使用drange.Rows'7,然后r.value=r.Offset(,1).value
下一个
端接头
导入后,您可以尝试使用此宏修复文件:
Sub fixIt()
Dim r As Range
For Each r In Worksheets("Sheet1").UsedRange.Rows ' <-- put the right sheet name here
If WorksheetFunction.CountA(r) > 7 Then r.value = r.Offset(, 1).value
Next
End Sub
Sub-fixIt()
调光范围
对于工作表(“Sheet1”)中的每个r。使用drange.Rows'7,然后r.value=r.Offset(,1).value
下一个
端接头
您是自己解析CSV文件(使用VBA)还是使用Excel?如果是自己做的,在将行拆分为列之前,请计算文本中逗号的数量。如果是6,那么什么也不要做,如果是7,那么用分号替换第一个。然后像往常一样解析该行。您是自己解析CSV文件(使用VBA)还是使用Excel?如果是自己做的,在将行拆分为列之前,请计算文本中逗号的数量。如果是6,那么什么也不要做,如果是7,那么用分号替换第一个。然后像往常一样解析这行代码。这太简单了,让人不安。非常简单,成功了,只花了几分钟(接近一百万行),谢谢你。@MartinBoros欢迎你。如何加速代码可能是一个有趣的问题。例如,尝试使用Application.ScreenUpdate=False
,看看它是否提高了速度。这是如此简单,令人不安,令人心痛。非常简单,完成了这个技巧,只花了几分钟(接近100万行),谢谢。@MartinBoros欢迎您。如何加速代码可能是一个有趣的问题。例如,尝试使用Application.screenUpdate=False
查看它是否提高了速度。