Как лучше всего иметь кнопку автозаполнения ячейки следующим доступным номером из столбца на другом листе? - PullRequest
1 голос
/ 05 октября 2019

У меня есть Google Sheet , содержащий два листа;один называется «Форма», где вводятся данные, а другой - «Данные», где вводятся введенные данные. То, что я ищу, - это лучший способ, чтобы кнопка автозаполнения на листе формы заполнила ячейку B2 последним числом из столбца A в листе данных плюс 1.

В настоящее время у меня это работает по формуле: =INDEX(Data!A2:A,COUNTA(Data!A2:A))+1, которая связана с ячейкой F1 на листе данных и копируется в ячейку B2 на листе формы с помощью кнопки, связанной с этим кодом:

function AutoFill() {
   var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');            
   var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form');            
   sheet1.getRange('F1').copyTo(sheet2.getRange('B2'),{contentsOnly:true})
}

.. но это вряд ли идеально. Я предполагаю, что было бы лучше всего преобразовать формулу непосредственно в скрипт, но я не уверен, как преобразовать ее функциональность. У кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 06 октября 2019
  • Вы хотите поместить значение в ячейку «B2» листа «Форма».
    • Значение, которое добавило 1 к последней строке столбца «A» листа «Данные», используется в качестве значения.
  • Вы хотите запуститьсценария, нажав кнопку «Автозаполнение» в электронной таблице.
  • Вы хотите добиться этого с помощью Google Apps Script.

Если мое понимание верно, как насчет этой модификации? Я думаю, что использование формулы может сделать ситуацию проще. Но если вы хотите изменить значение только при нажатии кнопки, использование сценария может подойти для его достижения. Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из нескольких ответов.

Модифицированный скрипт:

В этой модификации ваш скрипт был модифицирован. Измените функцию AutoFill следующим образом.

function AutoFill() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
  var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form');
  var valueOfData = sheet1.getRange(sheet1.getLastRow(), 1).getValue(); // Added
  sheet2.getRange('B2').setValue(valueOfData + 1); // Added
}
  • Получено значение, являющееся последней строкой столбца «A» листа «Данные». И он помещается в ячейку «B2» листа «Form», добавляя 1 к извлеченному значению.

Ссылки:

Если я неправильно понял ваш вопрос и это не тот результат, который вам нужен, я приношу свои извинения.

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