如何在 Excel 中转置超过 50,000 行的列?

如何在 Excel 中转置超过 50,000 行的列?

我正在尝试转置“B”列的所有内容,但想跳过一行,然后抓取接下来的 4 行并将它们粘贴到同一列中。我怎样才能让这个循环跳过每 5 行,并自动将范围更改为下一个打开的单元格或“范围”,而无需手动逐个输入?

范围("B12:B16").选择
    选择.复制
    工作表(“Sheet2”).选择
    范围("A2").选择
    Selection.PasteSpecial 粘贴:=xlPasteAll, 操作:=xlNone, SkipBlanks:= _
        假,转置:=真
    范围("B18:B22").选择
    选择.复制
    工作表(“Sheet2”).选择
    范围("A3").选择
    Selection.PasteSpecial 粘贴:=xlPasteAll, 操作:=xlNone, SkipBlanks:= _
        假,转置:=真
    范围("B24:B28").选择
    选择.复制
    工作表(“Sheet2”).选择
    范围("A4").选择
    Selection.PasteSpecial 粘贴:=xlPasteAll, 操作:=xlNone, SkipBlanks:= _
        假,转置:=真

答案1

您可以将 Sheet1 上的列中的单元格命名为“数据”,然后在 Sheet2 中执行以下操作...

     ABCDE
1 0 =INDEX(数据,$A1+1) =INDEX(数据,$A1+2) =INDEX(数据,$A1+3) =INDEX(数据,$A1+4)
2 =A1 + 5 =INDEX(数据,$A2 + 1) =INDEX(数据,$A2 + 2) =INDEX(数据,$A2 + 3) =INDEX(数据,$A2 + 4)
3 =A2 + 5 =INDEX(数据,$A3 + 1) =INDEX(数据,$A3 + 2) =INDEX(数据,$A3 + 3) =INDEX(数据,$A3 + 4)
4 ...

然后自动填充您需要的行数。

答案2

尝试一下我刚刚整理的以下内容,如果您想要的是宏版本而不是已经建议的基于公式的版本。

本质上,我认为它应该执行静态代码所做的事情,但在循环内 - 因此无需手动复制粘贴。如果整列都已满,它可能会阻塞(当它尝试选择最后一行之后时,它会死机)。

您可能需要更改起始和粘贴位置(靠近顶部)以满足您的特定要求 - 它当前从 B 列复制到 CF 列。

Dim CopyCell As Range
Dim PasteCell As Range

'starting location (ie, top of the list to copy)
Range("B1").Select

'pasting location (ie, top-left cell to start pasting to)
Set PasteCell = Range("C1")

Do While ActiveCell.Value <> 0
    'copy the items in the next four rows
    Set CopyCell = ActiveCell.Range("A1")
    ActiveCell.Range("A1:A4").Select
    Selection.Copy

    'move to paste location
    PasteCell.Select

    'paste with transpose
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=True

    'adjust paste location for next paste
    Set PasteCell = PasteCell.Offset(1, 0)

    'return to last copied location and and move down five steps
    'copying 4 rows but moving 5 is how every 5th row is missed
    CopyCell.Select
    ActiveCell.Offset(5, 0).Select
Loop

相关内容