如何在Excel模型中输入值而不手动执行?

如何在Excel模型中输入值而不手动执行?,excel,excel-formula,excel-2016,vba,Excel,Excel Formula,Excel 2016,Vba,我觉得我前面的问题被误解了。因此,我将这样做。我想要的是: 在这张图片中,您可以看到单元格B1中的输入是4。此B1单元用作不同图纸中复杂模型的输入。该模型的输出链接到B2。我不想修改另一页上的复杂模型(此部分是必需的) 现在我想创建一个如下表: 因此,当输入为4时,另一张表中模型的输出为1。现在,我可以手动为1、2和3执行此操作,只需将B2(即4)处写入的数字替换为1并检查其输出。让我们观察一下我们复杂的模型给了我们什么: 显然它给了我们一个9,所以我在F2中填入9。现在这不是一个问题,因

我觉得我前面的问题被误解了。因此,我将这样做。我想要的是:

在这张图片中,您可以看到单元格B1中的输入是4。此B1单元用作不同图纸中复杂模型的输入。该模型的输出链接到B2。我不想修改另一页上的复杂模型(此部分是必需的)

现在我想创建一个如下表:

因此,当输入为4时,另一张表中模型的输出为1。现在,我可以手动为1、2和3执行此操作,只需将B2(即4)处写入的数字替换为1并检查其输出。让我们观察一下我们复杂的模型给了我们什么:

显然它给了我们一个9,所以我在F2中填入9。现在这不是一个问题,因为我的表从1变为4。但我如何实现自动化呢?例如,如果我从1到100

问题是,您无法触摸或简化另一张图纸上的模型


如何在VBA中或在Excel中执行此操作?

我认为您的解释可能有问题。你的例子是A1=1,B1=A1+5,尽管它是A1和A2。你说的是“C列和D列”,而我相信你的意思是“第3行和第4行”)

如果我正确理解您的困境,您希望将公式向下拖动(自动填充)到后续行。您可以使用VBA执行此操作,但也可以不使用VBA执行此操作

如果在第一列(A)中有数据,则可以从公式引用单元格的右下角双击公式,并将其填充。也可以通过单击并按住公式引用单元格的右下角来向下拖动公式

如果光标从一个相对较大的“+”变为一个相对较小的“+”(没有内部颜色…全部为黑色),您将知道是否有右下角

在做这项工作时,你需要确保你有相对的参考资料,或者确保你的非相对参考资料是你想要的。这不仅仅是你问的问题,但在做这类工作时很重要

见此:

Range("B1").Formula = A1 + 5
在此公式中,A1相对于B1的偏移量为-1列。粘贴或拖动公式的每个单元格都将使用-1列相对的单元格执行公式

您可以使用“$”向列、行或单元格添加细节。假设您有自己的示例,并希望在C列中显示公式。使用“$”有3种情况,其结果不同:

完全相对,拖动公式将自动指定相邻列

Range("B1").Formula = A1 + 5
Range("C1").Formula = B1 + 5
Range("B2").Formula = A2 + 5
Range("C2").Formula = B2 + 5
如果“$”位于公式中列的前面,则被拖动的列将“锁定”该列,因此当拖动公式时,列将保持不变,但行号将更改

Range("B1").Formula = $A1 + 5
Range("C1").Formula = $A1 + 5
Range("B2").Formula = $A2 + 5
Range("C2").Formula = $A2 + 5
Range("B1").Formula = A$1 + 5
Range("C1").Formula = B$1 + 5
Range("B2").Formula = A$1 + 5
Range("C2").Formula = B$1 + 5
如果“$”位于公式中的行的前面,则被拖动的行将“锁定”该行,因此当拖动公式时,该行将保持不变,但列将更改

Range("B1").Formula = $A1 + 5
Range("C1").Formula = $A1 + 5
Range("B2").Formula = $A2 + 5
Range("C2").Formula = $A2 + 5
Range("B1").Formula = A$1 + 5
Range("C1").Formula = B$1 + 5
Range("B2").Formula = A$1 + 5
Range("C2").Formula = B$1 + 5
如果“$”位于公式中每一列和每一行的前面,则被拖动的单元格将同时“锁定”这两行。拖动公式时,被引用的单元格保持不变

Range("B1").Formula = $A$1 + 5
Range("C1").Formula = $A$1 + 5
Range("B2").Formula = $A$1 + 5
Range("C2").Formula = $A$1 + 5

希望这会有所帮助,这正是您需要的!

因此,您希望通过模型自动输入值并记录输出

一个非常简单的方法是将输入列表放在E列中,如示例图片所示。记下示例中的开始行和结束行编号-2和5(因为输入值在E2:E5范围内)

在VBA编辑器中,在一个新模块中创建了一个新的子模块来保存您的代码(您可以用谷歌搜索如何执行此操作)。代码相当简单

Sub TurnInputsIntoOutputs()

    ' First we create some useful and important variables
    Dim inputStartRow As Long  ' The row your input values start on
    Dim inputEndRow As Long  ' The row your input values end on
    Dim currentRow As Long  ' A placeholder for when we cycle through the rows
    Dim processingWorksheet As Worksheet  ' How we're going to reference your worksheet

    ' Then we put values into those variables
    inputStartRow = 2
    inputEndRow = 5
    Set processingWorksheet = ThisWorkbook.Sheets("*the name of your worksheet here*")

    ' Now we cycle through the input rows
    For currentRow = inputStartRow to inputEndRow
        ' Put input value from the current row of column E into cell B1
        processingWorksheet.Range("B1").Value = processingWorksheet.Range("E" & currentRow).Value

        ' Put the resulting output value into the current row of column F
        processingWorksheet.Range("F" & currentRow).Value = processingWorksheet.Range("B2").Value
    Next currentRow

End Sub

然后运行你的宏(你可以将它链接到表单按钮,也可以从VBE运行它,这对你的用户来说非常简单,可以用谷歌搜索如何操作)。

谢谢你的回答,但这并不是我想说的。我用图片更新了问题。公式只是为了说明,与问题无关。