使用具有重复间隔+拆分的vlookup
Using vlookup with repeated interval + split
我有一个包含购买代码和产品序列号的清单,想知道每个产品的购买价格。
在第二个列表中,我有一列包含购买代码,另一列是逗号分隔的产品组的序列号,第三列是每个产品组的价格。
我正在使用下面的公式,但是当 "E" 列中的代码重复时,公式不起作用:
=IF(HLOOKUP(B2;SPLIT(VLOOKUP(A2;$E:$F00;2;FALSE);", ";TRUE);1;FALSE)<>"#N/A";VLOOKUP(A2;$E:$G;3;FALSE);"")
Example
我冒昧地编写了您需要的 Apps 脚本代码,就是这样:
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var data = ss.getRange("B2:B" + ss.getLastRow()).getValues(); // IDs
var list = ss.getRange("F2:G" + ss.getLastRow()).getValues(); // ID List
var prices = [];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < list.length; j++){
if (list[j][0].indexOf(data[i][0]) >- 1){
prices.push([list[j][1]]);
break;
}
}
}
ss.getRange("C2:C" + ss.getLastRow()).setValues(prices);
}
它根据 ID 列表值和 ID 本身进行检查,它不会对 cod
值执行任何操作。
您可以使用查询
=query(E:G,"select G where E='"&A2&"' and F contains '"&B2&"' limit 1 label G ''")
前提是 B 列中的 none 个 ID 可以是另一个 ID 的子字符串。
我有一个包含购买代码和产品序列号的清单,想知道每个产品的购买价格。 在第二个列表中,我有一列包含购买代码,另一列是逗号分隔的产品组的序列号,第三列是每个产品组的价格。
我正在使用下面的公式,但是当 "E" 列中的代码重复时,公式不起作用:
=IF(HLOOKUP(B2;SPLIT(VLOOKUP(A2;$E:$F00;2;FALSE);", ";TRUE);1;FALSE)<>"#N/A";VLOOKUP(A2;$E:$G;3;FALSE);"")
Example
我冒昧地编写了您需要的 Apps 脚本代码,就是这样:
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var data = ss.getRange("B2:B" + ss.getLastRow()).getValues(); // IDs
var list = ss.getRange("F2:G" + ss.getLastRow()).getValues(); // ID List
var prices = [];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < list.length; j++){
if (list[j][0].indexOf(data[i][0]) >- 1){
prices.push([list[j][1]]);
break;
}
}
}
ss.getRange("C2:C" + ss.getLastRow()).setValues(prices);
}
它根据 ID 列表值和 ID 本身进行检查,它不会对 cod
值执行任何操作。
您可以使用查询
=query(E:G,"select G where E='"&A2&"' and F contains '"&B2&"' limit 1 label G ''")
前提是 B 列中的 none 个 ID 可以是另一个 ID 的子字符串。