我觉得我之前的问题被误解了。因此,我将这样做如下。我想要的是以下内容:
在此图片中,您会看到单元格B1中的输入为4。该B1单元用作不同表中的复杂模型的输入。该模型的输出与B2相关联。我不想在另一张纸上修改复杂的模型(这部分是必需的)。
现在我想创建一个这样的表:
因此,当输入为4时,另一张表中模型的输出为1.现在我可以手动执行1,2和3,只需将B2上写的数字(即4)替换为1并检查其输出。让我们观察一下我们复杂的模型给我们的东西:
显然它给了我一个9,所以我在F2中填了9。现在这不是问题,因为我的表从1变为4.但是如何自动化呢?例如,如果我从1到100。
问题是,您无法在另一张纸上触摸或简化模型。
如何在VBA中执行此操作或在Excel中执行此操作?
答案 0 :(得分:2)
我想你的解释可能有问题。你的例子是A1 = 1,B1 = A1 + 5,尽管说它是A1& A2。当我认为你的意思是“第3行和第4行”时,你会说“C& D列”。
如果我正确理解您的困境,您希望将公式向下拖动(自动填充)到后续行。您可以使用VBA执行此操作,但您可以不使用它。
如果您希望公式移动到第一列(A)中的数据,您可以从公式参考单元格的右下角双击它将填满。您也可以通过单击并按住公式参考单元格的右下角来拖动公式。
如果光标从相对较大的“+”(内部颜色)变为相对较小的“+”(没有内部颜色......),您将知道是否有右下角...全黑。)
您需要确保在执行此操作时具有相对引用,或确保您的非相关引用是您想要的。这不仅仅是您提出的问题,但在进行此类工作时非常重要。
见:
Range("B1").Formula = A1 + 5
在该公式中,A1通过-1列的偏移相对于B1。粘贴或拖入公式的每个单元格将使用-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 = $A$1 + 5
Range("C1").Formula = $A$1 + 5
Range("B2").Formula = $A$1 + 5
Range("C2").Formula = $A$1 + 5
希望这有助于您正在寻找的东西!
答案 1 :(得分:1)
因此,您希望通过模型自动化值并记录输出。
一种非常简单的方法首先将输入列表放在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运行它 - 很容易让你到谷歌怎么做)。