如何在一个范围上放置一个for循环

时间:2017-02-07 16:50:52

标签: excel-vba vba excel

This is what my excel sheet looks like

所以基本上我正在尝试选择一堆单元格,将它们移位然后转移到接下来的三个单元格。

这是一组代码的样子。我有很多,每次手动更改会花费太多时间,所以我怎么能在这个上运行一个循环来假设前三行,转置然后移动到下一行? 现在,如果我采用enitre范围并将其转换,它将为每个男性女性和总数制作单独的列。我试图做的是将每个转置并在一列中发布。

Range("B20:C21").Select
Selection.Copy
Range("D19").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Range("B22:C23").Select
Application.CutCopyMode = False
Selection.Copy
Range("D21").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

2 个答案:

答案 0 :(得分:0)

未经测试,但应该起作用或至少足够简单,以便为您提供一个良好的起点。

sub doit
   dim src as range, dest as range
   set src = range("b20:c21")
   set dest = range("d19")
   do 
      src.copy
      dest.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
             False, Transpose:=True
      set src = src.offset(2,0)
      set dest = dest.offset(2,0)
   loop until src.row > 200   'update according to your needs
end sub

答案 1 :(得分:0)

在我提出解决方案之前,我想根据您的上述解释确定这是您正在寻找的解决方案:

enter image description here