Loop错误地粘贴了包含数据的列

时间:2012-11-14 11:57:05

标签: excel excel-vba excel-2010 vba

底部的代码将列从一个工作表单独复制到另一个工作表,并逐个执行文本到列。例如,在处理了A列之后,B列(第一张)的Text to columns过程应该在第二张表的下一个可用空列中开始。

第一张纸中的行长度不同。因此,列A可能具有单元格A1:A25已满,但是列N可能只有一些单元格已满,因为某些行已经结束。

此代码可以正常工作,直到它遇到第一个部分完整的列,然后它会将列粘贴到同一列中。

我认为下面这一行会解决这个问题,但它似乎不起作用:

If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0  Then b = b + 1

我在过去的几个小时里一直在努力,但我没有成功。任何帮助都会非常感激!提前谢谢!

For a = 1 To 60

'If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Import_R").Columns(a)) < 1048576
If Application.WorksheetFunction.CountA(Excel.Sheets("Import_R").Columns(a)) > 0 Then

    Excel.Sheets("Import_R").Columns(a).Copy

    b = Excel.Sheets("Organise_R").Cells(1, Columns.Count).End(Excel.xlToLeft).column

    Excel.Sheets("Organise_R").Select

    'If Cells(1, b) <> ""
    'If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Organise_R").Columns(b)) < 1048576 Then
    If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0 Then b = b + 1


        Excel.Sheets("Organise_R").Columns(b).EntireColumn.Select
        Excel.ActiveSheet.Paste

        Excel.Application.CutCopyMode = False
        Selection.TextToColumns Destination:=Cells(1, b), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
                Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True

End If



Next a

1 个答案:

答案 0 :(得分:1)

这不是我会怎么做的 - 具体来说,我不明白你的代码行:

If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0 Then b = b + 1

因为我认为你在这里需要一个循环才能找到最后一列,但这是另一回事。

但我想回答你的问题,你最好使用UsedRange方法找到工作表中的最后一列,可能是这样的:

    b = Excel.Sheets("Organise_R").UsedRange.Columns.Count

替换你的行:

    b = Excel.Sheets("Organise_R").Cells(1, Columns.Count).End(Excel.xlToLeft).column

希望这有帮助。