Здесь я пытаюсь сопоставить номер продукта, а затем выполнить поиск несоответствующих функций. Таким образом, в следующем примере мы видим в COL A-ID продукта, COL B-Features, COL C-ID продукта, COL D-Features. Я хочу сравнить столбцы A-B с столбцами C-D. Мне удалось сопоставить всю ячейку, но я хочу получить более детальное и сопоставить слова внутри ячейки. Итак, в приведенном ниже примере я хотел бы увидеть результаты для продукта 12345, потому что в нем отсутствует функция «Средний». Также мы получили бы результаты от 54321, так как отсутствует функция «хорошо».
COL A | COL B | COL C | COL D |
ID продукта | особенности | ID продукта | особенности
12345 | быстрый и медленный и средний | 12345 | медленно
12345 | быстро и медленно | 12345 | быстро
12345 | быстро и медленно | 12345 | быстро
54321 | трудно и хорошо | 12345 | жесткий
54321 | трудно и хорошо | 12345 | жесткий
12345 | быстро и медленно | 12345 | быстрый
Пример электронной таблицы: https://docs.google.com/spreadsheets/d/e/2PACX-1vRnVIHj8ekDOzYdFyv0PSGCynh91CPWiA5LxYV52McDH4nTsUp4faP7Iw6P44xG1HUavuwAT8wfXjaA/pubhtml?gid=0&single=true
Пока у меня есть следующий скрипт с 2 функциями, и он дает результаты, если ячейки имеют точный формат, а многие нет. Мне не нужны две функции, но это была моя попытка добиться этого.
Вопрос заключается в следующем: как сначала сопоставить столбцы A и C с точным соответствием, затем, если в столбце B есть слово, которого нет в столбце D, вывести результаты в COL E: F
Спасибо за любую помощь.
function checkProduct() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getSheetByName("A Data - Formatted")
var lr=s.getLastRow()
var lookup = s.getRange(2,1,lr-1,5).getValues();
var s1=ss.getSheetByName("B Data - Formatted")
var lr1=s1.getLastRow()
var range = s1.getRange(2,1,lr1-1,5).getValues();
var s3=ss.getSheetByName("Matches")
s3.getRange("A2:F").clear();
var lookupRange = [];
for (var i = 0; i < lookup.length; i++) {
for (var j = 0; j < range.length; j++) {
var test=lookup[i][0]
if(lookup[i][0]==range[j][0]){
lookupRange.push([range[j][0],range[j][1],lookup[i][0],lookup[i][1],]);
}}}
s3.getRange(2,1,lookupRange.length,4).setValues(lookupRange);
}
function checknoMatch() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getSheetByName("Matches")
var lr=s.getLastRow()
var lookup = s.getRange(2,1,lr-1,2).getValues();
var s1=ss.getSheetByName("Matches")
var lr1=s1.getLastRow()
var range = s1.getRange(2,3,lr1-1,2).getValues();
var s3=ss.getSheetByName("Differences")
s3.getRange("A2:F").clear();
var lookupRange = [];
for (var i = 0; i < lookup.length; i++) {
for (var j = 0; j < range.length; j++) {
var test=lookup[i][0]
if(lookup[i][0] == range[j][0] && lookup[i][1] != range[j][1]){
lookupRange.push([range[j][0],range[j][1],lookup[i][0],lookup[i][1],]);
}}}
s3.getRange(2,1,lookupRange.length,4).setValues(lookupRange);
}