使用带有重复间隔的vlookup +分割

问题描述 投票:1回答:2

我有一个清单,上面有购买代码和产品序列号,我想知道每种产品的购买价格。在第二个列表中,我有一列带有购买代码,在另一列中有一个逗号分隔的产品组的序列号,在第三列中是每个产品组的价格。

我正在使用下面的公式,但是当重复“ E”列中的代码时,该公式将不起作用:

=IF(HLOOKUP(B2;SPLIT(VLOOKUP(A2;$E$1:$F$1000;2;FALSE);", ";TRUE);1;FALSE)<>"#N/A";VLOOKUP(A2;$E$1:$G$5;3;FALSE);"")

Example

Test Spreadsheet

google-apps-script google-sheets spreadsheet google-sheets-formula google-sheets-query
2个回答
1
投票

您可以使用查询

=query(E:G,"select G where E='"&A2&"' and F contains '"&B2&"' limit 1 label G ''")

如果B列中的所有ID都不是另一个ID的子字符串。

enter image description here


0
投票

我随心所欲地编写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值不执行任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.