Sử dụng Công thức Mảng để Tạo Ra Các Ngày Hai Tuần Trong Google Sheets

Để tạo ra các ngày hai tuần theo thứ tự tăng dần như 01-Thg1-2020, 16-Thg1-2020, 01-Thg2-2020, 16-Thg2-2020 và cứ tiếp tục như thế trong một cột hoặc một hàng trong Google Sheets, chúng ta có thể sử dụng hàm SEQUENCE kết hợp với hàm FILTER.

Công thức kết hợp trên sẽ tạo ra các ngày hai tuần theo thứ tự tăng dần.

Nhưng nếu bạn muốn các ngày hai tuần theo thứ tự giảm dần, tức là các ngày theo thứ tự 01-Thg1-2020, 16-Thg12-2019, 01-Thg12-2019 và cứ tiếp tục như thế, thì chúng ta có thể sử dụng thêm hàm SORT.

Ngoài ra, thay vì sử dụng 01 và 16, bạn có thể chọn bất kỳ các ngày hai tuần khác, ví dụ như 7 và 23, như 07-Thg1-2020, 23-Thg1-2020, 07-Thg2-2020, 23-Thg2-2020 và cứ tiếp tục như thế. Công thức linh hoạt đủ để điều chỉnh cho sự thay đổi này.

Làm thế nào để Lấy Các Ngày Hai Tuần theo Thứ Tự Tăng Dần trong Google Sheets

Các Ngày Hai Tuần trong Một Cột (Tăng)

Nhập công thức mảng dưới đây vào một cột trống, ví dụ như ô C2.

=filter(sequence(365,1,date(2020,1,1),1),(day(sequence(365,1,date(2020,1,1),1))=16)+(day(sequence(365,1,date(2020,1,1),1))=1))

Điều này sẽ tạo ra một danh sách các giá trị ngày. Chọn các giá trị ngày (cột C) và định dạng chúng thành ngày từ menu định dạng (Format > Number > Date).

Công thức mảng trên sẽ tạo ra các ngày hai tuần theo thứ tự tăng dần trong Google Sheets từ 01-Thg1-2020 đến 16-Thg12-2020.

Generate Bimonthly Sequential Dates in Google Sheets

Tôi sẽ giải thích sau cách chỉnh sửa công thức này cho các khoảng thời gian khác nhau.

Các Ngày Hai Tuần trong Một Hàng (Tăng)

Giả sử bạn muốn tạo một mẫu biểu đồ Gantt trong Google Sheets.

Bạn có thể có các ngày bắt đầu và kết thúc công việc trong hai cột (B:C), và một hàng (D2:2) chứa các ngày (hàng ngày, hàng tuần, hàng tháng hoặc hàng hai tuần) để vẽ thanh.

Nếu lịch trình là theo hàng hai tuần (trong hình ảnh trên, nó được tính theo hàng tuần), thì có thể bạn muốn tạo ra các ngày hai tuần trong một hàng.

Trong trường hợp đó, hãy sử dụng TRANSPOSE với công thức trên để nhận được kết quả trong một hàng.

=transpose(filter(sequence(365,1,date(2020,1,1),1),(day(sequence(365,1,date(2020,1,1),1))=16)+(day(sequence(365,1,date(2020,1,1),1))=1)))

Nhưng nếu bạn biết các đối số của SEQUENCE, bạn có thể tránh sử dụng TRANSPOSE bằng cách sửa đổi một chút công thức.

Cú pháp: SEQUENCE(rows, [columns], [start], [step])

Những gì bạn muốn thực hiện là thay thế giá trị được sử dụng trong ‘rows’ bằng ‘columns’ và thay các giá trị được sử dụng trong ‘columns’ bằng ‘rows’. Tức là thay thế 1 bằng 365 và 365 bằng 1 như sau.

=filter(sequence(1,365,date(2020,1,1),1),(day(sequence(1,365,date(2020,1,1),1))=16)+(day(sequence(1,365,date(2020,1,1),1))=1))

Công thức trên sẽ tạo ra các ngày hai tuần theo thứ tự tăng dần trong một hàng.

Làm thế nào để Sửa Đổi Công thức?

Hãy cố gắng giải thích cách sửa đổi công thức để tạo ra các ngày hai tuần khác nhau như sau:

  1. Thay đổi tháng bắt đầu và kết thúc khác nhau.
  2. Thay đổi các ngày (hai ngày khác thay thế cho 1 và 16).

Tôi nghĩ rằng, với sự giúp đỡ của hình ảnh, công thức sẽ dễ hiểu đối với bạn. Tìm hiểu thêm chi tiết bên dưới.

Chú giải và Giải thích

Màu đỏ:

Để có các ngày hai tuần theo thứ tự tăng dần từ 01-Thg6-2020, thay thế date(2020,1,1) (xuất hiện ba lần trong công thức) bằng date(2020,6,1). Công thức sẽ trả lại các ngày từ 01-Thg6-2020 đến 16-Thg5-2021.

Màu xanh lá cây:

Giả sử bạn đã thực hiện các thay đổi ở trên (được đề cập theo màu đỏ). Để chỉ lấy các ngày đến 16-Thg12-2020 thay vì 16-Thg5-2021, bạn phải thay thế 365 trong công thức bằng 213, và cũng thay thế nó ba lần.

Bạn đã làm thế nào để tính toán được con số này?

Tìm số ngày (chênh lệch ngày) từ 01-Thg6-2020 đến 31-Thg12-2020 bằng hàm DAYS dưới đây.

=days(date(2020,12,31),date(2020,6,1))
Màu vàng:

Để có các ngày hai tuần khác nhau, hãy thay thế 1 và 16 trong công thức. Ví dụ, thay thế 1 và 16 bằng 7 và 23 và kiểm tra sự thay đổi trong kết quả.

Làm thế nào để Lấy Các Ngày Hai Tuần theo Thứ Tự Giảm Dần trong Google Sheets

Giả sử tôi muốn lấy các ngày từ tháng 12-2020 đến tháng 01-2020, có nghĩa là các ngày theo thứ tự giảm dần. Điều chúng ta muốn làm là sử dụng ngày bắt đầu là 01-01-2020 và 365 trong công thức.

Cụ thể, sử dụng công thức trước đó. Sau đó bọc nó với SORT. Làm thế nào?

Công thức chung:

=sort(bimonthly_formula,1,0)

Vậy công thức sẽ là:

=sort(filter(sequence(365,1,date(2020,1,1),1),(day(sequence(365,1,date(2020,1,1),1))=16)+(day(sequence(365,1,date(2020,1,1),1))=1)),1,0)

Chúng ta cần sử dụng TRANSPOSE ở đây vì SORT không hoạt động trong một hàng.

=transpose(sort(transpose(filter(sequence(1,365,date(2020,1,1),1),(day(sequence(1,365,date(2020,1,1),1))=16)+(day(sequence(1,365,date(2020,1,1),1))=1))),1,0))

Logic của Công thức

Để tạo ra các ngày hai tuần theo thứ tự tăng dần trong Google Sheets, tôi đã sử dụng một logic đơn giản. Như sau:

Công thức SEQUENCE tạo ra các ngày tăng dần như 01-Thg1-2020, 02-Thg1-2020 và cứ tiếp tục như thế. Công thức FILTER lọc các ngày 1 và 16.

Tài Nguyên Bổ Sung

Chúc bạn thành công!

Related posts