返回列表 上一主題 發帖

多條件內插法查詢

1 先使用 公式 - 定義名稱 (頂端)
2 直接使用內插計算式
J8 =-LOOKUP(,-TEXT(IF((壓力範圍=I$2)*(距離=I$3),(OFFSET(Amp,1,)-Amp)/(OFFSET(Type,1,)-Type)*(SMALL(QUARTILE(IF((壓力範圍=I$2)*(距離=I$3),Type),{0,4})*{1;1;0}+I8*{0;0;1},3)-Type)+Amp,""),"[<"&Amp&"] ;[>"&OFFSET(Amp,1,)&"] ;0.0"))
陣列輸入公式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 ML089 於 2021-2-8 11:04 編輯

精簡一下邊界計算式
J8 =-LOOKUP(,-TEXT(IF((壓力範圍=I$2)*(距離=I$3),(OFFSET(Amp,1,)-Amp)/(OFFSET(Type,1,)-Type)*(MEDIAN(QUARTILE(IF((壓力範圍=I$2)*(距離=I$3),Type),{0,4}),I8)-Type)+Amp,""),"[<"&Amp&"] ;[>"&OFFSET(Amp,1,)&"] ;0.0"))
陣列公式

要速度快還是2樓的公式好
好久沒有動腦筋,寫一個跟2樓不同計算公式給大家參考
公式 =(Amp2 - Amp1) / (Type2 - Type1) * (Type(i) - Type1) + Amp1
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

已經在I4/J4 先計算出最小/最大Type,可再優化
1 使用 MATCH(V, Array, 1)函數時,Type數值太小時需要進行補底  MAX(I$4,I8)
2 使用 TREND()函數時,若是Type數值太大or太小,則帶入表單最大or最小Type對應的Amp值,此時需要修正Type不超過最大or不底於最小。

I8 =IF(I8=0,"",TREND(OFFSET(F$5,MATCH(MAX(I$4,I8),E$6:E$111/(C$6:C$111=I$2)/(D$6$111=I$3)),,2),OFFSET(E$5,MATCH(MAX(I$4,I8),E$6:E$111/(C$6:C$111=I$2)/(D$6$111=I$3)),,2),MEDIAN(I$4,I8,J$4)))
陣列輸入
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

已經在I4/J4 先計算出最小/最大Type,可再優化
1 使用 MATCH(V, Array, 1)函數時,Type數值太小時需要進行補底  MAX(I$4,I8)
2 使用 TREND()函數時,若是Type數值太大or太小,則帶入表單最大or最小Type對應的Amp值,此時需要修正Type不超過最大or不底於最小。

I8 =IF(I8=0,"",TREND(OFFSET(F$5,MATCH(MAX(I$4,I8),E$6:E$111/(C$6:C$111=I$2)/(D$6:D$111=I$3)),,2),OFFSET(E$5,MATCH(MAX(I$4,I8),E$6:E$111/(C$6:C$111=I$2)/(D$6:D$111=I$3)),,2),MEDIAN(I$4,I8,J$4)))
陣列輸入
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題