Для реализации описанной функциональности в скрипте (предположим, что мы используем Google Apps Script для работы с Google Sheets или аналогичный скрипт для работы с Excel) следует использовать условную логику, чтобы проверять значения в столбце C и соответственно обрабатывать строки.
Ниже приведён пример кода для Google Apps Script, который реализует требуемое поведение:
```javascript
function moveMarkedRows() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Исходный лист'); // название исходного листа
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Целевой лист'); // название целевого листа
var data = sheet.getDataRange().getValues(); // получаем все данные из исходного листа
var lastRow = targetSheet.getLastRow(); // последняя строка в целевом листе
var markedRows = [];
// Перебираем строки в поисках помеченных для переноса
for (var i = data.length - 1; i >= 0; i--) { // идем с конца, чтобы потом было удобнее удалять строки
var row = data[i];
if (row[2] === '✅') { // проверяем, содержит ли ячейка в столбце C галочку (или другое значение)
markedRows.push(row); // добавляем помеченную строку в массив
sheet.deleteRow(i + 1); // удаляем строку из исходного листа (индексация с единицы)
}
}
// Добавляем помеченные строки в целевой лист, если таковые имеются
if (markedRows.length) {
targetSheet.insertRowsAfter(lastRow, markedRows.length); // добавляем необходимое количество строк
var targetRange = targetSheet.getRange(lastRow + 1, 1, markedRows.length, markedRows[0].length);
targetRange.setValues(markedRows.reverse()); // заполняем строки данными
}
// Сжимаем данные в исходном листе, чтобы они шли подряд
var dataAfterDeletion = sheet.getDataRange().getValues();
sheet.clearContents(); // полностью очищаем исходный лист от содержимого
sheet.getRange(1, 1, dataAfterDeletion.length, dataAfterDeletion[0].length).setValues(dataAfterDeletion); // заполняем лист оставшимися данными
}
// Вызовите эту функцию для выполнения скрипта
moveMarkedRows();
```
Этот скрипт проверяет каждую строку из исходного листа, и если в столбце C стоит галочка, строка добавляется в массив `markedRows`. Затем происходит обратный перебор данных, и помеченные строки удаляются из исходного листа. После этого скрипт проверяет, есть ли строки для переноса, и если да, то добавляет их в целевой лист.
Учтите, что скрипт удаляет строки из исходного листа, потому что вы упомянули о "очистке" строк. Если под "очисткой" вы подразумеваете удаление содержимого ячеек без удаления самих строк, необходимо соответствующим образом изменить код.
Обратите внимание, что символ `✅` в коде должен быть заменён на символ или значение, которое вы используете для маркировки строк.