[英]Excel comparison with multiple IFs
我有一個比例尺,我根據它來決定乘法系數的值。 比例如下:
意思就是:
對於Category1
:當value>=1.000.000
然后coef
是1
,當value>=500.000
然后coef
是0.8
等等。
同樣的邏輯適用於Category2
;
然后我輸入了以下格式的數據:
Company !MainCat|Sales Amount|
Company1|T1 | 6.500.000|
Company2|T2 | 70.000|
我需要找到相應的系數,系數的比率和值(=ratio*MaxCoef)
。 目前,我通過以下方式找到 coef: - 對於 company1:
=IF(C8>=$D2;$D$1;IF(C8>=$E2;$E$1;IF(C8>=$F2;$F$1;IF(C8>=$G2;$G$1;IF(C8>=$H2;$H$1;IF(C8>=$I2;$I$1))))))
這實際上是硬編碼的,看起來不太好。 也許有更好的方法? 有什么建議?
公式視圖:
您可以COUNTIF(range, [criteria] < value) * 0.2
作為每個coef
階段添加0.2
。
對您的數據執行: =COUNTIF(D2:H2, "<"&C8) * 0.2
,計算值通過的階段數*
每個階段的值。
您的計數 if range 需要直到H2
因為I2
為0
,因此低於value
並被計數。
要將COUNTIF()
與基於MainCat
的正確類別的動態搜索相結合,您可以MATCH()
MainCat
with Code
這將給出Code
所在的row
並利用INDIRECT()
將其應用為range
。
=COUNTIF(INDIRECT("D"&MATCH(B8,B:B,0)&":H"&MATCH(B8,B:B,0)),"<"&C8)*0.2
MATCH(B8,B:B,0)
- 將匹配B8
上的值(比如T1
)並返回row
2 row
。
INDIRECT("D"&MATCH(B8,B:B,0)&":H"&MATCH(B8,B:B,0)
= INDIRECT("D"&2&":H"&2)
- 將文本變成COUNTIF()
使用的實際range
。
創建一個包含兩列“類別”和“系數”的表“映射”,然后按照https://www.deskbright.com/excel/using-index-match/ 中的描述對其使用 INDEX-MATCH。
=INDEX(映射[類別];匹配([系數];映射[系數];-1))
此示例假設您將此公式放入一個表中,該表具有一個名為“系數”的列,其中包含多個 IF 的輸入值。 訣竅是,作為 match_type 參數,根據您的需要提供 -1 或 1。
您可以在 VBA 中執行此操作。 編寫自己的函數,以這樣的結尾
=MyOwnScale(C8; B8; A2:I3)
VBA 函數的第一個參數是值,第二個是類別,第三個是閾值的范圍。 因此,您可以在 VBA 代碼中移動級聯IF
循環,並且您(和您的用戶)在單元格中只會看到一個干凈的函數調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.