2012-12-04 28 views
0

我想創建一個幫助人們記錄他們飲食習慣的工作簿。該工作手冊目前有兩張表,「食譜」和「日記」。基於一組身份證的另一張表的總和值

食譜有列ID,名稱,KCAL和PROTEIN。用戶可以添加他們經常使用的任何配方,只需使用數字ID引用它們即可。

日記有DATE,TOTAL_KCAL和TOTAL_PROTEIN列。這個想法是每個日期用戶可以看到吃的能量和蛋白質的總量。

我已經想通了如何從配方表的單一配方的千卡,蛋白質含量爲使用VLOOKUP()日記表:

=VLOOKUP(1;Table1;3;FALSE) //For kcal 

,但我真的想自動執行此一位。在這個階段,如果我想使用這張表,我需要複製整個函數(並添加一個+前綴),粘貼到最後並將第一個參數更改爲正確的ID。然後我必須重複這個過程到TOTAL_PROTEINS列(我需要記住將源參數從3更改爲4)。

我想如果日記表中也有一些EATEN_RECIPES列,人們可以添加一個ID列表(1,15,6),但我不知道這是否可能在Excel中是最佳狀況。關鍵是,我希望能夠記下日記的ID,並且能夠自動從食譜表中獲取大卡和蛋白質數量,並更新日記中的總金額。

這可能是一件相當簡單的事情,但我不知道在谷歌中使用什麼搜索詞,對此有任何意見。 (另外我需要一個更好的標題。)

回答

2

如果我理解你正在努力做的正確,可以通過在希望獲取的數據前加引號來引用其他工作表中的數據來解決粘貼問題&! 。舉例來說,如果你的數據在Sheet1中,A1的範圍:A7,你可以參考它在你的公式和函數有:

Sheet1!A1:A7 

至於ID一覽...你可以試試這個作爲一個起點:

http://www.ozgrid.com/forum/showthread.php?t=86497

它進入自定義編碼...你也可以只讓用戶輸入的每個ID爲不同的列,但是這是一個醜陋的黑客。

順便說一句,它聽起來像你正在接近數據庫的領土......很多時候,Excel工作表最終成爲他們自己的迷你數據庫。如果您對數據庫感到滿意,並且不介意這些工作,則可以考慮使用數據庫。

+0

非常感謝網址,這對我有很大幫助!我的問題有點不清楚,但你的答案幫助我。 –

0

這是我結束的功能。根據user1161318提供的網址。 我知道這不是那麼漂亮,但我只是想讓它工作,我是新來的Visual Basic。

Function MultiVLookup2(LookUpVal, LookUpRng As Range, LookUpCol As Long) 

Dim v, w, i, rng As Range, sum As Single 

v = Split(LookUpVal, ",") 
sum = 0 

ReDim w(UBound(v, 1)) 

For i = LBound(v, 1) To UBound(v, 1) 
    w(i) = WorksheetFunction.VLookup(Val(v(i)), LookUpRng, LookUpCol, False) 
Next i 

For i = LBound(v, 1) To UBound(v, 1) 
    sum = sum + w(i) 
Next i 

MultiVLookup2 = Round(sum, 1) 

End Function 
相關問題