Code hàm vlookup trong Script Google

Để tạo hàm VLOOKUP trong Google Apps Script, bạn có thể sử dụng API của Google Sheets để lập trình một hàm có chức năng tương tự như VLOOKUP trong Excel.

  1. Hàm VLOOKUP Tùy Chỉnh trong Google Apps Script
  2. Cách sử dụng hàm vLookup tự viết
  3. Thực hành cùng học viên hàm vLookup tự viết

Dưới đây là cách bạn có thể viết một hàm VLOOKUP tùy chỉnh trong Google Apps Script.

1. Hàm VLOOKUP Tùy Chỉnh trong Google Apps Script

Hàm vLookupCustom dưới đây sẽ mô phỏng chức năng của hàm VLOOKUP. Hàm này tìm kiếm một giá trị trong cột đầu tiên của một dãy dữ liệu và trả về giá trị ở cùng hàng từ một cột chỉ định.

Cách viết code hàm Vlookup

  function vLookupCustom(searchKey, range, colIndex, isSorted) {
  // Đảm bảo rằng các tham số hợp lệ
  if (!range || range.length === 0 || colIndex < 1) {
    throw new Error("Invalid range or column index.");
  }

  // Kiểm tra nếu phạm vi không được sắp xếp và người dùng chọn tìm kiếm gần đúng
  if (!isSorted) {
    for (var i = 0; i < range.length; i++) {
      if (range[i][0] === searchKey) {
        return range[i][colIndex - 1];
      }
    }
  } else {
    // Nếu phạm vi được sắp xếp, sử dụng tìm kiếm nhị phân
    var low = 0;
    var high = range.length - 1;

    while (low <= high) {
      var mid = Math.floor((low + high) / 2);
      var midValue = range[mid][0];

      if (midValue === searchKey) {
        return range[mid][colIndex - 1];
      } else if (midValue < searchKey) {
        low = mid + 1;
      } else {
        high = mid - 1;
      }
    }
  }
  // Nếu không tìm thấy giá trị, trả về lỗi
  throw new Error("Value not found.");
}
 

Giải thích về hàm vlookup tự viết

  1. searchKey: Đây là giá trị mà bạn muốn tìm trong cột đầu tiên của phạm vi dữ liệu.
  2. range: Là một mảng hai chiều chứa dữ liệu mà bạn muốn tìm kiếm. Phạm vi này có thể được lấy từ Google Sheets (ví dụ, sheet.getRange("A1:C10").getValues()).
  3. colIndex: Là chỉ số cột mà bạn muốn trả về giá trị từ đó. Lưu ý rằng chỉ số cột bắt đầu từ 1 (tương tự như trong Excel).
  4. isSorted: Một giá trị boolean chỉ ra liệu dãy dữ liệu có được sắp xếp hay không. Nếu true, hàm sẽ sử dụng phương pháp tìm kiếm nhị phân (binary search) để tối ưu hiệu suất. Nếu false, hàm sẽ tìm kiếm tuần tự (linear search).

2. Cách sử dụng hàm vLookup tự viết

(1) Dữ liệu để kiểm thử hàm vLookup

Giả sử bạn có bảng dữ liệu trong Google Sheets với các thông tin như sau:

Mã Sản Phẩm Tên Sản Phẩm Giá
101 Sản phẩm A 500
102 Sản phẩm B 750
103 Sản phẩm C 1000

Để tìm giá của sản phẩm có mã 102, bạn có thể gọi hàm vLookupCustom như sau:

(2) Cách sử dụng trong Google Apps Script

 function testVLookup() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getRange("A2:C4").getValues(); // Lấy dữ liệu từ A2 đến C4

  var searchKey = 102; // Mã sản phẩm bạn muốn tìm
  var colIndex = 3;    // Cột Giá (cột thứ 3)
  var isSorted = true;  // Dữ liệu đã được sắp xếp theo cột đầu tiên (Mã sản phẩm)

  try {
    var result = vLookupCustom(searchKey, data, colIndex, isSorted);
    Logger.log('Giá sản phẩm: ' + result);
  } catch (e) {
    Logger.log(e.message); // In ra thông báo lỗi nếu không tìm thấy giá trị
  }
}
 

(3) Giải thích cách sử dụng hàm vLookup

  • sheet.getRange("A2:C4").getValues(): Lấy dữ liệu từ vùng A2 đến C4 trong Google Sheets.
  • searchKey: Mã sản phẩm bạn muốn tìm, trong ví dụ này là 102.
  • colIndex: Chỉ số cột bạn muốn lấy giá trị, trong ví dụ này là 3 (cột Giá).
  • isSorted: Chỉ ra rằng dữ liệu trong cột đầu tiên đã được sắp xếp, vì vậy chúng ta có thể sử dụng tìm kiếm nhị phân để tối ưu hóa việc tìm kiếm.

Kết quả khi chạy hàm testVLookup

Khi chạy hàm testVLookup, kết quả sẽ là giá trị của sản phẩm có mã 102, tức là 750.

3. Thực hành cùng học viên hàm vLookup tự viết

Code hàm vlookup trong Apps Script Google

Trước tiên chuẩn bị 1 sheet dữ liệu dạng, bắt đầu ô A1

Mã môn       Tên môn
C                  Lập trình C
VBA             Lập trình VBA
JS                Javascript

 function test()
{
  Logger.log(  getVlookup('C',1) ); //in ra Lập trình C
  Logger.log(  getVlookup('VBA',1) ); //in ra Lập trình VBA
}
function getVlookup(ma,vitri_cotlay)
{
  const sheet_DM_Nguon = sheets.getSheetByName("DM_Nguon");
  var ketqua="";
  var data= sheet_DM_Nguon.getRange('A2:B6').getValues();
  for (var i = 0; i < data.length; i++) {  
    
    if(ma==data[i][0])    
           return  data[i][vitri_cotlay];
    
  }
  return ketqua;
}

 

Tìm kiếm:

Bài viết liên quan:

Để tạo hàm VLOOKUP trong Google Apps Script, bạn có thể sử dụng API của Google Sheets để lập trình một hàm có chức năng tương tự như VLOOKUP trong Excel.