我在一列(A)中有产品说明,并希望根据说明中的内容在另一列(B)中创建标签。
我在C1中有一个以前的标签列表。我想比较A列中的内容与C1中的内容,然后仅返回已匹配的单词。
因此,在下图中,进行了比较并找到了匹配项并将其添加到B列。
我尝试过一些事情,但失败了。我最初认为它可以使用脚本将描述复制到B列,在所有单词之间添加逗号,然后搜索并替换特定的单词组合。但我意识到我必须定义1000个条件(比如不包括'是'等)
任何指向正确方向的人都会受到赞赏。
答案 0 :(得分:2)
我认为这样做会。
function findingWords()
{
var criteriaRowIndex = 1, criteriaColIndex = 2;//indexes in rngA are just row and column numbers -1
var descriptionColIndex = 0;
var tagsFoundColIndex = 1
var sht = SpreadsheetApp.getActiveSheet();
var rng = sht.getDataRange();
var rngA = rng.getValues();
var criteriaA = String(rngA[criteriaRowIndex][criteriaColIndex]).split(',');
for(var i=1;i<rngA.length;i++)
{
var strA = String(rngA[i][descriptionColIndex]).split(' ');
var tagA = [];
for(var j=0;j<criteriaA.length;j++)
{
if(strA.indexOf(criteriaA[j]) != -1)
{
tagA.push(criteriaA[j]);
}
}
rngA[i][tagsFoundColIndex]=tagA.join();
}
rng.setValues(rngA);
}
我添加了一些中间变量来帮助您识别行和列。但基本上,行,列从1开始,并且使用getValues()创建的数组中的索引从零开始。所以一般来说,索引是行数和列数减一。
答案 1 :(得分:1)
您可以尝试使用图纸公式。
我刚刚将它拼凑在一起,所以可能有一种更优化的方法来做到这一点,但这应该有效。
创建一个包含“产品描述”和“找到标记”列(Sheet1)的双列工作表。另外,创建一个单列工作表,其中包含要测试的所有标记的列表,每行只有一个标记(Sheet2)。
这里是指向您需要的布局的样本表的链接:
然后在表1中,根据需要将以下公式放入B列中的多个单元格中(从B2开始):
=REGEXREPLACE(TRIM(ARRAYFORMULA(JOIN(" ",IFERROR(REGEXEXTRACT(INDIRECT("A"&ROW()),Sheet2!A2:A))))), "\s+", ",")