Excel 转置和组织

Excel 转置和组织

我有很多行,我想把它们变成一张表。

在 Excel 中,有没有办法将一组条目(每个条目占用四行)转换为一个表格,其中四行中的每一行都放在四列中的一列中?

基本上是这样的:

a
b
c
d

a
b
c
d

 a b c d
 a b c d

答案1

我不知道如何对所有这些问题都采取同样的措施,但你可以像这样粘贴...

  • 选择一组 abcd
  • 复制单元格
  • 编辑 -> 粘贴特别的
  • [x] 底部的移调按钮

这对 a/b/c/d 组来说就够了。我知道这不是一个完整的答案,但如果这些数字不是太多,那么这可能会有用。

如果您愿意,这里有一个快速宏可以帮您进行转置。只需将所有内容放在“A”列中,它就会将其全部放在 B1、C1、D1 等中。行由空格分隔,一行中的两个空格表示“停止”。

已修复,现在最多可以处理 255 列。是的,你可以在 vba 中的 pastespecial 函数中使用 Transpose 设置,但这只会使代码更复杂,而无法得到相同的结果,所以我保持简单

Sub Macro1()
    lastBlank = False
    col = 2 'B
    row = 1
    For Each cell In Range("A:A")
        v = Trim(CStr(cell))
        If v = "" Then
            If lastBlank = True Then Exit For
            lastBlank = True
            col = 2 'B
            row = row + 1
        Else
            Cells(row, col) = v
            col = col + 1
            lastBlank = False
        End If
    Next
End Sub
  • 工具->宏->Visual Basic 编辑器
  • [菜单] 插入 -> 模块
  • 粘贴宏(应该在“Module1”中)
  • 运行(绿色箭头)。或者...关闭并单击工具->宏->宏->[运行]

答案2

如果仍有人在阅读这篇博客文章,这里还有另一种方法(只需使用 FirstRow 常量设置第一行数据在哪一行,然后将其放开)...

Sub TransposeRowsFourAtATime()  
  Dim X As Long, LastRow As Long, OffSetCounter As Long  
  Const FirstRow As Long = 2  
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row  
  For X = FirstRow To LastRow Step 5  
    Cells(FirstRow, "A").Offset(OffSetCounter).Resize(1, 4) = _  
       WorksheetFunction.Transpose(Cells(X, "A").Resize(4))  
  OffSetCounter = OffSetCounter + 1  
  Next  
  Range(Cells(FirstRow + OffSetCounter, "A"), Cells(LastRow, "A")).Clear  
End Sub  

里克·罗斯坦 (MVP - Excel)

答案3

有一个 excel转置函数。在您想要转置开始的单元格中输入函数,然后使用编辑->填充函数将函数向侧面复制(如果需要,可以向下复制)。

应该有一种方法可以使用该函数来纠正行索引(以解释空白)ADDRESS

答案4

您可以输入这些公式(假设您的数据从 A1 开始)并根据需要向下填充

B1            =IF(ISBLANK(A5),A1,"")
C1            =IF(ISBLANK(A5),A2,"")
D1            =IF(ISBLANK(A5),A3,"")
E1            =IF(ISBLANK(A5),A4,"")

然后复制并粘贴特殊值。然后排序以删除空白行。

相关内容