2015-10-06 64 views
0

嘗試執行公式計算器並試圖避免「隱藏」列中的一堆嵌套if。Excel將基於其他值的vlookup數組定義爲數組的大小

基本上這是一款COC型遊戲的計算器。

所以這裏是一個粗略的表格(不知道如何最好地在這裏做一個表):

 A    B     K   M 
1 name  current level  Max Level Next level cost 
6 Soldier  2     4    X 

,其中x = IF($ K6 = B6,0,VLOOKUP($ A6,Masterdata $ A! $ 4:$ CD $ 50,32 + B6,0)))

masterdata表只是名稱跨多個列的一些數據,多個數據列的多個數據,然後包含從列32開始的成本的單個列

這可以找到下一個等級(3)的成本,但我想要做一個sum wi有點像:IF($K6=B6,0,sum(VLOOKUP($A6,Masterdata!$A$4:$CD$50,{32+B6, 33+B6,34+b6},0))))。如果我輸入固定號碼,即{35, 36, 37}而不是{32+B6, 33+B6,34+b6},我可以使陣列起作用。另外,該數組不會動態更改。如current level=1, max level=9將需要比current level =5 max, max level=9更大的陣列。有沒有辦法做到這一點?

第二部分的進一步說明: 例如: 電流電平= 1個最大電平= 9 該公式將是這樣的:被添加IF($K6=B6,0,sum(VLOOKUP($A6,Masterdata!$A$4:$CD$50,{32,33,34,35,36,37,38,39},0))))我將需要在陣列中8列。

但是,如果當前級別是6,最大級別是9,那麼它看起來像這樣:IF($K6=B6,0,sum(VLOOKUP($A6,Masterdata!$A$4:$CD$50,{37,38,39},0)))) 我只需要在數組中添加3列返回。

所以,即使公式需要保持IF($K6=B6,0,sum(VLOOKUP($A6,Masterdata!$A$4:$CD$50,{32,33,34,35,36,37,38,39},0))))我想限制的結果只列37,38,39

+0

當前級別,最大級別和要用於column_index_num參數的值數組之間的關係是什麼?例如,如果當前級別= 1,則是該數組32中的第一個值?如果當前的水平= 5它是36?最高等級怎麼樣? –

+0

@XORLX是1將是32(查找的第32列)2將等同於33列查找..... –

回答

0

所以我放棄了vlookup去了index match路線: 趕上了:=SUM(INDEX(Masterdata!$A$1:$Z$32,MATCH($A26,Masterdata!$A$1:$A$32,0),B26+1+14):INDEX(Masterdata!$A$1:$Z$32,MATCH($A26,Masterdata!$A$1:$A$32,0),E26+14))

似乎工作的偉大。

基本上我發現匹配我的搜索標準的行數:MATCH($A26,Masterdata!$A$1:$A$32,0) = 26

然後我輸入到索引與我的第一列的偏移是基於離我的最小值:index(range,26,B26+1+14),與最大沿着值:index(range,26,E26+14)然後將它們相加在一起sum(index1:index2)

0

你應該排除常量數組單元格引用。你將需要SUMPRODUCT(或者SUMCSE)強迫返回數組:

=IF($K6=B6,0,SUMPRODUCT(VLOOKUP($A6,Masterdata!$A$4:$CD$50,{32,33,34}+B6,0)))

我怕我不明白你的第二個查詢重新「數組不會動態改變」 。

問候

+0

所以單元格引用不能包含在常量數組中?至於第二部分。我會在問題 –

+0

中詳細說明不,但爲什麼構建數組時我有這個問題? –

+0

在主要問題下查看評論 –

相關問題