Excel 复制具有可变列的行并粘贴转置;偏移到下一个可用行并重复

Excel 复制具有可变列的行并粘贴转置;偏移到下一个可用行并重复,excel,vba,Excel,Vba,我试图编写一个宏,从一张工作表中一次复制两行,转置并粘贴到另一张工作表中 由于下一行包含计算值,我想跳过它,转到下一行的值。每个集合中的列数是可变的。 电子表格有3列,第3列包含需要复制的系列 我试图将该行偏移4(fr=fr+4),以找到下一行的值(因为在每个集合之后都有一个空行)。 在遇到前一列中有4个值的集合(通常有1或2个值)之前,这种方法工作得很好 接下来的结果值都不正确,因为必须相应地更改偏移值。有1000行,因此很难指定 Sub form_detail() Dim t As

我试图编写一个宏,从一张工作表中一次复制两行,转置并粘贴到另一张工作表中

由于下一行包含计算值,我想跳过它,转到下一行的值。每个集合中的列数是可变的。 电子表格有3列,第3列包含需要复制的系列

我试图将该行偏移4(
fr=fr+4
),以找到下一行的值(因为在每个集合之后都有一个空行)。 在遇到前一列中有4个值的集合(通常有1或2个值)之前,这种方法工作得很好

接下来的结果值都不正确,因为必须相应地更改偏移值。有1000行,因此很难指定

Sub form_detail()
    Dim t As Range, u As Range, rng As Range
    Dim lstrow As Long, lcol As Long, fr As Long, lr As Long

    fr = ActiveCell.Row
    lr = Sheets("Formulation details").Cells(Rows.Count, 3).End(xlUp).Row

    Do
        lcol = Sheets("Formulation details").Cells(fr,Columns.Count). End(xlToLeft).Column
        Set t = Sheets("Formulation details").Cells(fr, 3)
        Set u = t.Offset(1, lcol)
        Range(t, u).Copy

        lstrow = Sheets("sheet2").Cells(Rows.Count, "B").End(xlUp).Row
        Set rng = Sheets("sheet2").Range("B" & lstrow + 1)
        rng.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
       fr = fr + 4
    Loop While fr < lr
    Application.CutCopyMode = False
End Sub
子表单_详细信息()
调光t为量程,u为量程,rng为量程
Dim lstrow尽可能长,lcol尽可能长,fr尽可能长,lr尽可能长
fr=ActiveCell.Row
lr=纸张(“配方详情”)。单元格(行数,3)。结束(xlUp)。行
做
lcol=表格(“配方详情”)。单元格(fr,列数)。结束(xlToLeft).列
集合t=板材(“配方详情”)。单元格(fr,3)
设置u=t偏移量(1,lcol)
射程(t,u)。复制
lstrow=板材(“sheet2”)。单元格(Rows.Count,“B”)。结束(xlUp)。行
设置rng=图纸(“图纸2”)。范围(“B”和L行+1)
rng.PasteSpecial粘贴:=xlPasteAll,操作:=xlNone,SkipBlanks:=False,转置:=True
fr=fr+4
fr
问题和预期结果已附加。


此外,我还想为sheet2中的每一行复制相应的第1列值(来自源代码)。请用这个来指导我。提前非常感谢

旁注(不是解决方案):
Dim lstrow、lcol、fr、lr只要长
只声明最后一个为
Long
所有其他类型均为
变体
。您需要为每个变量指定类型:
Dim lstrow As Long,lcol As Long,fr As Long,lr As Long
非常感谢您的输入。我将在我的代码中更正它。