Phân công nhân viên đều đặn vào các công việc trong Google Sheets

Bạn đang đứng trước tình huống sau đây. Trong cột A, bạn có một danh sách dài các công việc cần thực hiện. Trong một cột khác, giả sử cột C, bạn có danh sách các nhân viên có sẵn. Làm cách nào để phân công công việc cho các nhân viên một cách đều đặn trong cột B? Tôi đang nói về việc phân phối công việc ngẫu nhiên một cách công bằng. Liệu tôi có thể làm điều này trong Google Docs Sheets bằng một công thức, mà không cần sử dụng script nào không?

Tôi muốn đảm bảo các yếu tố sau trong quá trình này.

  1. Công việc phải được phân công đều cho các nhân viên.
  2. Nếu có bất kỳ công việc nào lặp lại, thì công việc đó phải được giao cho nhân viên đã được giao công việc tương tự trước đó.

Cách phân công nhân viên vào các công việc đều đặn trong Google Sheets

Tôi đang tiếp cận vấn đề này từ hai góc độ khác nhau.

  1. Một với danh sách các công việc duy nhất (vấn đề số 1).
  2. Một khác với danh sách các công việc có thể chứa các công việc lặp lại (vấn đề số 2).

Tôi có hai công thức khác nhau cho hai vấn đề này. Vui lòng lưu ý rằng công thức cho vấn đề thứ hai, tức là công việc lặp lại, sẽ hoạt động cả trong vấn đề số 1 và số 2.

Dưới đây là bảng ví dụ của tôi chứa cả hai vấn đề và giải pháp – Bảng ví dụ.

Phân phối các công việc duy nhất trong Docs Sheets (Vấn đề số 1)

Hãy xem danh sách công việc mẫu dưới đây trong cột A. Như bạn có thể thấy, không có công việc nào được lặp lại trong cột A. Tôi muốn phân phối các công việc này cho các nhân viên trong cột C.

Tôi muốn có một công thức trong ô B2. Dưới đây là cách tôi viết công thức đó theo các bước dưới đây.

Bước 1:
Chúng ta phải phân phối công việc cho 4 nhân viên. Vì vậy, đầu tiên hãy thêm một cột ảo với danh sách nhân viên chứa các số tuần tự 1, 2, 3 và 4.

=ArrayFormula({if(len(C2:C),row(A1:A),),C2:C})

Nếu số lượng nhân viên khác trong trường hợp của bạn, không có gì phải lo lắng. Công thức sẽ điều chỉnh số thứ tự tương ứng.

Bước 2:
Trong bước này, tôi sẽ lặp lại cùng các số thứ tự (1, 2, 3 và 4) cho các công việc. Xem công thức trong ô G2, nó thực hiện phần này.

=ArrayFormula(if(len(A2:A),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),))

Bạn có thể thấy rằng tôi đã sử dụng số 5 làm số chia trong công thức MOD trong combo trên.

Bạn phải thay đổi các số này nếu số lượng nhân viên trong cột C của bạn khác. Theo ví dụ của tôi, chúng ta có 4 nhân viên. Vì vậy, tôi đã sử dụng số chia là 5.

Nếu số lượng nhân viên là 3, thì số chia sẽ là 4. Không có nghi ngờ rằng nếu số lượng nhân viên là 2, thì số chia sẽ là 3. Hy vọng bạn có thể hiểu cách điều chỉnh số chia.

Bây giờ chúng ta hãy tiếp tục bước kế tiếp.

Bước 3:
Công thức cuối cùng (Chỉ hoạt động trong danh sách công việc duy nhất)

Ở đây, tôi sẽ sử dụng hai công thức trên trong Vlookup.

Cú pháp:
VLOOKUP(search_key, range, index, [is_sorted])

Công thức ở Bước 1 sẽ hoạt động làm ‘range’ trong Vlookup và ‘search key’ chính là công thức ở Bước 2.

Cột 2 là cột chỉ mục. Đó có nghĩa là tên nhân viên. Vui lòng tham khảo kết quả công thức Bước 1 ở trên.

Dưới đây là công thức cuối cùng (trong ô B2) để phân công nhân viên cho các công việc duy nhất trong Google Sheets.

=ArrayFormula(IFERROR(vlookup(if(len(A2:A),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),),{if(len(C2:C),row(A1:A),),C2:C},2,0)))

Vui lòng lưu ý rằng khi kết hợp các công thức, bạn chỉ cần sử dụng một lần công thức ArrayFormula. Hơn nữa, hãy bao gồm hàm IFERROR để tránh lỗi #N/A.

Phân phối các công việc có chứa các công việc lặp lại trong Docs Sheets (Vấn đề số 2)

Lần này, các công việc chứa các công việc lặp lại. Bạn có thể thấy điều đó bằng cách tham khảo bất kỳ hình ảnh chụp màn hình nào dưới đây. Vì vậy, rõ ràng công thức trên sẽ không hoạt động. Nhưng quy trình gần như giống nhau. Nhưng một số bước bổ sung cần được thực hiện.

Bước 1:
Đây là công thức giống như bước 1 trong ví dụ trước.

=ArrayFormula({if(len(C2:C),row(A1:A),),C2:C})

Bước 2:
Ở đây, công thức hơi khác. Để loại bỏ số thứ tự trái ngược với các công việc lặp lại, tôi đã bao gồm hàm UNIQUE trong combo này.

=ArrayFormula(if(len(unique(A2:A)),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),))

Bước 3:
Ở đây, như ví dụ bước 3 trước đó, chúng ta có thể sử dụng công thức Vlookup. Không cần phải nói, khóa tìm kiếm là công thức 2 (bước 2) và phạm vi là công thức 1 (bước 1).

=ArrayFormula(IFERROR(vlookup(if(len(unique(A2:A)),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),),{if(len(C2:C),row(A1:A),),C2:C},2,0)))

Bạn có thể tham khảo dải F2:F trong hình ảnh dưới đây để xem điều này Vlookup trả về gì.

Bước 4:
Thêm danh sách công việc duy nhất vào đầu ra Vlookup như là cột đầu tiên (xem E2:E bên dưới).

=ArrayFormula({unique(A2:A),IFERROR(vlookup(if(len(unique(A2:A)),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),),{if(len(C2:C),row(A1:A),),C2:C},2,0))})

Bước 5:
Công thức cuối cùng (Hoạt động trong danh sách công việc duy nhất/có bản sao)

Cuối cùng, sử dụng công thức trên như là phạm vi trong một Vlookup khác và danh sách công việc trong cột A2:A như khóa tìm kiếm.

Đây là công thức cuối cùng của chúng ta trong ô B2 để phân công nhân viên cho các công việc một cách đều đặn trong Google Sheets.

=ArrayFormula(IFERROR(vlookup(A2:A,{unique(A2:A),IFERROR(vlookup(if(len(unique(A2:A)),filter(mod(row(A1:A),5),mod(row(A1:A),5)<>0),),{if(len(C2:C),row(A1:A),),C2:C},2,0))},2,0)))

Như đã nói, công thức này sẽ hoạt động cả trong danh sách công việc duy nhất lẫn danh sách công việc có bản sao.

Đó là tất cả về việc phân phối công việc đều nhau trong Google Sheets. Hãy thử và tận hưởng!

Related posts