Google 스프레드 시트에서 전체 시트를 범위로 지정하는 방법은 무엇입니까?


27

지금까지 찾은 가장 좋은 해결 방법은 다음과 같습니다.

worksheet_name!$A$1:$YY

그러나 이상적으로는 간단히 다음과 같이 쓸 수 있기를 원합니다.

worksheet_name!

그렇다면 누구나 알고 있습니다 : 전체 시트를 범위로 지정하는 구문이 있습니까?

답변:


10

작업을 수행하기 위해 작은 Google Apps Script (GAS) 스 니펫을 만들었습니다.

암호

function sheetRange(targetName,int) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var asName = ss.getActiveSheet().getSheetName();
  var tgSheet = ss.getSheetByName(targetName);
  var output;

  if(targetName == asName) {
    output = "Error: target sheet is active sheet !!";
  } else {
    switch(int) {
      case 1: 
        output = tgSheet.getDataRange().getValues();
        break;
      case 2:
        output = tgSheet.getSheetValues(1, 1, tgSheet.getMaxRows(),  
          tgSheet.getMaxColumns());
        break;
      default:
        output = "Choose int to be 1 or 2 !!";
    }
  }
  return output;
}

스프레드 시트 메뉴에서 도구> 스크립트 편집기를 선택하고 코드를 추가하십시오. 버그 버튼을 눌러야합니다.
여기에 이미지 설명을 입력하십시오

용법

=sheetRange("sheetName",int)

int주의 사항에 설명 된대로 옵션을 사용하십시오 .

예제 파일을 만들었습니다. Sheet as Range

비고

이 경우 GAS를 통해 스프레드 시트에서 범위를 결정하는 두 가지 방법이 있습니다.

  1. int=1; getDataRange방법을 통해 . 그러면 마지막 열이 데이터를 포함하는 범위를 검색합니다. 행 수도 동일합니다. 이것은 일반적으로 가장 간단한 경로입니다. 예제 파일의 두 번째 시트를 참조하십시오.
  2. int=2; getSheetValues방법을 통해 . "WYSIWYG"범위를 검색합니다. 예제 파일의 세 번째 시트를 참조하십시오.
  3. 이러한 유형의 사용자 정의 기능의 재생 빈도는 즉각적이지 않으므로 잠시 기다려주십시오. 데이터를 새로 고치는 데 몇 시간이 걸릴 수 있습니다.

참고 문헌


이 함수가 새로 고쳐진 데이터를 표시하는 데 몇 시간이 걸리는 이유는 무엇입니까? 이 기능을 사용하는 요점은 항상 정확한 범위를 갖는 것이라고 생각 했습니까?
ClearCloud8

1
getSheetValues ​​()를 사용하는 솔루션은 getDataRange ()를 getValues ​​()와 함께 사용하는 것보다 20 % 빠릅니다. 38k 셀이 포함 된 시트로 테스트되었습니다.
Mark Witczak

11

A : Z 또는 A : AB 또는 A : XX를 사용할 수 있습니다 (XX는 페이지의 마지막 열).

단일 셀의 값을 기준으로 행에 조건부 서식을 적용하기 위해 이것을 사용하는 스크린 샷


1
사망 : "Denk Mal Neu"? 이 질문에 어떻게 대답합니까?
Jacob Jan Tuinstra

1
여기의 모든 사람들은 범위를 지정하는 방법을 알고 있습니다. 이것은 문제가 아니었다.

3

Google 스프레드 시트에는 전체 시트 범위에 대한 범위 구문이 없습니다.

다음 수식은 Sheet1이라는 전체 시트의 범위 주소를 반환합니다.

="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)

참조로 사용하려면 INDIRECT 안에 넣으십시오. 다음 수식은 Sheet1의 모든 값 배열을 반환합니다.

= 배열 공식 (
  간접 (
    "시트 1!"
    주소 (1,1,, TRUE)
    & ":"
    주소 (ROWS (Sheet1! A : A), COLUMNS (Sheet1! 1 : 1) ,, TRUE)
    ,
    참된
  )
)

1

구체적인 것을 모르지만 행 / 열 수를 모르는 경우 몇 가지 수식을 사용할 수 있다고 생각합니다.

indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))

여기, Sheet시트 이름이며 @임의의 문자열입니다. 선택한 시트가 @하나의 셀에 있으면 작동하지 않습니다. 시트에 이러한 셀이 포함되어 있으면 다른 문자로 바꿀 수 있습니다.

