Excel VBA 转置会导致多个条目

  • 本文关键字:VBA 转置 Excel vba excel
  • 更新时间 :
  • 英文 :


所以我正在尝试将两行和 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

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

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

最新更新