首页 > 解决方案 > 如何计算Google表格中单元格中出现多次的单词每次出现之间的字符数?

问题描述

我正在扩展和澄清我之前在这里提出的问题:

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

并跨越一个范围/ 1列单元格中的2个或更多单元格?

例如:

在此处输入图像描述

在此处查看 Sheet6

单元格 A2 包含 4 次单词“apple”,每次由 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(对于 5 个字符串“(-)one(-)”的字符)

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

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

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

还有另一个例子:

考虑跨 2 个单元格 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(对于 7 字符串“(-)three(-)”的字符)

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

到目前为止,我已经将@Jescanellas以前脚本改编为以下内容

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")并且仅对于一个当前单元格,当我将to.getRange("B2:B")sheet.getRange("D2:D").setValue(result);to更改为时,它不适用于整列sheet.getRange("D2:D").setValue(result);表 4

这里又是预期的结果:

在此处输入图像描述

第六张在这里

感谢您的意见和帮助!

标签: google-apps-script

解决方案


推荐阅读