새 행을 자동으로 삽입하고 마지막 행의 함수 / 수식을 유지하는 방법은 무엇입니까?


24

다음과 같이 함수 / 수식이있는 셀이있는 테이블이 있습니다.

여기에 이미지 설명을 입력하십시오

마지막으로 사용한 행의 함수 / 수식을 복사하여 새 행을 만드는 스크립트가 필요합니다. 새 행을 만드는이 스크립트를 찾았 지만 functions / formulas는 복사하지 않습니다 . 수동으로 선택하고 복사하지 않고 어떻게 Google Apps Script에서이 형식 복사 작업을 구현할 수 있습니까?


내 이전 행 수식이 = HTTPResponse (C4) 인 경우 새 행에 대해 동일한 수식이지만 새 셀 번호를 복사하는 방법은 무엇입니까?
user1788736

답변:


20

아래 코드를 사용하여 수식의 값을 일반 값으로 복사하십시오. 스프레드 시트 메뉴에서 도구를 선택하여 코드를 추가하십시오. 그런 다음 스크립트 편집기를 선택하고 코드를 추가하십시오. "버그"버튼을 누르고 스크립트를 인증하십시오.

암호

// global 
var ss = SpreadsheetApp.getActive();

function onOpen() {
  var menu = [{name:"Add New Last Row", functionName:"addRow"}];
  ss.addMenu("Extra", menu);
}

function addRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}

contentOnly 를 설정하면 false표준 사본이 생성됩니다. 로 설정하면 true값만 붙여 넣습니다. 찾은 예제 스크립트는 값을 붙여 넣는 것 이상을 수행합니다 .....

나는 당신을 위해 예제 파일을 만들었습니다 : 수식으로 행 추가


3

이 ArrayFormula는 스크립트를 사용하지 않고도 동일하게 수행 할 수 있습니다. D4에 입력하면 그 아래의 빈 셀이 있으면 자동으로 이월됩니다.

ArrayFormula(vlookup(B4:B:tax_table!$A$2:$G$8;3;true))

참고 : "B4 : B"는 B4에서 시작하여 열 끝까지 모든 셀을 봅니다.

ArrayArrayula는 그 아래의 셀에 자신을 복사합니다. 그 아래의 셀이 비어 있는지 확인하십시오.


3

상단 (첫 번째 행)에 새 행을 추가하고 첫 번째 상단 행에서 수식을 복사해야하는 경우 사용 getFormulas()setFormulas()함수에서 수식을 복사해야 합니다. firstRow예를 들어 스프레드 시트에 헤더가있는 경우 값 을 2로 변경할 수 있습니다 .

function addFirstRow() {
    var firstRow = 1;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 1, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 1, 1, lCol);
    newRange.setFormulas(formulas);
}

1
안녕하세요 데니스, 내가 만든 게시물을 참조하고 있습니까? 방금 스크립트를 확인했는데 여전히 작동합니다. 감사합니다 Jacob Jan
Jacob Jan Tuinstra

안녕하세요 @JacobJanTuinstra, 그렇습니다. 실제로 새 행을 맨 위에 추가하고 동일한 행의 수식을 유지하려고했지만 스크립트가 새로 작성된 빈 행에서 데이터를 복사하려고 시도했기 때문에 작동하지 않았습니다. 이를 반영하여 답변을 업데이트하겠습니다. 감사합니다
dgpro 2016 년

안녕하세요 @ DenGordo! 고마워 이동할 값이 있고 수식이 아닌 경우이를 어떻게 수정합니까? 감사!
Drewdavid

PS-내가 다루고있는 탭은 어디에서 참조합니까? 다시 감사합니다.
Drewdavid

-2

이 문제를 해결하기 setFormula(range)위해 예 를 들어을 사용했습니다 .

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
 cell.setFormula("=SUM(B3:B4)");

행 인덱스에 따라 수식이 자동으로 증가합니다.

마지막으로 onUpdate 또는 onEdit 트리거를 추가 할 수 있습니다.


-1; 코드는 어떻게 발생합니까? 합계를 추가하고 있지만 실제로 행을 추가해야합니다. onUpdate트리거가 존재하지 않습니다.
Jacob Jan Tuinstra 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.