Я расширяю и уточняю мой предыдущий вопрос Здесь :
Как вернуть количество символов между каждыми 2 вхождениями слова в ячейке?
А через 2 или более ячеек в диапазоне / 1 столбец ячеек?
Например:
Пожалуйста, смотрите Лист 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
И здесь ожидаемый результат:
Лист 6 здесь
Спасибо за ваш вклад и помощь!