Cách giải quyết tốt nhất mà tôi đã tìm thấy cho đến nay là:
worksheet_name!$A$1:$YY
nhưng lý tưởng là tôi muốn có thể viết đơn giản, vd:
worksheet_name!
Vì vậy, có ai biết: có một cú pháp để chỉ định toàn bộ trang tính là một phạm vi không?
Cách giải quyết tốt nhất mà tôi đã tìm thấy cho đến nay là:
worksheet_name!$A$1:$YY
nhưng lý tưởng là tôi muốn có thể viết đơn giản, vd:
worksheet_name!
Vì vậy, có ai biết: có một cú pháp để chỉ định toàn bộ trang tính là một phạm vi không?
Câu trả lời:
Tôi đã tạo một đoạn mã Google Apps Script (GAS) nhỏ để thực hiện công việc cho bạn.
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;
}
Trong menu bảng tính, chọn Công cụ> Trình chỉnh sửa tập lệnh và thêm mã. Đảm bảo nhấn nút lỗi:

=sheetRange("sheetName",int)
Sử dụng inttùy chọn như được giải thích dưới nhận xét.
Tôi đã tạo một tệp ví dụ cho bạn: Sheet as Range
Trong trường hợp này, có hai cách để xác định phạm vi trong bảng tính thông qua GAS:
int=1; Thông qua getDataRangephương pháp. Điều này sẽ lấy một phạm vi, trong đó cột cuối cùng là cột có dữ liệu trong đó. Các tài khoản tương tự cho số lượng hàng. Đây thường là con đường đơn giản nhất. Xem tờ thứ hai trong tập tin ví dụ.int=2; Thông qua getSheetValuesphương pháp. Điều này sẽ lấy ra một phạm vi "WYSIWYG". Xem tờ thứ ba trong tập tin ví dụ.Google Sheets không có cú pháp phạm vi cho toàn bộ phạm vi trang tính.
Công thức sau đây sẽ trả về địa chỉ phạm vi của toàn bộ trang có tên Sheet1
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Để sử dụng nó làm tài liệu tham khảo, hãy đặt nó bên trong INDIRECT. Công thức sau đây sẽ trả về một mảng của tất cả các giá trị trong Sheet1.
= ArrayFormula (
  GIÁN TIẾP(
    "Tờ1!"
    & ĐỊA CHỈ (1,1 ,, THẬT)
    & ":"
    & ĐỊA CHỈ (ROWS (Trang tính 1! A: A), CỘT (Trang tính 1! 1: 1) ,, THẬT)
    ,
    THẬT
  )
)
              Tôi không biết một công cụ cụ thể, nhưng tôi nghĩ bạn có thể sử dụng một số công thức nếu bạn không biết số lượng hàng / cột:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
Đây Sheetlà tên trang tính của bạn và @là một chuỗi tùy ý. Nếu trang tính bạn chọn có @trong một ô, nó sẽ không hoạt động. Bạn có thể thay thế nó bằng một ký tự khác nếu bao giờ trang tính chứa một ô như vậy.
Ở COUNITFđây đếm số lượng hàng trong cột A: A không chứa @, sẽ là tất cả nếu không có ô nào chứa nó và INDIRECTbiến đổi Sheet!1:###(trong đó ###số lượng hàng) thành một phạm vi được chọn thực tế.
Những câu trả lời tốt nhất đã được đưa ra cho những người đang hoạt động trong phần ứng dụng, nhưng nếu có ai đó đang làm việc trong Google Sheets, thì đây là một cách tiếp cận có thể phù hợp với nhu cầu của bạn:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Giải thích : * Về cơ bản, bạn chỉ định phạm vi thông qua một chuỗi được nối với số lượng hàng trong sheet_name!
Một số ưu điểm của phương pháp này : * Đó là 'động' ... nếu bạn thêm hàng vào dưới cùng, phạm vi sẽ điều chỉnh tương ứng * Nhẹ - bạn có thể đưa điều này vào hàm nhập / truy vấn
Nhược điểm : * Không thử trong mọi trường hợp nên chỉ có thể hoạt động cho các trường hợp sử dụng cụ thể * Cá nhân tôi có sở thích làm cho mọi thứ trở nên năng động / sạch sẽ, do đó, một chức năng tùy chỉnh sắp xếp sẽ là điểm trung gian tốt giữa ứng dụng và phương pháp nhẹ này
Điều này làm việc cho tôi:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Được sử dụng trong tập lệnh bị ràng buộc, kết hợp tên trang tính với dấu "!" và sau đó nhận ký hiệu A1 của phạm vi dữ liệu trên trang tính đã chọn
Tôi đã có thể chọn toàn bộ trang tính bằng cách đặt tên cho phạm vi là trang tính mà không có dấu chấm than.
Tôi đã có một tab tên dữ liệu. Thay vì sử dụng dữ liệu! hoặc dữ liệu! A1: ZZ.
Để chỉ định toàn bộ trang tính dưới dạng phạm vi, vui lòng sử dụng:
worksheet_name!A1:ZZ
bạn có thể dùng thử tại đây: https://developers.google.com/sheet/api/reference/rest/v4/siversesheet.values/clear
hoặc nếu bạn sử dụng Java (để xóa mọi thứ trong Trang tính 1):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
hoặc nếu bạn chỉ muốn sử dụng nó trong một công thức (ví dụ: SUM) trên một trang tính khác (ví dụ: Trang tính 2), bạn có thể sử dụng tài liệu tham khảo sau:
=SUM(Sheet1!A1:ZZ)
^ Này sẽ tổng hợp tất cả các tế bào đang tồn tại trên Sheet1 và đặt giá trị trong một tế bào trên Sheet2, bạn có thể tìm thấy những ví dụ ở đây: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . Trong ví dụ này, chúng tôi có 3 cột và 5 hàng trên Sheet1, vì vậy công thức này = SUM (Sheet1! A1: ZZ) chọn tất cả chúng. Bạn có thể thêm hàng hoặc cột trên Sheet1 và giải pháp này vẫn sẽ chọn tất cả các ô.
PS: nếu bạn bỏ phiếu cho câu trả lời của tôi - vui lòng giải thích tại sao.
Giả sử bạn biết số lượng hàng, bạn có thể đặt tên cho toàn bộ trang tính là "sheet_name":
CÁC BƯỚC:
Bây giờ mỗi khi bạn sử dụng "sheet_name" trong một hàm, nó sẽ tham chiếu toàn bộ trang tính.