Excel VBA复制和粘贴循环内循环

blasibr

我已经在VBA代码上工作了一段时间了,由于我是一个完整的菜鸟,所以我觉得自己什么都没得到。我一直在研究大量内容,但似乎无法结合答案来帮助解决我的情况。

本质上,我想做的是从一个工作表中逐行获取数据,并将其外推到另一个工作表。我相信这会涉及到循环,而我对VBA还是很陌生,我不知道该怎么做。

这是我要尝试的逻辑:对于工作表1的每一行,我想对工作表2执行3种不同的复制和粘贴活动,然后它将循环到sheet1的下一行并进行这3种活动,依此类推。这将继续向下,直到工作表1中的A列为空白。Sheet1的数据从A3开始,Sheets2的粘贴区域从A2开始。

第一个活动是将单元格F3,D3,A3和H3(按此顺序将F3设为A2,D3设为B2等)从工作表1复制到工作表2到A2,B2,C2等。目标函数可以不会被使用,因为我只需要值而无需其他格式,这是我遇到的许多问题之一。

下一个活动是将单元格F3,D3,A3和I3从工作表1复制到粘贴在先前复制下面的工作表2,然后粘贴-同样,没有格式只是值。还要注意,其中一些可能是空白的(A列除外),但我仍然需要至少包含A列数据的那一行-包括所有这些活动。

第三个活动是将sheet1的F3,D3和A3复制并粘贴一定的次数(参考K3的编号),并且每次复制和粘贴都将在下一个可用的空白单元格中。因此,如果K3中的数字看起来像是在sheet2中创建了3行-由于activity1和2各自创建了自己的行,因此在sheet2上总共添加了5行。

在工作表1的第3行完成这三个活动之后,它将移至第4行并执行前面的三个活动并粘贴到工作表2。再一次,它将不粘贴任何格式,并且将粘贴在工作表2的下一个空白行中。同样,一旦列A中的单元格为空白,此循环将停止。

下面是我不完整的代码。我什至不认为这会有所帮助,甚至最好不要看它。因为我什至无法进行简单的复制和粘贴,但是在循环中独自循环,我才开始感到沮丧。我什至还没有开始我的第三项活动。我非常感谢!

Sub copyTest3()

Dim proj As Range, release As Range, pm As Range, lead As Range, coord As Range
Dim leadCopy As Range, coordCopy As Range
Dim i As Range

Set proj = Range("A3", Range("A3").End(xlDown))
Set release = Range("D3", Range("D3").End(xlDown))
Set pm = Range("F3", Range("F3").End(xlDown))
Set lead = Range("H3", Range("H3").End(xlDown))
Set coord = Range("I3", Range("I3").End(xlDown))

Set leadCopy = Union(pm, release, proj, lead)
Set coordCopy = Union(pm, release, proj, coord)


For i = 1 To Range(ActiveSheet.Range("A3"), ActiveSheet.Range("A3").End(xlDown))
    leadCopy.Copy
    Sheets("Sheet2").Activate
    Range("A2").Select
    ActiveSheet.PasteSpecial xlPasteValues

    Application.CutCopyMode = False

    Sheets("Sheet1").Activate
    coordCopy.Copy
    Sheets("Sheet2").Activate
    Range("A2").Select
    ActiveSheet.PasteSpecial xlPasteValues

Next i

End Sub
阿里奇

有很多方法可以做到这一点,有些方法效率更高。我的解决方案可能不是最有效的,但希望它对您来说很容易理解,以便您可以学习。

很难理解您在活动三中要做什么,因此我无法为该步骤提供解决方案。将我的代码用作第三步的模板,如果遇到问题,请随时发表评论。

请注意,我不使用.Activate.Select.Copy在此代码。.Activate并且.Select是巨大的效率杀手,它们使您的代码更容易“破坏”,因此请尽可能避免使用它们。.Copy在使用值或公式时不是必需的,这也会降低代码的速度。

未经测试

Sub testLoopPaste()

Dim i As Long
Dim ii As Long
Dim i3 as Long
Dim LastRow As Long
Dim wb As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet

Set wb = ThisWorkbook
Set sht1 = wb.Sheets("Sheet1")
Set sht2 = wb.Sheets("Sheet2")

'Find the last row (in column A) with data.
LastRow = sht1.Range("A:A").Find("*", searchdirection:=xlPrevious).Row
ii = 2

'This is the beginning of the loop
For i = 3 To LastRow
    'First activity
    sht2.Range("A" & ii) = sht1.Range("F" & i).Value
    sht2.Range("B" & ii) = sht1.Range("D" & i).Value
    sht2.Range("C" & ii) = sht1.Range("A" & i).Value
    sht2.Range("D" & ii) = sht1.Range("H" & i).Value
    ii = ii + 1

    'Second activity
    sht2.Range("A" & ii) = sht1.Range("F" & i).Value
    sht2.Range("B" & ii) = sht1.Range("D" & i).Value
    sht2.Range("C" & ii) = sht1.Range("A" & i).Value
    sht2.Range("D" & ii) = sht1.Range("I" & i).Value
    ii = ii + 1

    'Third activity
    For i3 = 1 To sht1.Range("K" & I)  
        sht2.Range("A" & ii) = sht1.Range("F" & i).Value  
        sht2.Range("B" & ii) = sht1.Range("D" & i).Value  
        sht2.Range("C" & ii) = sht1.Range("A" & i).Value  
        ii = ii + 1  
    Next i3

Next i

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在VBA Excel中复制和粘贴循环以获取多个输出

来自分类Dev

Excel VBA-复制和粘贴宏循环将每个文件粘贴到最后一个

来自分类Dev

Excel-VBA循环-从单元格复制公式,粘贴到单元格中,然后复制特殊粘贴

来自分类Dev

在 VBA excel 上复制和粘贴

来自分类Dev

For循环和If语句Excel VBA

来自分类Dev

VBA Excel 2007:需要循环复制和循环计数,但上面每行除外零

来自分类Dev

Excel VBA在For循环中复制行

来自分类Dev

VBA 从 Excel 复制到 PowerPoint(不是“复制和粘贴”)

来自分类Dev

Excel VBA,用于更改变量并粘贴其结果的for循环

来自分类Dev

Excel VBA复制粘贴

来自分类Dev

Excel VBA:复制/粘贴范围

来自分类Dev

循环和复制/粘贴行 VBA

来自分类Dev

Excel VBA从工作簿复制和插入/粘贴特殊值

来自分类Dev

使用VBA在Excel 2016中复制和粘贴值

来自分类Dev

在循环中粘贴 Excel 公式

来自分类Dev

Excel VBA复制和粘贴(不使用复制+粘贴功能)在空行上

来自分类Dev

Excel VBA复制和粘贴(不使用复制+粘贴功能)在空行上

来自分类Dev

vba-excel:如何使用for循环和if语句排除复制单元格区域

来自分类Dev

Excel宏复制和粘贴

来自分类Dev

Excel VBA 调用函数和循环

来自分类Dev

循环浏览Excel Excel VBA

来自分类Dev

在Excel VBA中循环

来自分类Dev

VBA Excel转换循环

来自分类Dev

EXCEL VBA - 循环错误

来自分类Dev

Excel VBA循环?

来自分类Dev

Excel VBA-循环复制低于特定值的行

来自分类Dev

VBA 复制粘贴循环

来自分类Dev

使用Outlook VBA从Excel文件复制/粘贴。

来自分类Dev

Excel VBA复制并粘贴整个范围与条件?