Kientran871994
Thành viên mới
- Tham gia
- 23/9/23
- Bài viết
- 9
- Được thích
- 0
Hiện tại, mình đã viết xong 1 đoạn Code Apps Script nhờ ChatGPT có thuật toán như sau:
- Mình có 2 sheet cần quan tâm là: "Danhsach" và "Data" (như trong hình).
- Mỗi khi mình thêm dữ liệu vào cột C4 trong sheet "Danhsach" và chạy Script thì đoạn Code của mình sẽ sinh ra 1 số ngẫu nhiên trong khoảng từ 1 đến 11, từ đó nó sẽ đối chiếu với bảng phụ tại Sheet "Data" có tọa độ: C4:E14 như trong hình. Theo đó, mỗi số ngẫu nhiên sinh ra trong khoảng từ 1 đến 11 sẽ phải đối chiếu với dữ liệu tại cột Số thứ tự, sau đó gán giá trị trong cột "Thẩm phán" vào ô tương ứng tại cột B trong sheet "Danhsach".
********Ví dụ:
Bước 1: Mình nhập liệu vào cột C trên Sheet "Danhsach" và chạy Script.
Bước 2: Hệ thống tự random ra số ngẫu nhiên là 11.
Bước 3: Hệ thống đối chiếu với dữ liệu trong sheet "Data", số 11 ứng với "Nguyễn Văn L"
Bước 4: Hệ thống tự động gán vào cột B tương ứng trong sheet "Danhsach" như trong hình.
***** Tuy nhiên, bây giờ mình muốn thêm chức năng như sau: Mình đã tạo sẵn các checkbox, ví dụ nếu mình tích vào checkbox đầu tiên là ông Nguyễn Văn A, thì khi hệ thống random ra số 1 là ông Nguyễn Văn A thì hệ thống sẽ bỏ qua và không tự động điền dữ liệu vào Sheet "Danhsach" nữa, hệ thống sẽ tự động random ra 1 số khác không phải số 1 (do mình đã tick vào ô checkbox, mục đích tích là để loại người đó ra) và điền vào Sheet "Danhsach"........ Tức là: Nếu mình tích các ô checkbox từ 1 đến 10, thì hệ thống sẽ chỉ điền vào sheet "Danhsach" khi nó random ra số 11, ứng với Nguyễn Văn L.
Hiện tại, mình không thể viết được đoạn Script này, các bạn giúp mình với ! Xin cảm ơn. Dưới đây là đoạn Script mà mình sử dụng ChatGPT để viết lên do không biết gì về lập trình hết. Mình xin cảm ơn các bạn trong diễn đàn !
Script:
- Mình có 2 sheet cần quan tâm là: "Danhsach" và "Data" (như trong hình).
- Mỗi khi mình thêm dữ liệu vào cột C4 trong sheet "Danhsach" và chạy Script thì đoạn Code của mình sẽ sinh ra 1 số ngẫu nhiên trong khoảng từ 1 đến 11, từ đó nó sẽ đối chiếu với bảng phụ tại Sheet "Data" có tọa độ: C4:E14 như trong hình. Theo đó, mỗi số ngẫu nhiên sinh ra trong khoảng từ 1 đến 11 sẽ phải đối chiếu với dữ liệu tại cột Số thứ tự, sau đó gán giá trị trong cột "Thẩm phán" vào ô tương ứng tại cột B trong sheet "Danhsach".
********Ví dụ:
Bước 1: Mình nhập liệu vào cột C trên Sheet "Danhsach" và chạy Script.
Bước 2: Hệ thống tự random ra số ngẫu nhiên là 11.
Bước 3: Hệ thống đối chiếu với dữ liệu trong sheet "Data", số 11 ứng với "Nguyễn Văn L"
Bước 4: Hệ thống tự động gán vào cột B tương ứng trong sheet "Danhsach" như trong hình.
***** Tuy nhiên, bây giờ mình muốn thêm chức năng như sau: Mình đã tạo sẵn các checkbox, ví dụ nếu mình tích vào checkbox đầu tiên là ông Nguyễn Văn A, thì khi hệ thống random ra số 1 là ông Nguyễn Văn A thì hệ thống sẽ bỏ qua và không tự động điền dữ liệu vào Sheet "Danhsach" nữa, hệ thống sẽ tự động random ra 1 số khác không phải số 1 (do mình đã tick vào ô checkbox, mục đích tích là để loại người đó ra) và điền vào Sheet "Danhsach"........ Tức là: Nếu mình tích các ô checkbox từ 1 đến 10, thì hệ thống sẽ chỉ điền vào sheet "Danhsach" khi nó random ra số 11, ứng với Nguyễn Văn L.
Hiện tại, mình không thể viết được đoạn Script này, các bạn giúp mình với ! Xin cảm ơn. Dưới đây là đoạn Script mà mình sử dụng ChatGPT để viết lên do không biết gì về lập trình hết. Mình xin cảm ơn các bạn trong diễn đàn !
Script:
function RANDOMIZE_AND_DOICHIUE() {
// Lấy sheet chính (đang được mở) và sheet "Data" theo tên
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
// Lấy dòng cuối cùng trong cột A của bảng chính
var lastRowMain = mainSheet.getLastRow();
// Lấy giá trị của cột A từ hàng 4 đến hàng cuối cùng trong bảng chính
var mainRange = mainSheet.getRange("A4:A" + lastRowMain).getValues();
// Lấy giá trị của cột C và D từ bảng "Data"
var dataRange = dataSheet.getRange("C414").getValues();
// Biến kiểm tra có cần hiển thị thông báo
var displayAlert = false;
// Lặp qua từng số ngẫu nhiên trong cột A của bảng chính
for (var i = 0; i < mainRange.length; i++) {
// Kiểm tra xem ô trong cột B của bảng chính đã có dữ liệu chưa
var cellValue = mainSheet.getRange(4 + i, 2).getValue();
if (cellValue === "") {
// Sử dụng số ngẫu nhiên đã sinh để thực hiện đối chiếu
var soNgauNhien = Math.floor(Math.random() * 11) + 1;
var found = false;
// Lặp qua từng hàng trong cột C và D của bảng "Data"
for (var j = 0; j < dataRange.length; j++) {
if (dataRange[j][0] == soNgauNhien) {
// Nếu tìm thấy số ngẫu nhiên trong cột C của "Data" và ô trong cột B của bảng chính trống
// điền dữ liệu tham chiếu tương ứng vào cột B của bảng chính
mainSheet.getRange(4 + i, 2).setValue(dataRange[j][1]);
found = true;
break;
}
}
// Nếu không tìm thấy dữ liệu, thiết lập biến hiển thị thông báo
if (!found) {
displayAlert = true;
}
}
}
// Hiển thị thông báo nếu cần
if (displayAlert) {
SpreadsheetApp.getUi().alert('Yêu cầu nhập dữ liệu trước khi thực hiện script.');
}
}