我有一张下表,我想在输入我的号码后找到最接近的值。我的答案必须通过引用下面的两列值来返回行值经验年数。
这是我的公式。
= INDEX(A3:A15,SUMPRODUCT(MAX(($ B $ 2:$ķ$ 2及$ B $ 1:$ķ$ 1和; $ B $ 3:$ķ$ 15 = $ A $ 18安培; $ A $ 20安培; $ B $ 22)*(ROW($ B $ 3:$ $ķ15)))) - ROW($ B $ 3)1)
如果我输入表中的值,它会起作用。但是,当我输入的值少于或多于表中的值时,它会显示错误
当我在表格中插入有重复的值时,它还会显示错误的 多年经验 。我希望 多年经验 行显示最接近的值。
正如您在输入 1400 时所看到的那样,它会显示 行 12 。
它假设显示 8 而不是 12 。
所以我的问题是如何找到最接近的值。 我怎样才能做到这一点?
答案 0 :(得分:1)
为了缩短它,你可以使用这个公式:
function sendRequest(){
navigator.serviceWorker.ready
.then(function(registration) {
registration.pushManager.getSubscription()
.then(function (subscription) {
curlCommand(subscription);
var root = 'http://jsonplaceholder.typicode.com/posts';
var title="Push Notification";
$(document).ready(function () {
$.ajax({
url: root,
beforeSend: function(xhr) { xhr.setRequestHeader("Content-Type","application/json");},
type: 'POST',
contentType: 'application/json',
crossDomain: true,
dataType: 'json',
processData: false,
data: JSON.stringify(subscription),
success: function (data) {
reg.showNotification(title, {
body: 'Hello',
icon: 'images/icon.png',
tag: 'my-tag'
});
console.log(data);
},
error: function(){
alert("Cannot get data");
}
});
});
});
});
}
这是一个数组公式,必须使用Ctrl + Shift + Enter
确认
它检查整个表以获得最接近的值(=INDEX(A1:A15,MIN(IF(ABS(B3:K15-B22)=MIN(ABS(B3:K15-B22)),ROW(3:15))))
),然后返回具有相同差异(MIN(ABS(B3:K15-B22))
)的每一行(ROW(3:15)
)。然后它只选择最小的行值(ABS(B3:K15-B22)=
)并将其用作索引。
它始终适用于低位行数!如果B13和H4相同(并且最低),它将选择第4行(并返回1)
修改强>:
正确的公式是:
MIN(IF(...))
这是一个数组公式,必须使用Ctrl + Shift + Enter
确认
与第一个公式相同,但会删除与第1行和第2行(=INDEX(A1:A15,MIN(IF(ABS(IF(B1:K1=A20,IF(B2:K2=A18,B3:K15-B22)))=MIN(ABS(IF(B1:K1=A20,IF(B2:K2=A18,B3:K15-B22)))),ROW(3:15))))
)
<强> EDIT2 强>:
基于评论:如果要排除小于搜索值的值,请使用以下公式:
IF(B1:K1=A20,IF(B2:K2=A18,B3:K15))
这是一个数组公式,必须使用Ctrl + Shift + Enter
确认
答案 1 :(得分:1)
对于小于或等于建议工资的最高行,将此标准公式放在B23中。
=INDEX(A3:A15, AGGREGATE(14, 6, ROW(1:13)/(B22>=INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max"))), 1))
如果你想要基于的实际工资,那么这个标准公式在C22。
=INDEX($B$3:$K$15, AGGREGATE(14, 6, ROW(1:13)/(B22>=INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max"))), 1), MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))
替代绝对最接近
对于B22与相应薪资栏之间的最小绝对差额,B23的经验年数为,
=INDEX(A3:A15, AGGREGATE(15, 6, ROW(1:13)/(ABS(B22-INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max")))=AGGREGATE(15, 6, ABS(INDEX(B3:K15, 0, MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))-B22), 1)), 1))
将使用
检索匹配的表薪水=INDEX($B$3:$K$15, AGGREGATE(15, 6, ROW(1:13)/(ABS(B22-INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max")))=AGGREGATE(15, 6, ABS(INDEX(B3:K15, 0, MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))-B22), 1)), 1), MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))