excel - 在 Excel VBA 中循环并为每次迭代生成输出
问题描述
我试图通过创建一个循环来简化现有的宏录制。
在 Sheet1 上有一个活动方案设置为 1(“F4”)
'这将由用户手动从 1 更改为 6
当单元格 ("F4") 发生更改时,将在单元格 ("F8") 中产生相应的输出。
我想创建一个遍历每个场景(1-6)的宏,然后将单元格(“F8”)中每个场景的相应输出复制并粘贴到Sheet2上,作为“特殊值”,没有任何公式。例如,方案 1 的输出与 sheet2 上的单元格(“G25”)相关。
你知道如何简单地做到这一点吗?
这大致就是我的处理方式。
Dim Scenario As Integer
Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Set Sheet1 = ActiveWorkbook.Sheets("Sheet1")
Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
Sheet1.Range("F4").Select 'this is where i don't understand how to run through options 1 to 5 in cell F4
For Scenario = 1 To 5
If Scenario.Value = 1 Then
Sheet1.Range("F8").Copy
Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ElseIf i.Value = 2 Then
Sheet1.Range("F8").Copy
Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
'nothing'
End If
Next Cell
解决方案
看来你只需要迭代场景的值,然后复制,像这样:
Sub scenarios()
Dim Scenario As Integer
Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Set Sheet1 = ActiveWorkbook.Sheets("Sheet1")
Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
For Scenario = 1 To 5
Sheet1.Range("F4").Value = Scenario
Sheet1.Range("F8").Copy
'
' if elif to paste to different destinations according to scenario
'
Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
End Sub
推荐阅读
- python - 用局部均值填充 0
- javascript - 如何获取 JSON 数据并将其解析为 jquery 中的数组?
- python - 将熊猫数据框行拆分为新的数据框,直到搜索到的列值
- node.js - 错误:签名验证失败 jwt-simple nodejs
- typescript - 具有特定键和值集的 TypeScript 类型
- angular - 通过 Transloco 加载的数组上的 Angular ngFor
- google-apps-script - setbackground 在谷歌表格中不起作用
- javascript - vega-lite:多个图表中的同步选择
- php - PHP Gmail API 获取发件人、收件人、抄送、密送、回复、正文、附件的邮件信息
- python - 使用 PyCamera 注释文本