Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 额外的de限制器导致数据向右移动1列_Excel_Vba - Fatal编程技术网

Excel 额外的de限制器导致数据向右移动1列

Excel 额外的de限制器导致数据向右移动1列,excel,vba,Excel,Vba,所以我得到了一个.csv文件,不幸的是,其中一个字段有时包含一个客户名称,格式为lastname,firstname,这会丢失数据。幸运的是,我可以检测到何时发生这种情况,因为正在移位的列之一具有固定值。例如: 好行: [New Contact!] [phonenumber] 5939262 [Unknown] 2000 5083 5083 坏行: [lastname] [firstname] [phonenumber] 2800 [Unknown] 20

所以我得到了一个.csv文件,不幸的是,其中一个字段有时包含一个客户名称,格式为lastname,firstname,这会丢失数据。幸运的是,我可以检测到何时发生这种情况,因为正在移位的列之一具有固定值。例如:

好行:

[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
查看它是否提高了速度。