gpt4 book ai didi

vba - Excel VBA - 让 VBA 脚本循环遍历行

转载 作者:行者123 更新时间:2023-12-04 21:35:46 30 4
gpt4 key购买 nike

我有一个 VBA 脚本,可以将数据从一张表复制到另一张表。复制的数据被放入公式中,计算出的数量被复制回原始工作表。我正在尝试获取它,以便 VBA 脚本为每一行执行此操作。我有 1000 行数据。

Sub Rating()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("SoapUI - Single")
Set ws2 = Worksheets("STpremcalc")

ws2.Range("B3").Value = ws1.Range("B3").Value

ws2.Range("B4").Value = ws1.Range("C3").Value

ws2.Range("B5").Value = ws1.Range("D3").Value

ws2.Range("B6").Value = ws1.Range("E3").Value

ws2.Range("E3").Value = ws1.Range("F3").Value

ws2.Range("E4").Value = ws1.Range("G3").Value

ws2.Range("E5").Value = ws1.Range("H3").Value

ws2.Range("E6").Value = ws1.Range("I3").Value

ws2.Range("G3").Value = ws1.Range("J3").Value

ws2.Range("G4").Value = ws1.Range("K3").Value

ws2.Range("G5").Value = ws1.Range("L3").Value

ws2.Range("J3").Value = ws1.Range("N3").Value

ws2.Range("J4").Value = ws1.Range("O3").Value

ws2.Range("J6").Value = ws1.Range("P3").Value

ws2.Range("B9").Value = ws1.Range("Q3").Value

ws2.Range("C9").Value = ws1.Range("R3").Value

ws2.Range("D9").Value = ws1.Range("S3").Value

ws2.Range("E9").Value = ws1.Range("T3").Value

ws2.Range("B10").Value = ws1.Range("U3").Value

ws2.Range("C10").Value = ws1.Range("V3").Value

ws2.Range("D10").Value = ws1.Range("W3").Value

ws2.Range("E10").Value = ws1.Range("X3").Value

ws2.Range("B11").Value = ws1.Range("Y3").Value

ws2.Range("C11").Value = ws1.Range("Z3").Value

ws2.Range("D11").Value = ws1.Range("AA3").Value

ws2.Range("E11").Value = ws1.Range("AB3").Value

ws1.Range("AW3").Value = ws2.Range("M4").Value

ws1.Range("AX3").Value = ws2.Range("M5").Value

ws1.Range("AY3").Value = ws2.Range("M6").Value

End Sub

我也知道这可能是执行此任务的一种非常低效的方式,但我不知道如何改进它。因此,如果您有办法提高效率,将不胜感激。

编辑:根据@user3598756 建议更新代码

最佳答案

我不喜欢复制/粘贴程序,但如果你必须使用它,那么下面的语句

Sheets("SoapUI - Single").Range("B3").Copy
Sheets("STpremcalc").Range("B3").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("C3").Copy
Sheets("STpremcalc").Range("B4").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("D3").Copy
Sheets("STpremcalc").Range("B5").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("E3").Copy
Sheets("STpremcalc").Range("B6").PasteSpecial Paste:=xlValues

可以简化为
Sheets("SoapUI - Single").Range("B3:E3").Copy
Sheets("STpremcalc").Range("B3").PasteSpecial Paste:=xlValues, Transpose:=True

除上述之外,您可以简化
    Sheets("SoapUI - Single").Range("Q3").Copy
Sheets("STpremcalc").Range("B9").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("R3").Copy
Sheets("STpremcalc").Range("C9").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("S3").Copy
Sheets("STpremcalc").Range("D9").PasteSpecial Paste:=xlValues

Sheets("SoapUI - Single").Range("T3").Copy
Sheets("STpremcalc").Range("E9").PasteSpecial Paste:=xlValues

进入
    Sheets("SoapUI - Single").Range("Q3:T3").Copy
Sheets("STpremcalc").Range("B9:E9").PasteSpecial Paste:=xlValues

我想你可以自己做剩下的事情。

编辑:由于OP编辑了他的问题。下面可以简化
    ws2.Range("B3").Value = ws1.Range("B3").Value

ws2.Range("B4").Value = ws1.Range("C3").Value

ws2.Range("B5").Value = ws1.Range("D3").Value

ws2.Range("B6").Value = ws1.Range("E3").Value

ws2.Range("E3").Value = ws1.Range("F3").Value

ws2.Range("E4").Value = ws1.Range("G3").Value

ws2.Range("E5").Value = ws1.Range("H3").Value

ws2.Range("E6").Value = ws1.Range("I3").Value

通过使用 循环 像这样的程序
For i = 1 To 4
ws2.Cells(i + 2, 2) = ws1.Cells(3, i + 1) 'Or you can use `ws1.Cells(3, i + 1).Value2` if you only need the value without its format like date or currency
ws2.Cells(i + 2, 5) = ws1.Cells(3, i + 5)
Next i

剩下的就是你的了。

关于vba - Excel VBA - 让 VBA 脚本循环遍历行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584261/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com