У меня есть электронная таблица Google с тремя разными листами, которые вы можете увидеть в here.Значения копирования таблицы Google из одной строки в другую.
Что бы я хотел сделать, это за каждого человека на листе «человек», создайте строку лица на листах «стаков», которые будут повторяться столько раз, сколько будет из числа «блюд», которые мы есть в «блюде». Итак, для каждого человека, я хочу создать personA + meal1 в строке №1, personA + meal2 в строке №2, personA + meal3 в строке № 3 и т. Д.
Я понял, как это сделать, повторяя один и тот же код снова и снова. Код работает, но он очень неэффективен. Я предполагаю, что должен быть способ сделать то же самое повторение, которое я делаю гораздо более простым и простым способом. Я просто изучаю, как вам использовать некоторые скрипты для улучшения моей таблицы, поэтому любая помощь с этим будет очень желанной!
Некоторые Предостережения:
- Если вы посмотрите на таблицу, вы увидите, что я использую формулы в некоторой ячейке, чтобы вычислить последнюю строку со значением или размеров диапазонов.
- На вкладке «Питание» я определил диапазон имен с едой. Я не очень горжусь этим, потому что список еды будет расти, поэтому я задаюсь вопросом, есть ли более динамичный способ справиться с этим, вместо того, чтобы корректировать диапазон каждый раз, когда я добавляю новую еду.
Вот код, который вы также найдете в таблице:
function copyValuesA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("names");
var name = sheet.getRange("A2");
var sheetMeals = ss.getSheetByName("meals");
var rangeMeals = sheet.getRange("mealsNames");
var sheetstacs = ss.getSheetByName("stacs");
var lastRow = sheetstacs.getRange("B1").getValue();
var mealCount = sheetstacs.getRange("D1").getValue();
var lastRowMeals = sheetstacs.getRange("C1").getValue();
var rangeOrigname01 = sheetstacs.getRange("A" + lastRow + ":A" + mealCount);
var rangeOrigname02 = sheetstacs.getRange("A1");
name.copyTo(rangeOrigname01);
var rangeDestMeals01 = sheetstacs.getRange("B" + lastRowMeals);
rangeMeals.copyTo(rangeDestMeals01);
}
function copyValuesB() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("names");
var name = sheet.getRange("A3");
var sheetMeals = ss.getSheetByName("meals");
var rangeMeals = sheet.getRange("mealsNames");
var sheetstacs = ss.getSheetByName("stacs");
var lastRow = sheetstacs.getRange("B1").getValue();
var mealCount = sheetstacs.getRange("D1").getValue();
var lastRowMeals = sheetstacs.getRange("C1").getValue();
var rangeOrigname01 = sheetstacs.getRange("A" + lastRow + ":A" + mealCount);
var rangeOrigname02 = sheetstacs.getRange("A1");
name.copyTo(rangeOrigname01);
var rangeDestMeals01 = sheetstacs.getRange("B" + lastRowMeals);
rangeMeals.copyTo(rangeDestMeals01);
}
function copyValuesC() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("names");
var name = sheet.getRange("A4");
var sheetMeals = ss.getSheetByName("meals");
var rangeMeals = sheet.getRange("mealsNames");
var sheetstacs = ss.getSheetByName("stacs");
var lastRow = sheetstacs.getRange("B1").getValue();
var mealCount = sheetstacs.getRange("D1").getValue();
var lastRowMeals = sheetstacs.getRange("C1").getValue();
var rangeOrigname01 = sheetstacs.getRange("A" + lastRow + ":A" + mealCount);
var rangeOrigname02 = sheetstacs.getRange("A1");
name.copyTo(rangeOrigname01);
var rangeDestMeals01 = sheetstacs.getRange("B" + lastRowMeals);
rangeMeals.copyTo(rangeDestMeals01);
}
function copyValuesAll() {
copyValuesA();
copyValuesB();
copyValuesC();
}
Эти формулы УДИВИТЕЛЬНЫЙ! Они просто решают проблему очень легко. Большое спасибо Aurielle! –
Привет, Ауриэль, я не уверен, что вы собираетесь это прочитать, потому что прошло какое-то время. Я должен сказать, что ваше решение работало amanzingly в течение всего этого времени. Дело в том, что моя таблица стала огромной, и на этой неделе я получил эту ошибку в формуле: Ошибка Текст результата REPT длиннее лимита в 32000 символов. Кроме того, Google Spreadsheet теперь очень тяжелая, и для вычисления требуется много времени. Я подумываю о переносе этой таблицы в файл Excel, и я буду в курсе, если вы знаете какую-либо формулу, которую я могу использовать для получения этого же результата, это Excel. Заранее спасибо! –