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.
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.
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ả 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:
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ị
}
}
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.
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:
Để 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.