Как посчитать количество символов между каждым вхождением слова, встречающимся несколько раз в ячейке в Google Sheets? - PullRequest
0 голосов
/ 20 июня 2019

Я расширяю и уточняю мой предыдущий вопрос Здесь :

Как вернуть количество символов между каждыми 2 вхождениями слова в ячейке?

А через 2 или более ячеек в диапазоне / 1 столбец ячеек?

Например:

enter image description here

Пожалуйста, смотрите Лист 6 здесь

Ячейка A2 содержит 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.

Возвращенные необходимые результаты будут установлены как:

В В2: 2 (для 2 символов строки «0 (-)»)

В С2: 5 (для 5 символов строки "(-) one (-)")

В D2: 3 (для 3 символов строки "(-) 2 (-)")

В E2: 7 (для 7 символов строки «(-) три (-)»)

В F2: 6 (для 6 символов строки "(-) четыре.", с "." появляется как последний символ в ячейка в качестве взятого критерия для закрытия счета.)

И этот другой пример:

для учета строки в 2 ячейках A3 и A4:

A3 = zero apple one apple 2

А4 = apple three apple four.

В B3: 5 (для 5 символов строки «ноль (-)»)

В С3: 5 (для 5 символов строки "(-) one (-)")

В D4: 3 (для 3 символов строки "(-) 2 (-)". В D4, потому что следующее «яблоко» на одну строку ниже, отсчет установлен также на одну строку ниже).

В E4: 7 (для 7 символов строки «(-) три (-)»)

В F4: 6 (для 6 символов строки "(-) четыре.", с "." появляется как последний символ в ячейка, взятая в качестве критерия для закрытия счета.)

Пока что я адаптировал @ 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;

};
};

Но это возвращает количество символов до последнего появления «яблока». И только для одной текущей ячейки, она не работает для всего столбца, когда я изменяю .getRange("B2") на .getRange("B2:B") и sheet.getRange("D2:D").setValue(result); на sheet.getRange("D2:D").setValue(result);. Лист4

И здесь ожидаемый результат:

enter image description here

Лист 6 здесь

Спасибо за ваш вклад и помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...