Excel 如何将一列转换为多列?

Excel 如何将一列转换为多列?,excel,vba,Excel,Vba,我正在尝试将一列转换为多列 Set rng1 = Range("A3") Set rng2 = Range("A16") Set rng3 = Range("B3") Set rng4 = Range("A16") For Each R In Intersect(Range("A1:A5000"), ActiveSheet.UsedRange) If InStr(R, "Sunday") > 0 Then Range("C1").Value = 5

我正在尝试将一列转换为多列

Set rng1 = Range("A3")
Set rng2 = Range("A16")
Set rng3 = Range("B3")
Set rng4 = Range("A16")

For Each R In Intersect(Range("A1:A5000"), ActiveSheet.UsedRange)

    If InStr(R, "Sunday") > 0 Then

        Range("C1").Value = 5

        If rng2.Row > rng1.Row Then
            Range("C1").Value = 6
            Range("F3").EntireColumn.Insert
            Range("F3").EntireColumn.Insert
            Range("C1").Value = 9
            Range(rng2, rng3.End(xlUp)).Cut
            Range("C1").Value = 10
            Range("F3").PasteSpecial
            Range("C1").Value = 7
它在专用线路上总是失败

运行时错误1004应用程序定义或对象定义错误

我现在的假设是,它试图将其粘贴到A1之上

从底部向上的原因是,我可以在每个新列的底部偏移一行

编辑:尝试删除PasteSpecial并仅使用剪切方法粘贴,但仍然失败

编辑:尝试了该行

Range("F1").Value2 = Range(rng2, rng3.End(xlUp)).Value2
作为剪切和粘贴的替代品,我仍然会犯同样的错误。虽然代码继续在过去。它也不会粘贴任何东西


编辑:嗯,所以,它现在确实复制了条目,但不是我想要的值,而是一个值。

如果您通过直接将值从一个单元格分配到另一个单元格来绕过粘贴方法,会怎么样:

Sheet2.Range("A2:B3").value2 = Sheet1.Range("A2:B3").value2

它更快更干净,还可以与数组和变量一起使用。因此,您可以将范围拆分为所需的数组数,然后使用上面的代码将值提取到所需的列中。

我认为您不能在
之后使用
PasteSpecial
.Cut
。您也不能手动执行此操作。Upvote-我强烈建议尽可能避免剪切和粘贴。我假设这可以用于变量?只是尝试了一下,它仍然会发出抖动,很可能我是个无能的人。请查看表达式范围(“F1”)。值2,您需要定义要分配值的整个范围,例如范围(“F1:J5”)