2012-06-11 3 views
3

나는 현재이 스크립트가 있습니다수식을 범위에 복사하십시오. 구글 스프레드 시트

function addConsultant() 
{ 
var sheet_staffing = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Staffing"); 
var sheet_parametres = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Parametres"); 
var range_tabConsultant_default = sheet_parametres.getRange(26,1,6,64); 
var row_position_newTab = sheet_parametres.getRange(1,1).getValue(); 
range_tabConsultant_default.copyFormatToRange(sheet_staffing, 1, 36, row_position_newTab, row_position_newTab + 6); 
range_tabConsultant_default.copyValuesToRange(sheet_staffing, 1, 36, row_position_newTab, row_position_newTab + 6); 
sheet_parametres.getRange(1,1).setValue(row_position_newTab+6); 
} 

이것은 기본 탭처럼, 사람마다 하나 개의 탭이 자신입니다,하지만 난 스크립트에 의해 생성 된 탭 데프 탭에서 수식을 복사하는 방법을 잘 모릅니다. 누군가 이걸로 나를 도울 수 있습니까?

답변

3

Range 클래스의 getFormulasgetFormulasR1C1 메소드를 살펴보십시오. 또한 해당 setFormulas 또는 setFormulasR1C1을 사용해야합니다.

: 당신이 혼합 된 값과 수식을 복사하는 멀티 셀 범위에있는 경우

[편집 코멘트에 대답]. 값이나 수식에 대해 하나의 셀만 가질 수 있으므로 (예 : = "값"과 같은 간단한 수식으로 일반 값을 구문 분석) 호출을 여러 세트로 분해해야합니다.

수식에 참조를 "따르도록하려면 set/getFormulas 대신 set/getFormulasR1C1 표기법을 사용하십시오.

+0

예를 들어 예상대로 작동하지는 않지만 D40 = 합계 (D41 : D45)를 원하지만 시트에 추가 할 다음 탭에는 수식 D46 = (D47 : D51)이 필요합니다. 그럴 수 없어? – ElPoney

+0

그리고 이것을 설정하면 : range_newTab.setFormulas (Formulas_tab); 내 CopyValueToRange() 전에 일을, 그리고 그것을 설정하면 CopyValueToRange() 작동하지 않습니다. – ElPoney

+0

좋아, 모든 작업 후,하지만 copyValueToRange를 사용하는 경우 setFormulas가 작동하지 않기 때문에 많은 setFormula를 사용해야합니다. 당신의 도움을 주셔서 감사합니다 ! – ElPoney

0

스크립트가 사용자가이 기능을 사용하여보고 있던 현재 시트를 사용한 경우 어떻게 될까요? GetActiveSheet

+0

사용자가 잘못된 시트에서 스크립트를 실행하면 시트에 탭을 만들고 정보를 덮어 쓰게되므로 작동하지 않을 것이라고 생각합니다. 그 이유는 내가 마지막 탭 후 행의 위치와 셀을 사용합니다. – ElPoney