Скопируйте столбец A3: A9-E3: A9: в A, C, E, G, I на другой лист - PullRequest
1 голос
/ 29 января 2020

Можно ли скопировать из столбца A3: A9-E3: A9: и затем нацелить их на A, C, E, G, I на другом листе?

Пример

Ответы [ 2 ]

1 голос
/ 30 января 2020

используйте эту формулу:

=ARRAYFORMULA(SPLIT(TRANSPOSE(QUERY(TRANSPOSE("♦"&A3:E9&"♦");;999^99)); "♦"))

, затем скопируйте с CTRL + C и повторно вставьте / вставьте с помощью CTRL + SHIFT + V

0

0 голосов
/ 30 января 2020

Я думаю, что ваш лучший вариант, если вы хотите использовать промежуточные столбцы, это использовать 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).

Ссылка:

Надеюсь, это поможет.

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