2017-03-02 76 views
-1

我感覺我的上一個問題被誤解了。因此,我會這樣做。我想是這樣的:如何在Excel模型中輸入值而不手動執行?

Excel input and output field

在這張圖片中,你看到的是,輸入爲4格B1。此B1單元格用作不同工作表中複雜模型的輸入。該模型的輸出與B2關聯。我不想在另一張紙上修改複雜的模型(這部分是必需的)。

現在我想創建一個表是這樣的:

Scene 2

因此,當輸入爲4時,從在另一片的模型的輸出是1。現在我可以爲手動執行此1,2和3,只需將B2(即4)寫入的數字替換爲1並檢查其輸出即可。讓我們來觀摩一下我們的複雜模型給我們:

enter image description here

顯然,這給了我們一個9,所以我在F2填補9。現在這不是一個問題,因爲我的表從1到4。但是,我該如何自動化?例如,如果我從1到100.

問題是,您無法在另一張紙上觸摸或簡化模型。

在VBA中如何做到這一點或在Excel本身做到這一點?

+0

謝謝您的回覆,但這並不完全是我的意思。我已經用圖像更新了這個問題。這個公式只是爲了說明,與問題無關。 – Snowflake

回答

1

所以你想自動化通過你的模型的價值觀並記錄輸出。

一個非常簡單的方法就是將您的輸入列表放入列E中,如您的示例圖片中所示。請記下示例中的起始和結束行號 - 2和5(因爲您的輸入值在範圍E2:E5中)。

在VBA編輯器中,在一個新模塊中創建了一個新的子模塊以保存您的代碼(您可以通過Google來完成此操作)。代碼非常簡單。

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運行)。

2

我認爲你的解釋可能有問題。你的例子是A1 = 1,B1 = A1 + 5,儘管它是A1 & A2。如果我正確理解了你的困境,你正在尋找將公式拖到下一行(自動填充)。你可以用VBA做到這一點,但是你可以不用這樣做

假如你有第一列中的數據(A),只要你希望公式可以旅行,你可以從右下角雙擊公式 - 參考單元格的一角,它會填滿,也可以通過單擊並按住公式參考單元的右下角拖動公式。 w如果光標從相對較大的「+」(內部顏色)變爲相對較小的「+」(沒有內部顏色......全部黑色),則如果您的右下角有變化。

您需要確保在執行此操作時具有相對引用,或者確保您的非相對引用是您想要的。這不僅僅是你提出的問題,而且在做這類工作時很重要。

參見此:

Range("B1").Formula = A1 + 5 

在該式中,A 1是由-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 

希望這可以幫助您,並且您正在尋找!

+0

現在我更仔細地閱讀它。我認爲你是對的 – Snowflake

相關問題