我在 Google 表格中作業,并試圖找到一種更優雅的方法來回傳值,如果參考單元格中的數字落在表中的其他兩個值之間。例如:

在這種情況下,我想在其他地方顯示基于另一個單元格的值的回傳值。如:

我可以做一個很長的 IF 陳述句,但更喜歡在我們更新列時可以更容易擴展的東西。
uj5u.com熱心網友回復:
我建議BYROW()用于動態溢位結果。嘗試-
=BYROW(D2:INDEX(D2:D,COUNTA(D2:D)),LAMBDA(x,XLOOKUP(x,B2:B,C2:C,"",1)))
通常你可以使用XLOOKUP()像 -
=XLOOKUP(D2,$B$2:$B,$C$2:$C,"",1)
這里
D2:INDEX(D2:D,COUNTA(D2:D))將回傳一個值陣列以及從D2到 D 列中最后一個非空單元格的單元格參考(假設資料中沒有任何空白行)。如果你有空行,那么你必須使用不同的方法。請參閱@TheMaster 的這篇
uj5u.com熱心網友回復:
*使用排序陣列的 LOOKUP 函式可以讓您做到這一點。
這是一個可能的解決方案:
=ARRAYFORMULA(LOOKUP(E2:E5,A2:A6,C2:C6))您只需要下限 (A2:A6),上限 (B2:B6) 由函式假定。

uj5u.com熱心網友回復:
不知道這對你來說是否足夠優雅,但使用 LAMBDA 函式總是有助于提高 excel 和 google 表格中代碼的可讀性。
此示例代碼使用...
QUERY,洗掉輸出結果的空陣列。
BYROW,迭代輸入陣列并一一處理它們。
LAMBDA,命名公式中難以閱讀的部分,
FILTER,將輸入資料與MIN/MAX值進行比較,得到RETURN列
INDEX,為了簡化所需的輸入,而不是給出公式A:A,B:B,C:C,這里你只需要給出一個A1:C的范圍,公式會把它分成MIN,MAX和RETURN單獨列。
這也可以根據您的要求進行擴展,因為輸入范圍是 A1:C 和 E2:E,您可以根據需要添加任意數量的其他 MIN/MAX/RETURN 參考和測驗用例。

=QUERY(LAMBDA(REF,CASES, BYROW(CASES,LAMBDA(CASE, LAMBDA(MIN,MAX,RETURN, IF(CASE="","",FILTER(RETURN,CASE>=MIN,CASE<=MAX)) )(INDEX(REF,,1),INDEX(REF,,2),INDEX(REF,,3)) )) )($A$1:$C$,$E$2:E),"WHERE Col1 IS NOT NULL")編輯:應該在比較中使用 >= 和 <=,否則完美匹配可能會被忽略
uj5u.com熱心網友回復:
利用:
=INDEX(VLOOKUP(E2:E5; A2:C; 3))像這樣:
=INDEX(IF(E2:E="";;IFNA(VLOOKUP(E2:E; A2:C; 3))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/533998.html標籤:谷歌表格谷歌表格公式
