-1

我有一列数据,大约有 800 条记录。每 18 个单元格是一个记录。我需要一个脚本,它需要每 18 个单元格并将它们动态地转置为一行,甚至需要一种编写 excel 公式的方法,将每 18 个记录从列转置为行。

4

2 回答 2

1

您可能会被问到“您尝试过什么”,因为您最好在遇到困难时询问您何时遇到困难,而不是要求提供完整的解决方案。话虽如此,我可以为您提供一些提示以帮助您入门。

要在 VBA 中执行此操作,您需要执行一个循环,该循环从第一个单元格开始,获取由该单元格和以下 18 行组成的范围,然后将其粘贴到(可能)工作簿中的另一个工作表中,将其从列转置到一排。然后循环将偏移 19 个单元格并重新开始。

看看我在这个线程中给出的答案: 无法为 Excel VBA 编写宏以将特定单元格值复制到下一个空白行

这将为您提供与您的循环有些相似的语法。

要获得进行粘贴/转置的语法,请手动执行并使用宏记录器记录您的操作。这可以在“开发人员”选项卡上找到。(如果您没有看到“开发人员”选项卡,请转到“文件”->“选项”->“自定义功能区”,然后打开“开发人员”选项卡。)

试一试,如果你发现你不能让它工作,只需再次发布你遇到问题的详细信息。

于 2012-11-30T21:54:59.083 回答
0

您可以使用此 VBA 代码来实现此目的。

    Public Sub TransposePaste()
   'Value we want to step by....
    Dim stepVal As Long
    stepVal = 18
'Declare start row variable (-1)
 Dim row As Long
 row = 0

'Declare the column the data is coming from
Dim col As Long
col = 1

'Declare and set worksheet
Dim ws As Worksheet
Set ws = Sheet1

'end row of the data
Dim endRow As Long


endRow = ws.Cells(ws.Rows.Count, col).End(xlUp).row

'cycle to end of data end of data...
For i = 1 To endRow Step stepVal

'increment row each time
row = row + 1

    'cycle through the columns outputting the data
    For j = 1 To stepVal

    Sheet1.Cells(row, j).Value = Sheet1.Cells(i + j - 1, col).Value

    Next j
Next i

结束子

于 2017-05-13T16:35:01.817 回答