Excel VBA转换会导致多个条目

Excel VBA转换会导致多个条目,vba,excel,Vba,Excel,因此,我尝试将包含两行238列的数据转换为一个列表(两列238行),然后我可以对该列表进行过滤,以删除旁边有单元格且没有值的行。对于VBA,我是个新手,所以我花了一段时间才让代码为转置函数工作,但当我最终将数据转置时,每列变成两个重复行(而不是一个),当它到达最后一个类别(原始配置中的最后一列)时,重复的行将持续大约300行。我不确定哪里出了问题,但我希望问题是显而易见的,这样有人可以给我一个快速的答案哈哈 以下是我的代码: Sub Transpose() ThisWorkbook.Works

因此,我尝试将包含两行238列的数据转换为一个列表(两列238行),然后我可以对该列表进行过滤,以删除旁边有单元格且没有值的行。对于VBA,我是个新手,所以我花了一段时间才让代码为转置函数工作,但当我最终将数据转置时,每列变成两个重复行(而不是一个),当它到达最后一个类别(原始配置中的最后一列)时,重复的行将持续大约300行。我不确定哪里出了问题,但我希望问题是显而易见的,这样有人可以给我一个快速的答案哈哈

以下是我的代码:

Sub Transpose()

ThisWorkbook.Worksheets("Training List by Position").Range("A4:B10000").Clear

Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
Set Range1 = ActiveWorkbook.Worksheets("Training List by Position").Range("A1:IB2")
Set Range2 = ActiveWorkbook.Worksheets("Training List by Position").Range("A4:B300")
columnIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Columns
    Rng.Copy
    Range2.Offset(columnIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    columnIndex = columnIndex + Rng.Rows.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub

我认为你把这件事复杂化了一点——为什么你需要更多的东西呢

Range("A1:IB2").Copy
Range("A4").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

我认为你把这件事复杂化了一点——为什么你需要更多的东西呢

Range("A1:IB2").Copy
Range("A4").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

dwirony的答案是解决问题的最佳方法,但如果您想知道为什么每个列都会重复,这是因为rng.rows.count在每个循环的columnIndex中添加了2(两),因为在原始数据中,每个列都有两行


此外,它确实填充了300行,因为您要求excel填充Range2变量的整个范围,它粘贴到A4:B300的每一次迭代都会向下两行并重复执行

dwirony的答案是解决问题的最佳方法,但如果您想知道为什么每一列都重复,则会发生这种情况,因为rng.rows.count添加了2(两个)列索引每个循环,因为在原始数据中,每列有两行


而且它确实填充了300行,因为您要求excel填充Range2变量的整个范围,它粘贴到A4:B300的每一次迭代,向下两行并重复

,因为我不完全知道我在做什么,而且显然发现了一些非常复杂的问题,不必要的代码,以尝试和适应我的需要XD非常感谢你-这是完美的作品!因为我不完全知道我在做什么,显然我发现了一些非常复杂的、不必要的代码来尝试并适应我的需要XD非常感谢——这非常有效!