Я думаю, что ваш лучший вариант, если вы хотите использовать промежуточные столбцы, это использовать Google Apps Script . Я не думаю, что это возможно сделать с помощью встроенной функции листов или даже с помощью скрипта приложений пользовательской функции .
Сначала откройте связанный скрипт, выбрав Tools > Script editor
и скопируйте в скрипт следующую функцию:
function copyRange() {
// Retrieve original range:
var inputRange = "'Ark1'!A3:E9"; // Range of original columns (please change this according to your preferences)
var inputValues = SpreadsheetApp.getActive().getRange(inputRange).getValues();
// Transpose array so that outer array corresponds to columns:
var transposedValues = inputValues[0].map(function(column, i) {
return inputValues.map(function(row) {
return row[i];
});
});
// Get selected range (this will be the destination range):
var outputRange = SpreadsheetApp.getActiveRange();
var targetSheet = outputRange.getSheet();
var row = outputRange.getRow();
var col = outputRange.getColumn();
// Copy the source range to the destination (ignoring each second column):
transposedValues.forEach(function(column, j) {
for (var i = 0; i < column.length; i++) {
targetSheet.getRange(row + i, col + j * 2).setValue(column[i]);
};
});
}'
Этот скрипт выполняет следующие действия:
- Извлекает значения в определенном диапазоне, , определенные в первой строке этого образца , через getRange и getValues .
- «Транспонирует» извлеченный 2D-массив, соответствующий значениям исходного диапазона, так что каждый элемент во внешнем массиве соответствует столбцу, который облегчит процесс записи, как описано в этот ответ .
- Извлечение выбранного в настоящий момент диапазона с помощью getActiveRange
- Скопируйте исходный диапазон в текущий выбранный диапазон с помощью setValues .
Проблема этого подхода, конечно, в том, что он более неудобно запускать такого рода функции, чем встроенная или пользовательская функция. Вы можете прикрепить эту функцию к изображению или к меню , чтобы сделать рабочий процесс менее болезненным. Но я не могу придумать лучшего решения.
Важно, что вам придется изменить задание входного диапазона (в данном примере 'Ark1'!A3:E9
).
Ссылка:
Надеюсь, это поможет.