excel - VBA - For ...下一个循环
问题描述
如果条件合适,我正在尝试将值从一张纸复制到另一张纸。我用 3 个嵌套循环做到了。不幸的是,代码只给了我第一个值。
例如:
我 = 7, j = 3, k = 2
(i, j) = (7,3) 是“Januar”表中的“E”。然后这个 E 被不断地复制和粘贴。
但我想要第二个值(i,j)=(7,4),这是一个“U”复制和粘贴等等......
我不太明白我的代码中的问题出在哪里。如果有人可以帮助我,我会很高兴。我也会很高兴有一个更好更快的解决方案。
Dim i As Integer, Dim j As Integer, Dim k As Integer
For i = 7 To 37
If Worksheets("Januar").Cells(i, 2).Value = Worksheets("Drucken").Cells(12, 12).Value Then
For j = 3 To 5
Worksheets("Januar").Cells(i, j).Copy
For k = 2 To 4
Worksheets("Drucken").Activate
Worksheets("Drucken").Cells(38, k).Select
ActiveSheet.Paste
Next
Worksheets("Januar").Activate
Next
End If
Next
编辑:
这就是我想要的
我希望将 Sheet("Januar") 中的这些值复制并粘贴到
我解决了这样的问题:
Dim i As Integer
For i = 7 To 37
If Worksheets("Januar").Cells(i, 2).Value = Worksheets("Drucken").Cells(12, 12).Value Then
Worksheets("Januar").Cells(i, 3).Copy Worksheets("Drucken").Cells(38, 2)
Worksheets("Januar").Cells(i, 4).Copy Worksheets("Drucken").Cells(38, 3)
Worksheets("Januar").Cells(i, 5).Copy Worksheets("Drucken").Cells(38, 4)
Worksheets("Januar").Cells(i, 6).Copy Worksheets("Drucken").Cells(38, 5)
Worksheets("Januar").Cells(i, 7).Copy Worksheets("Drucken").Cells(38, 6)
Worksheets("Januar").Cells(i, 8).Copy Worksheets("Drucken").Cells(38, 7)
Worksheets("Januar").Cells(i, 9).Copy Worksheets("Drucken").Cells(38, 8)
Worksheets("Januar").Cells(i, 10).Copy Worksheets("Drucken").Cells(38, 9)
Worksheets("Januar").Cells(i, 11).Copy Worksheets("Drucken").Cells(38, 10)
Worksheets("Januar").Cells(i, 12).Copy Worksheets("Drucken").Cells(38, 11)
Worksheets("Januar").Cells(i, 13).Copy Worksheets("Drucken").Cells(38, 12)
Worksheets("Januar").Cells(i, 14).Copy Worksheets("Drucken").Cells(38, 13)
Worksheets("Januar").Cells(i, 15).Copy Worksheets("Drucken").Cells(38, 14)
Worksheets("Januar").Cells(i, 16).Copy Worksheets("Drucken").Cells(38, 15)
Worksheets("Januar").Cells(i, 17).Copy Worksheets("Drucken").Cells(38, 16)
Worksheets("Januar").Cells(i, 18).Copy Worksheets("Drucken").Cells(38, 17)
Worksheets("Januar").Cells(i, 19).Copy Worksheets("Drucken").Cells(38, 18)
Worksheets("Januar").Cells(i, 20).Copy Worksheets("Drucken").Cells(38, 19)
Worksheets("Januar").Cells(i, 21).Copy Worksheets("Drucken").Cells(38, 20)
Worksheets("Januar").Cells(i, 22).Copy Worksheets("Drucken").Cells(38, 21)
Worksheets("Januar").Cells(i, 23).Copy Worksheets("Drucken").Cells(38, 22)
Worksheets("Januar").Cells(i, 24).Copy Worksheets("Drucken").Cells(38, 23)
Worksheets("Januar").Cells(i, 25).Copy Worksheets("Drucken").Cells(38, 24)
Worksheets("Januar").Cells(i, 26).Copy Worksheets("Drucken").Cells(38, 25)
Worksheets("Januar").Cells(i, 27).Copy Worksheets("Drucken").Cells(38, 26)
Worksheets("Januar").Cells(i, 28).Copy Worksheets("Drucken").Cells(38, 27)
Worksheets("Januar").Cells(i, 29).Copy Worksheets("Drucken").Cells(38, 28)
Worksheets("Januar").Cells(i, 30).Copy Worksheets("Drucken").Cells(38, 29)
Worksheets("Januar").Cells(i, 31).Copy Worksheets("Drucken").Cells(38, 30)
Worksheets("Januar").Cells(i, 32).Copy Worksheets("Drucken").Cells(38, 31)
Worksheets("Januar").Cells(i, 33).Copy Worksheets("Drucken").Cells(38, 32)
End If
Next
但我认为 for next 循环更好。但我不知道为什么它不能使用上面的代码......
解决方案
请尝试下一个代码。我只希望我能理解你(真正)需要什么:
Sub testIterations()
Dim i As Long, j As Long, k As Long
k = 2
For i = 7 To 37
If Worksheets("Januar").cells(i, 2).value = Worksheets("Drucken").cells(12, 12).value Then
For j = 3 To 5
'Worksheets("Januar").cells(i, j).Copy Worksheets("Drucken").cells(38, k)
Worksheets("Drucken").cells(38, k).value = Worksheets("Januar").cells(i, j).value
k = k + 1
Next
End If
Next
End Sub
如果我的理解是正确的,你也需要复制格式吗?或者只有价值观就足够了。如果只有值,代码可以更快,不涉及剪贴板。
推荐阅读
- algorithm - 如何批准或反驳一个陈述——时间复杂度
- c++ - 简单的计数和求和函数没有按我期望的方式工作
- javascript - src 到由 Javascript 放置的图像在 Cordova 中不起作用
- c++ - 一个函数传值传值返回,拷贝构造函数会被调用多少次
- google-cloud-run - 监控 Google Cloud Run 内存使用情况
- amazon-web-services - 使用内置 sagemaker 算法进行增量学习
- .net - 调试 net::ERR_CONNECTION_RESET 200 错误
- laravel - Laravel:具有相同路由的多个身份验证
- node.js - 如何在 node-soap 中发送原始 XML 请求
- symfony - Symfony4,如果IP已更改,请注销用户