Excel VBA 代码(目标搜索)代码简化

标签 excel vba

我是 VBA 的新手——到目前为止,我“编码”的所有内容都完全来自 Record Macro 函数。宏有效,但它非常笨重。
本质上,我要做的是运行目标搜索功能,获取答案,然后将其放入单元格中。接下来,我将递增到下一个输入,并再次执行该过程(然后再执行 38 次)。以下是前 2 个增量:

Range("B11").Select
    ActiveCell.FormulaR1C1 = "=R[-8]C[13]"
    Range("C37:D37").Select
    Range("C37").GoalSeek Goal:=0, ChangingCell:=Range("A33")
    Range("A33:B37").Select
    Selection.Copy
    Range("P3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("R11").Select

Range("B11").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=R[-7]C[13]"
    Range("C37:D37").Select
    Range("C37").GoalSeek Goal:=0, ChangingCell:=Range("A33")
    Range("A33:B37").Select
    Selection.Copy
    Range("P4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("P5").Select

C37:D37 是我的目标搜索公式,A33:B37 是我然后复制并粘贴到 P 列的输出。
我想与一些同事分享这段代码,但从目前的状态来看,它非常不专业。有任何想法吗?

谢谢!

最佳答案

Pᴇʜ - 谢谢你的回答;简单,但有效。这就是我需要的。
万一将来有人偶然发现这一点,这就是我最终使用的。

Sub Calculation()

Dim x As Long

For x = 1 To 40 
ThisWorkbook.Worksheets("Sheet1").Range("B11").Value = ThisWorkbook.Worksheets("Sheet1").Cells(2 + x, 15)
ThisWorkbook.Worksheets("Sheet1").Range("C37").GoalSeek Goal:=0, ChangingCell:=ThisWorkbook.Worksheets("Sheet1").Range("A33")
ThisWorkbook.Worksheets("Sheet1").Cells(2 + x, 16) = ThisWorkbook.Worksheets("Sheet1").Range("A33").Value 

Next

End Sub

关于Excel VBA 代码(目标搜索)代码简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60280806/

相关文章:

Excel VBA : can delete validation but not add new one

excel - 将单元格的背景颜色设置为单元格中数据的 RGB 值

excel - 如何将串行端口(例如 COM 3)的输入以十六进制形式读取到 Excel 文件中?

excel - VBA - 将特定标题从工作表复制到另一个工作表

excel - 如何在excel中创建引用变量

c# - 将 ListView 导出为 Excel 格式

excel - MsgBox 中的表格

angularjs - 使用 Google 表格从 sql 数据创建一个 .xlsx 文件

vba - Do While Not IsEmpty(Range ("A1")) 条件评估失败

c# - 如何在WP8中创建Excel文件?