COUNITF여기서 열 A 행의 수를 카운트 : A를 함유하지 않는 @것이 함유 어떤 세포가없는 경우 모두 있어야하는, 및 INDIRECT변환 Sheet!1:###(단, ###실제의 선택된 범위에 대한 행의 수이다).


나는 노력에 감사하지만, 내가 알 수있는 한, 당신의 제안은 내 질문에서 언급 한 해결 방법보다 이점을 얻지 못하지만 더 장황하고 사용자에게 존재하지 않는 문자를 입력해야한다는 단점이 있습니다 시트에.
sampablokuper

@sampablokuper 장황하다는 것에 대해서는 해결책을 찾을 수 없다고 생각합니다. 두 번째 부분에서는 지금 내 대답에 추가 한 것을 간과했습니다. 또한 내가 볼 수있는 한 현재 해결 방법보다 이점은 시트에 몇 행이나 열이 있는지 알 필요가 없다는 것입니다. 그러나 그렇습니다. 그것이 가능한 한 :( 아마도 VBA 스크립트에서 기능을 구성 할 수 있습니다.
Jerry

고맙지 만 현재 해결 방법에는 시트의 행 수 또는 열이 <676 열인 한 열의 수를 알 필요가 없습니다.
sampablokuper

1

응용 프로그램 내에서 작업하는 사람들에게는 이미 최고의 답변이 제공되었지만 Google 스프레드 시트 내에서 작업하는 사람이 있다면 귀하의 요구에 맞는 방법이 있습니다.

"worksheet_name!1:" & ROWS(worksheet_name!A:A)

설명 : * 본질적으로 workflow_name의 행 수와 연결된 문자열을 통해 범위를 지정합니다 !

이 접근법의 일부 장점 : * '동적'입니다 ... 하단에 행을 추가하면 범위가 그에 따라 조정됩니다 * 가벼움-가져 오기 범위 / 쿼리 함수에 넣을 수 있습니다

단점 : * 모든 경우에 시도하지 않았으므로 특정 사용 사례에서만 작동 할 수 있습니다. * 개인적으로 물건을 역동적 / 깨끗하게 만드는 것을 선호하므로 일종의 사용자 정의 기능이 응용 프로그램 과이 가벼운 접근 방식 사이에서 좋은 중간 근거가됩니다.


1

이것은 나를 위해 작동합니다 :

var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();

바운드 스크립트에서 사용되는 시트 이름을 "!" 선택한 시트에서 데이터 범위의 A1 표기법을 얻습니다.


0

느낌표가없는 시트로 범위의 이름을 지정하여 전체 시트를 선택할 수있었습니다.

data라는 탭이 있습니다. 데이터를 사용하는 대신! 또는 데이터! A1 : ZZ.


명명 된 범위에 이름을 할당 할 때 범위 참조를 지정해야합니다. 어떤 기준 범위를 사용 했습니까?
Rubén

-1

전체 시트를 범위로 지정하려면 다음을 사용하십시오.

worksheet_name!A1:ZZ

https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear에서 시도해보십시오.

또는 Java를 사용하는 경우 (Sheet1의 모든 항목을 지우려면) :

Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();

또는 다른 시트 (예 : Sheet2)의 수식 (예 : SUM)에 사용하려는 경우 다음 참조를 사용할 수 있습니다.

=SUM(Sheet1!A1:ZZ)

^ 이것은 Sheet1의 모든 기존 셀을 합산하고 Sheet2의 셀에 값을 넣습니다. https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . 이 예제에서는 Sheet1에 3 개의 열과 5 개의 행이 있으므로이 수식 = SUM (Sheet1! A1 : ZZ)는 모든 열을 선택합니다. Sheet1에 행이나 열을 추가 할 수 있으며이 솔루션은 여전히 ​​모든 셀을 선택합니다.

추신 : 당신이 내 대답을 투표하지 않으면-이유를 설명하십시오.


-2

행 수를 알고 있다고 가정하면 전체 시트의 이름을 "worksheet_name"으로 지정할 수 있습니다.

단계 :

  1. 전체 워크 시트를 선택하십시오
  2. '데이터'-> '명명되고 보호 된 범위'를 클릭하십시오.
  3. "worksheet_name"을 입력하여 선택의 이름을 지정하고 완료를 클릭하십시오.

이제 함수에서 "worksheet_name"을 사용할 때마다 전체 워크 시트를 참조합니다.


4
분석법의 결과는 "스냅 샷"범위입니다. 열이나 행을 모두 추가해도 명명 된 범위는 변경되지 않습니다 !!
Jacob Jan Tuinstra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.