用于“转置”的Excel宏VBA命令,但没有可用的转置

时间:2017-06-02 16:20:07

标签: excel vba excel-vba

我正在尝试更改一组包含标题的数据。目前,预期的列都是单独的行。我想在第A列中保留第一个数据点“name”,但是将第二个数据点“number”移动到B列,将第三个数据点“average”移动到C列。然后删除那些现在为空的两行数字和平均值存在的位置,并为下一组数据重复此过程。例如:

  • 姓名,号码,平均值(预期标题)
  • 约什
  • 13
  • 3.4
  • 克雷格
  • 15
  • 2.3
  • 史密斯
  • 64
  • 8.3

以下是我想要的:

  • 姓名,号码,平均值(预期标题)
  • Josh,13,3.4
  • Craig,15,2.3
  • Smith,64,8.3

我尝试了一些事情:

1)转置...但是由于某种原因,这个PasteSpecial函数在我嵌入它的.XLSM文件中不可用。代码参考:

Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

2)复制并粘贴。这是一项正在进行的工作,代码无法编译。

For k = 3 To maxRow Step 1
    Rows(k).Select
    Selection.Cut
    Range(Columns("B"), Rows(k)).Select
    Selection.Paste
    Rows(k + 1).Select
    Selection.Cut
    Range(Rows(k), Columns(C)).Paste
    'Range(Columns("B"), Rows(k)).PasteSpecial Transpose:=True
    'Range(Rows(k), Rows(k + 2)).Select
    'Selection.Delete Shift:=x1Up
Next k

我至少有一千个数据点。我的代码能够处理到最后一行但是这是我宏中的最后一个关键函数。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

以这种方式尝试:

For k = 3 To maxRow Step 3
  Sheet2.Cells(Int((k + 1) / 3), 1).Resize(, 3).Value = _
    Application.Transpose(Sheet1.Cells(k, 1).Resize(3).Value)
Next k