簡體   English   中英

Excel 與多個 IF 的比較

[英]Excel comparison with multiple IFs

我有一個比例尺,我根據它來決定乘法系數的值。 比例如下:

秤

意思就是:

  • 對於Category1 :當value>=1.000.000然后coef1 ,當value>=500.000然后coef0.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因為I20 ,因此低於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM