tính lượt đi công tác của nhân viên

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Phương Hoa 1508

Thành viên mới
Tham gia
18/3/24
Bài viết
3
Được thích
6
Em chào thầy cô và các anh chị trong diễn đàn ạ
Em nhờ cả nhà giúp em tính số lượt đi công tác của nhân viên bằng công thức hoặc vba với ạ
* Ví dụ em có 1 dòng dữ liệu gốc lịch công tác của một nhân viên là: C18,N19,S24,C25,N26/11,C02,N03,C09,N10,C16,N17,C23,N24,S29,C30,N31/12/2023
Trong đó: S là viết tắt của sáng, C là viết tắt của chiều, N là viết tắt của ngày
Giờ em muốn tính lịch đi công tác của 1 người thì sẽ tính là các ngày liền nhau tính là 1 lượt đi công tác (vì ở lại qua đêm nên chỉ tính là 1 lượt đi xe)
dòng dữ liệu gốc ở trên sẽ phân tích ra là C18,N19=1, S24,C25,N26/11=1,.... thì dòng trên trả kết quả bằng 7
* ví dụ khác: C12,N13,C26,N27/11/2022 ta có C12,N13 ngày liền nhau sẽ bằng 1 lượt, C26,N27 = 1 lượt thì ví dụ này sẽ trả kết quả bằng 2 lượt
* ví dụ tiếp: S24,S31/03, S06, S07,S14,S21,S26,C27,S28/04,S05,S12,S19,S26/05, S02/06/2023 phân tích ra ta có S24= 1 lượt, S31/03= 1 lượt, S06, S07= 1 lượt, S14=1 lượt, S21=1 lượt, S26,C27,S28/04=1 lượt,..... dòng dữ liệu này sẽ trả kết quả về bằng 11
Nhờ thầy cô và anh chị giúp em trường hợp này với ạ
 

File đính kèm

  • Mẫu biểu PMG chia tg.xlsx
    23.1 KB · Đọc: 25
Em chào thầy cô và các anh chị trong diễn đàn ạ
Em nhờ cả nhà giúp em tính số lượt đi công tác của nhân viên bằng công thức hoặc vba với ạ
* Ví dụ em có 1 dòng dữ liệu gốc lịch công tác của một nhân viên là: C18,N19,S24,C25,N26/11,C02,N03,C09,N10,C16,N17,C23,N24,S29,C30,N31/12/2023
Trong đó: S là viết tắt của sáng, C là viết tắt của chiều, N là viết tắt của ngày
Giờ em muốn tính lịch đi công tác của 1 người thì sẽ tính là các ngày liền nhau tính là 1 lượt đi công tác (vì ở lại qua đêm nên chỉ tính là 1 lượt đi xe)
dòng dữ liệu gốc ở trên sẽ phân tích ra là C18,N19=1, S24,C25,N26/11=1,.... thì dòng trên trả kết quả bằng 7
* ví dụ khác: C12,N13,C26,N27/11/2022 ta có C12,N13 ngày liền nhau sẽ bằng 1 lượt, C26,N27 = 1 lượt thì ví dụ này sẽ trả kết quả bằng 2 lượt
* ví dụ tiếp: S24,S31/03, S06, S07,S14,S21,S26,C27,S28/04,S05,S12,S19,S26/05, S02/06/2023 phân tích ra ta có S24= 1 lượt, S31/03= 1 lượt, S06, S07= 1 lượt, S14=1 lượt, S21=1 lượt, S26,C27,S28/04=1 lượt,..... dòng dữ liệu này sẽ trả kết quả về bằng 11
Nhờ thầy cô và anh chị giúp em trường hợp này với ạ
Dùng hàm tự tạo
Mã:
Function LuotDiLai(tg As String) As Long
  Dim S, T, a(), NamThang, nam, N&, i&, k&
  S = Split(Replace(Replace(Replace(Replace(tg, "N", ""), "S", ""), "C", ""), " ", ""), ",")
  N = UBound(S)
  ReDim a(0 To N + 1)
  For i = N To 0 Step -1
    T = Split(S(i), "/")
    If UBound(T) > 1 Then nam = CLng(T(2))
    If UBound(T) > 0 Then NamThang = nam & "/" & T(1) & "/"
    a(i) = DateValue(NamThang & T(0))
  Next i
  For i = 0 To N
    If a(i) + 1 <> a(i + 1) Then k = k + 1
  Next i
  LuotDiLai = k
End Function
 
Em chào thầy cô và các anh chị trong diễn đàn ạ
Em nhờ cả nhà giúp em tính số lượt đi công tác của nhân viên bằng công thức hoặc vba với ạ
* Ví dụ em có 1 dòng dữ liệu gốc lịch công tác của một nhân viên là: C18,N19,S24,C25,N26/11,C02,N03,C09,N10,C16,N17,C23,N24,S29,C30,N31/12/2023
Trong đó: S là viết tắt của sáng, C là viết tắt của chiều, N là viết tắt của ngày
Giờ em muốn tính lịch đi công tác của 1 người thì sẽ tính là các ngày liền nhau tính là 1 lượt đi công tác (vì ở lại qua đêm nên chỉ tính là 1 lượt đi xe)
dòng dữ liệu gốc ở trên sẽ phân tích ra là C18,N19=1, S24,C25,N26/11=1,.... thì dòng trên trả kết quả bằng 7
* ví dụ khác: C12,N13,C26,N27/11/2022 ta có C12,N13 ngày liền nhau sẽ bằng 1 lượt, C26,N27 = 1 lượt thì ví dụ này sẽ trả kết quả bằng 2 lượt
* ví dụ tiếp: S24,S31/03, S06, S07,S14,S21,S26,C27,S28/04,S05,S12,S19,S26/05, S02/06/2023 phân tích ra ta có S24= 1 lượt, S31/03= 1 lượt, S06, S07= 1 lượt, S14=1 lượt, S21=1 lượt, S26,C27,S28/04=1 lượt,..... dòng dữ liệu này sẽ trả kết quả về bằng 11
Nhờ thầy cô và anh chị giúp em trường hợp này với ạ
C11,N12,C13,C18,N19,C25,S26/03/2023
Mình thắc mắc là đoạn trên tính mấy đợt nhỉ?
Từ 11-13, 18-19, 25-26, là 3 đợt
Hay là từ 11-12, chiều 13, 18-19, 24-26, là 4 đợt?
 
Dùng hàm tự tạo
Mã:
Function LuotDiLai(tg As String) As Long
  Dim S, T, a(), NamThang, nam, N&, i&, k&
  S = Split(Replace(Replace(Replace(Replace(tg, "N", ""), "S", ""), "C", ""), " ", ""), ",")
  N = UBound(S)
  ReDim a(0 To N + 1)
  For i = N To 0 Step -1
    T = Split(S(i), "/")
    If UBound(T) > 1 Then nam = CLng(T(2))
    If UBound(T) > 0 Then NamThang = nam & "/" & T(1) & "/"
    a(i) = DateValue(NamThang & T(0))
  Next i
  For i = 0 To N
    If a(i) + 1 <> a(i + 1) Then k = k + 1
  Next i
  LuotDiLai = k
End Function
dạ em cảm ơn ạ, để em thử chạy hàm
Bài đã được tự động gộp:

C11,N12,C13,C18,N19,C25,S26/03/2023
Mình thắc mắc là đoạn trên tính mấy đợt nhỉ?
Từ 11-13, 18-19, 25-26, là 3 đợt
Hay là từ 11-12, chiều 13, 18-19, 24-26, là 4 đợt?
dạ tính đợt theo ngày liền nhau k cần quan tâm đến sáng chiều ạ
C11,N12,C13,C18,N19,C25,S26/03/2023 thì tính là 3 đợt ạ: từ 11-13, 18-19, 25-26 ạ
 
.
Có thể giảm bớt một vòng lặp bằng cách đưa dòng lệnh:
.
If a(i) + 1 <> a(i + 1) Then k = k + 1
.
vào cuối vòng lặp đầu tiên:
Mã:
Function LuotDiLai(tg As String) As Long
  Dim S, T, a(), NamThang, nam, N&, i&, k&
  S = Split(Replace(Replace(Replace(Replace(tg, "N", ""), "S", ""), "C", ""), " ", ""), ",")
  N = UBound(S)
  ReDim a(0 To N + 1)
  For i = N To 0 Step -1
    T = Split(S(i), "/")
    If UBound(T) > 1 Then nam = CLng(T(2))
    If UBound(T) > 0 Then NamThang = nam & "/" & T(1) & "/"
    a(i) = DateValue(NamThang & T(0))
    If a(i) + 1 <> a(i + 1) Then k = k + 1
  Next i
  LuotDiLai = k
End Function
.
 
.
Có thể giảm bớt một vòng lặp bằng cách đưa dòng lệnh:
.

.
vào cuối vòng lặp đầu tiên:
Mã:
Function LuotDiLai(tg As String) As Long
  Dim S, T, a(), NamThang, nam, N&, i&, k&
  S = Split(Replace(Replace(Replace(Replace(tg, "N", ""), "S", ""), "C", ""), " ", ""), ",")
  N = UBound(S)
  ReDim a(0 To N + 1)
  For i = N To 0 Step -1
    T = Split(S(i), "/")
    If UBound(T) > 1 Then nam = CLng(T(2))
    If UBound(T) > 0 Then NamThang = nam & "/" & T(1) & "/"
    a(i) = DateValue(NamThang & T(0))
    If a(i) + 1 <> a(i + 1) Then k = k + 1
  Next i
  LuotDiLai = k
End Function
.
Ừ hén, vậy mà mình không nghỉ tới :)
Chúc bạn ngày mới nhiều niềm vui mới /-*+//-*+//-*+/
 
Em chào thầy cô và các anh chị trong diễn đàn ạ
Em nhờ cả nhà giúp em tính số lượt đi công tác của nhân viên bằng công thức hoặc vba với ạ
* Ví dụ em có 1 dòng dữ liệu gốc lịch công tác của một nhân viên là: C18,N19,S24,C25,N26/11,C02,N03,C09,N10,C16,N17,C23,N24,S29,C30,N31/12/2023
Trong đó: S là viết tắt của sáng, C là viết tắt của chiều, N là viết tắt của ngày
Giờ em muốn tính lịch đi công tác của 1 người thì sẽ tính là các ngày liền nhau tính là 1 lượt đi công tác (vì ở lại qua đêm nên chỉ tính là 1 lượt đi xe)
dòng dữ liệu gốc ở trên sẽ phân tích ra là C18,N19=1, S24,C25,N26/11=1,.... thì dòng trên trả kết quả bằng 7
* ví dụ khác: C12,N13,C26,N27/11/2022 ta có C12,N13 ngày liền nhau sẽ bằng 1 lượt, C26,N27 = 1 lượt thì ví dụ này sẽ trả kết quả bằng 2 lượt
* ví dụ tiếp: S24,S31/03, S06, S07,S14,S21,S26,C27,S28/04,S05,S12,S19,S26/05, S02/06/2023 phân tích ra ta có S24= 1 lượt, S31/03= 1 lượt, S06, S07= 1 lượt, S14=1 lượt, S21=1 lượt, S26,C27,S28/04=1 lượt,..... dòng dữ liệu này sẽ trả kết quả về bằng 11
Nhờ thầy cô và anh chị giúp em trường hợp này với ạ
Bài này phải dùng đến VBA là phương án tối ưu, khỏi bàn cãi! và bạn cũng đã nhận được từ anh @HieuCD hỗ trợ là tốt lắm rồi.

Ở đây, do tôi hơi muốn "tám" chuyện chơi với anh em GPE, nên bày cho bạn thêm cách dùng công thức, tuy nhiên phải có các điều kiện bắt buộc sau:

1/ Máy tính của bạn phải dùng Excel 365.
2/ Dữ liệu ghi chép "Thời gian học" phải phân rõ vào các cột tháng G7: AF252 như file kèm. Công thức ô E8:
Mã:
=COUNT(1/LET(m,SEQUENCE(EOMONTH(MAX($G$7:$AG$7),0)-$G$7+1,,$G$7),n,IFERROR(--MID(TRIM(MID(SUBSTITUTE($G8:$AF8,",",REPT(" ",20)),(SEQUENCE(10)-1)*20+1,20)),2,10)+$G$7:$AF$7-1,""),FREQUENCY(n,m*(1-FREQUENCY(n,m)))))

Nếu bạn có được 2 điều kiện trên, thì cứ xem file kèm. Nếu không thì cứ tự nhiên quên nó đi, xem như tôi chưa nói gì cả!

Chúc bạn ngày vui nha!

Thân
 

File đính kèm

  • Mẫu biểu PMG chia tg.xlsx
    48.2 KB · Đọc: 13
Bá đạo thật, bài nhập dữ liệu Ngẫu hứng sông Hồng mà các bác cũng xử lý được. Em nghĩ phải chế lại bảng cho rõ chứ.
1710826964618.png
 
Bài này dữ liệu bắt buộc phải bảo đảm không có chuyện hàng hai (ambiguous).

Ví dụ:
15,16/05 thì 15 được tự động hiểu là 15/05. Nếu 15/04 thì phải ghi rõ 15/04,16/05
Chuyện ấy dễ, chuyện sau mới khó:
30,01/05 là hai ngày kế nhau. Nhưng 31,01/05 không phải là hai ngày kế nhau.
Nếu dữ liệu không ghi tháng thì 30,01 và 31,01 khó thể xác định ra sao.
 
"Thằng em" này muốn từ lết đến chết nè! Dám chọc vào tổ ong vò vẽ...

Khà khà khà
/-*+//-*+//-*+/
Hehe, đôi khi thay đổi chóng mặt sẽ gây nên tình trạng quay cuồng bác ạ.
Bài này lẽ ra phải có bom tấn để thay đổi.
Riêng khoản sau "," không cách là không ổn rồi, thêm nữa nhập liệu kiểu này là phải nhìn đi nhìn lại xem mình nhập đúng hay không. "Chậm mà chưa chắc" chính là bài này. --=0 --=0 --=0
 
Bài này dữ liệu bắt buộc phải bảo đảm không có chuyện hàng hai (ambiguous).

Ví dụ:
15,16/05 thì 15 được tự động hiểu là 15/05. Nếu 15/04 thì phải ghi rõ 15/04,16/05
Chuyện ấy dễ, chuyện sau mới khó:
30,01/05 là hai ngày kế nhau. Nhưng 31,01/05 không phải là hai ngày kế nhau.
Nếu dữ liệu không ghi tháng thì 30,01 và 31,01 khó thể xác định ra sao.
Dữ liệu dạng nầy nhập thủ công dễ nhầm, mình đoán là do phần mềm tạo ra
 
Hehe, đôi khi thay đổi chóng mặt sẽ gây nên tình trạng quay cuồng bác ạ.
Bài này lẽ ra phải có bom tấn để thay đổi.
Riêng khoản sau "," không cách là không ổn rồi, thêm nữa nhập liệu kiểu này là phải nhìn đi nhìn lại xem mình nhập đúng hay không. "Chậm mà chưa chắc" chính là bài này. --=0 --=0 --=0
em là người tổng hợp cuối lấy dữ liệu của chục người nhập, mỗi ng nhập 1 phách, em hỏi phương án xử lý thui còn file thì chắc chắn em phải xử lý lại rồi ạ, chấm phẩy linh tinh ngày tháng xẹt vớ vẩn tháng 11 có 31 ngày (@$%@ nhưng nhờ có các cao thủởđây emđã xử lýđược rồiạ
Cảm ơn các bác rất nhiều
Bài đã được tự động gộp:

Bài này phải dùng đến VBA là phương án tối ưu, khỏi bàn cãi! và bạn cũng đã nhận được từ anh @HieuCD hỗ trợ là tốt lắm rồi.

Ở đây, do tôi hơi muốn "tám" chuyện chơi với anh em GPE, nên bày cho bạn thêm cách dùng công thức, tuy nhiên phải có các điều kiện bắt buộc sau:

1/ Máy tính của bạn phải dùng Excel 365.
2/ Dữ liệu ghi chép "Thời gian học" phải phân rõ vào các cột tháng G7: AF252 như file kèm. Công thức ô E8:
Mã:
=COUNT(1/LET(m,SEQUENCE(EOMONTH(MAX($G$7:$AG$7),0)-$G$7+1,,$G$7),n,IFERROR(--MID(TRIM(MID(SUBSTITUTE($G8:$AF8,",",REPT(" ",20)),(SEQUENCE(10)-1)*20+1,20)),2,10)+$G$7:$AF$7-1,""),FREQUENCY(n,m*(1-FREQUENCY(n,m)))))

Nếu bạn có được 2 điều kiện trên, thì cứ xem file kèm. Nếu không thì cứ tự nhiên quên nó đi, xem như tôi chưa nói gì cả!

Chúc bạn ngày vui nha!

Thân
cảm ơn bác rất nhiều ạ
Bài đã được tự động gộp:

Ừ hén, vậy mà mình không nghỉ tới :)
Chúc bạn ngày mới nhiều niềm vui mới /-*+//-*+//-*+/
nhờ 2 bác mà em đã xử lý được vấn đề rồi ạ, em cảm ơn các cao thủ ạ :1a:
Bài đã được tự động gộp:

Dữ liệu dạng nầy nhập thủ công dễ nhầm, mình đoán là do phần mềm tạo ra
dữ liệu thủ công do chục người nhập em cop tổng hợp lại để làm số liệu đấy ạ, vừa xử lý vừa mếu vì cách nhập của mọi người:unknw:
 
1/ Máy tính của bạn phải dùng Excel 365.
Nếu dùng Excel 365 thì em có ý tưởng sau:
B1: tách dữ liệu bằng textsplit, loại bỏ hết chữ cái. Sau bước này dữ liệu sẽ có dạng
28/03 04 11 18 25/04 09/05/2023 (dòng 12)
B2: dựa vào cách nhập liệu của bạn chủ thớt, thêm dữ liệu tháng và năm vào. Ở đây em dựa vào độ dài của chuỗi (2,4 hoặc 6) để tham chiếu. Sau bước này dữ liệu có dạng
28/03/2023 04/04/2023 11/04/2023 18/04/2023 25/04/2023 09/05/2023

B3: Sử dụng hàm frequency để đếm số khoảng cách quãng như bác đã dùng.

Để tối em cầm máy tính làm thử coi sao. Điện thoại khó sử dụng để làm những bài phức tạp như này. Đặc biệt là bước 2.
 
Nếu dùng Excel 365 thì em có ý tưởng sau:
B1: tách dữ liệu bằng textsplit, loại bỏ hết chữ cái. Sau bước này dữ liệu sẽ có dạng
28/03 04 11 18 25/04 09/05/2023 (dòng 12)
B2: dựa vào cách nhập liệu của bạn chủ thớt, thêm dữ liệu tháng và năm vào. Ở đây em dựa vào độ dài của chuỗi (2,4 hoặc 6) để tham chiếu. Sau bước này dữ liệu có dạng
28/03/2023 04/04/2023 11/04/2023 18/04/2023 25/04/2023 09/05/2023

1/ Cái hay của Textsplit() là cắt nhanh gọn. Cái dỡ của nó là chỉ cắt dữ liệu chứa vỏn vẹn trong 1 ô nguồn, không thể cắt mảng như mình muốn. Textsplit() phù hợp với dữ liệu "Thời gian học" cũ chứa trong 1 ô của thớt.

2/ Cứ cho là sẽ có công thức để gắn thêm 'tháng/năm' vào những 'ngày' đơn (việc này hơi phê!), nhưng làm sao để biết tháng và năm thật chính xác, Vd: "28/03 04 11 18 25/04 09/05/2023", làm sao biết 28/03 của năm 2022, 2023 hay 2024!? Do đó, phải ràng buộc khi nhập liệu phải theo một quy tắc nhất định thì may ra. Chính bởi vậy, mới có yêu cầu bắt buộc phân theo từng cột tháng như bài #7.

Âu cũng là dịp anh em trao đổi về cách: nhập liệu, quản lý và xử lý dữ liệu. Hy vọng, cái "khó ló cái khôn"!

/-*+//-*+//-*+/
 
1/ Cái hay của Textsplit() là cắt nhanh gọn. Cái dỡ của nó là chỉ cắt dữ liệu chứa vỏn vẹn trong 1 ô nguồn, không thể cắt mảng như mình muốn. Textsplit() phù hợp với dữ liệu "Thời gian học" cũ chứa trong 1 ô của thớt.
...
Âu cũng là dịp anh em trao đổi về cách: nhập liệu, quản lý và xử lý dữ liệu. Hy vọng, cái "khó ló cái khôn"!
Nhìn theo góc cạnh của 365 thì dữ liệu bài này sau khi tách ra sẽ có dạng "không chuẩn" - một mẩu dữ liệu không độc lập mà có thể phải dựa vào dữ liệu trước hoặc sau nó. Con số chỉ ngày không thể đọc trọn vẹn mà phải dựa vào mẩu dữ liệu ngày đi sau nó. Giống như có cái cột merged cells mà giá trị ô đầu tiên coi như đại diện cho các ô còn lại.
Tưởng tượng phải dùng công thức cho mấy cái merged cells này đã ngán ngẩm rồi. Lại còn cái vụ chỉ một phần, lúc có tháng năm, lúc không có.

Bạn có thể thử dùng vài cái Lambda's xem. Theo tôi là tối thiểu phải 2 cái. Cái đầu tiên có nhiệm vụ chuyển chuỗi không "/", 1 "/", và 2 "/" thành ngày tử tế. Cái khó của hàm này là phải tra ngược lại trị sau nó để tìm tháng+năm (lỗi do dữ liệu không chuẩn).

Theo toi nhận xét thì 365 có cái đặc bệt là Let có thể thay thế cột phụ và Lambda có thể thay các hàm UDF đơn giản.
 
Nhìn theo góc cạnh của 365 thì dữ liệu bài này sau khi tách ra sẽ có dạng "không chuẩn" - một mẩu dữ liệu không độc lập mà có thể phải dựa vào dữ liệu trước hoặc sau nó. Con số chỉ ngày không thể đọc trọn vẹn mà phải dựa vào mẩu dữ liệu ngày đi sau nó. Giống như có cái cột merged cells mà giá trị ô đầu tiên coi như đại diện cho các ô còn lại.
Tưởng tượng phải dùng công thức cho mấy cái merged cells này đã ngán ngẩm rồi. Lại còn cái vụ chỉ một phần, lúc có tháng năm, lúc không có.

Bạn có thể thử dùng vài cái Lambda's xem. Theo tôi là tối thiểu phải 2 cái. Cái đầu tiên có nhiệm vụ chuyển chuỗi không "/", 1 "/", và 2 "/" thành ngày tử tế. Cái khó của hàm này là phải tra ngược lại trị sau nó để tìm tháng+năm (lỗi do dữ liệu không chuẩn).

Theo toi nhận xét thì 365 có cái đặc bệt là Let có thể thay thế cột phụ và Lambda có thể thay các hàm UDF đơn giản.
Cái này là anh 'xúi' em chui vào thêm "1 bụi gai" khác đó nha!

Chúc anh ngày vui tốt lành.
/-*+//-*+//-*+/
 
1/ Cái hay của Textsplit() là cắt nhanh gọn. Cái dỡ của nó là chỉ cắt dữ liệu chứa vỏn vẹn trong 1 ô nguồn, không thể cắt mảng như mình muốn. Textsplit() phù hợp với dữ liệu "Thời gian học" cũ chứa trong 1 ô của thớt.

2/ Cứ cho là sẽ có công thức để gắn thêm 'tháng/năm' vào những 'ngày' đơn (việc này hơi phê!), nhưng làm sao để biết tháng và năm thật chính xác, Vd: "28/03 04 11 18 25/04 09/05/2023", làm sao biết 28/03 của năm 2022, 2023 hay 2024!? Do đó, phải ràng buộc khi nhập liệu phải theo một quy tắc nhất định thì may ra. Chính bởi vậy, mới có yêu cầu bắt buộc phân theo từng cột tháng như bài #7.

Âu cũng là dịp anh em trao đổi về cách: nhập liệu, quản lý và xử lý dữ liệu. Hy vọng, cái "khó ló cái khôn"!

/-*+//-*+//-*+/
Dạ đúng như anh nói, nếu không nhập liệu chuẩn thì xử lý lỗi rất là phê.
Một số lỗi dễ xử lý như thừa dấu ",", khoảng trắng, thừa chữ hay thiếu chữ đầu...
Một số lỗi khác khó hơn như nhập không đủ 2 chữ số cho ngày và tháng
Lỗi khó xử lý nhất là không chốt tháng, năm mỗi khi có thay đổi tháng/năm. Vì không biết nó chính xác là ngày nào.
Tạm thời em không xử lý năm, vì đằng nào ngày 1/1 cũng là ngày nghỉ, chắc không tính đi học trong ngày này.

PS. EM cũng chưa xử lý tháng luôn. Tạm thời coi dữ liệu chuẩn phải có chốt tháng và năm, và ngày, hoặc tháng phải đủ 2 chữ số.
Mã:
E8=LET(a,TEXTSPLIT(REDUCE(D8,HSTACK({"S","C","N"," "},CHAR(10)),LAMBDA(x,y,SUBSTITUTE(x,y,""))),",",,1),
        b,LEN(a),
        c,MAP(b,a,SEQUENCE(,COUNTA(a)),LAMBDA(x,y,z,IF(x=2,y&MID(INDEX(a,z+MATCH(TRUE,DROP(b,,z)>2,0)),3,3)&MID(INDEX(a,z+MATCH(TRUE,DROP(b,,z)>5,0)),6,5),IF(x=5,y&MID(INDEX(a,z+MATCH(TRUE,DROP(b,,z)>5,0)),6,5),y)))),
       COUNT(1/(FREQUENCY(SEQUENCE(3650,,"1/1/2020",1),--c)-1))-1)
 

File đính kèm

  • Mẫu biểu PMG chia tg.xlsx
    45.7 KB · Đọc: 10
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom