如何计算在Google表格的某个单元格中多次出现的单词在每次出现之间的字符数?

时间:2019-06-20 09:58:19

标签: google-apps-script

我正在扩展和澄清我先前问过的问题Here

如何返回单元格中单词每两次出现之间的字符数?

并且在一个1格单元格区域中的2个或多个单元格中?

例如:

enter image description here

请参阅Sheet6 here

单元格A2包含单词“ apple”的4倍,每次用x个字符分隔。

如何返回Sheet6 B,C,D和E列中所示的中间编号?

如何使用脚本执行此操作?理想情况下,对于A2:A的范围来设置范围B2:B,C2:C,D2:D,E2:E和F2:F中每个相应单元格的相对字符数?

以该字符串为例:

在A2中:

0 apple one apple 2 apple three apple four.

返回的所需结果将设置为:

在B2中:2 (用于2个字符串“ 0(-)”的字符)

在C2中:5 (对于字符串“(-)one(-)”的5个字符)

在D2中:3 (对于字符串“(-)2(-)”的3个字符)

在E2中:7 (对于字符串“(-)three((-)”)的7个字符)

在F2中:6 (对于字符串“(-)four。”的6个字符, 与“。”作为最后一个字符出现 该单元格作为关闭计数的准则。)

还有另一个例子:

考虑跨两个单元格A3和A4的字符串:

A3 = zero apple one apple 2

A4 = apple three apple four.

在B3中:5 (用于字符串“ zero(-)”的5个字符)

在C3中:5 (用于字符串“(-)one(-)”的5个字符)

在D4中:3 (对于3个字符串“(-)2(-)”的字符。 在D4中,因为下一个“苹果”在下面一行, 计数也设置为相对下一行)。

在E4中:7 (对于字符串“(-)three((-)”)的7个字符)

在F4中:6 (对于字符串“(-)four。”的6个字符, 与“。”作为最后一个字符出现 该单元格作为关闭计数的条件。)

到目前为止,我已经将@Jescanellas的上一个脚本改编为下面的here

function numcharsbetweenocc1and2ofApple() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

var your_string = sheet.getRange("B2").getValues().toString();


var appletree = [];
var apple_length = "apple".length;
var char_counter = 0;


while ("B2" !== "") {

var apple = your_string.indexOf("apple", char_counter) + apple_length;

appletree.push(apple);

char_counter = char_counter + apple;


var result = apple;

sheet.getRange("D2").setValue(result);




if (char_counter >= your_string.length)
 break;

};
};

但是,它返回直到上次出现“ apple”的字符数。并且仅对于一个当前单元格,当我将.getRange("B2")更改为.getRange("B2:B")并将sheet.getRange("D2:D").setValue(result);更改为sheet.getRange("D2:D").setValue(result);时,它不适用于整个列。 Sheet4

再次出现预期结果:

enter image description here

Sheet6 here

感谢您的输入和帮助!

0 个答案:

没有答案