2014-10-02 43 views
0

我試圖想出一個代碼,它從兩個輸入行(y1和y2)中讀取變量並將它們用於返回新值的函數y2')到第三行。 I.e從表工作簿獲取值到函數工作簿並將新值返回到原始表工作簿。通過這樣做,我希望我不必爲每個輸入值創建一個新的函數工作簿/表單。這可能嗎? 我一直在嘗試VBA和Python/xlwings,但沒有運氣。我本人不是程序員,這可能是這個任務看起來如此之大的原因。任何幫助將非常感激!用於在excel中的表格工作簿和函數工作簿之間進行通信的代碼

PS一個數字可能會使問題更清楚,但作爲noob我不允許發表數字。請在此鏈接位置找到解釋性圖像:https://db.tt/AxFG9snn

+0

對不起,我無法回答你的問題;多年來我沒有使用過Excel。但是一位工程師朋友用Excel和VBA做了很多東西,最近一直在使用Python。看到[Newton Excel Bach](http://newtonexcelbach.wordpress.com) – 2014-10-02 10:48:20

回答

1

是的,這絕對是可能的,我不是一個專業的程序員,所以我會盡我所能向您解釋代碼。你只需要在vba編輯器中編寫一個簡單的代碼。幾個月前我就在你的鞋子裏。這是一個例子。 此代碼從Book1.xlsx獲取輸入(Sheet1中的單元格A1和B1),計算輸出並將其存儲回Book1。當前/活動工作簿具有公式/函數,即C1 = SUM(A1:B1)。

Sub Code() 
' Gets input from another workbook 
Dim wb1 As Workbook               ' Declaring wb1 and wb2 as variable of type Workbook 
Dim wb2 As Workbook 

Set wb1 = Workbooks.Open("book1.xlsx")          'Note: In order to access data from another workbook, it should be open. 
Set wb2 = ThisWorkbook              'ThisWorkbook: refrence to the workbook having this code 

wb2.Sheets("Sheet1").Range("A1") = wb1.Sheets("Sheet1").Range("A1")   'Access value stored in cell A1 of sheet1 in book1 and stre it in cell A1 of book2 
wb2.Sheets("Sheet1").Range("B1") = wb1.Sheets("Sheet1").Range("b1") 

wb1.Sheets("Sheet1").Range("C1") = wb2.Sheets("Sheet1").Range("c1")   'Store the output (cell C1 of book2) in cell C1 of book1 

End Sub 

您可以輕鬆地爲一系列單元格執行此操作,並且還可以引用偏移量單元格。我希望它有幫助。

+0

感謝DarthSpeedious! – 2014-10-02 13:57:50

+0

你好再次DarthSpeedious,你的答案是非常有益的,再次感謝,但我一直在努力擴大代碼。我想爲你建議的程序構建一個循環函數,而不是針對一系列單元格。這樣我認爲我可以保持函數單元在處理輸入單元時保持不變。如果你有時間去看看它將不勝感激:http://stackoverflow.com/questions/26187169/code-for-communicating-between-a-table-workbook-and-a-function-workbook-in-高強 – 2014-10-03 22:19:33

相關問題