Đến ký tự có điều kiện

Liên hệ QC

Hong Van

Thành viên mới
Tham gia
27/10/07
Bài viết
13
Được thích
2
Tôi đang thiết lập 1 file để chấm công trong excel. Nhưng tôi gặp vấn đề khi tổng hợp số công trong tháng. VD
Tại ô
A1: x
B1: sp
C1: x;sp
D1: 1/2x;sp
E1: x
...
Làm thế nào để đếm ký tự "x" cho kết quả là: 3.5 ký tự "sp" cho kết quả 3.5.
Rất mong các ban giúp đỡ
Thanks o lot!!
 
Bạn dùng công thức này xem có được không:
=COUNTIF(A1:E1,"x")+COUNTIF(A1:E1,"x;sp")+COUNTIF(A1:E1,"1/2x;sp")/2
 
Công thức này có lẽ chưa tổng quát. Ví dụ có một ô nào đó có giá trị là "1/2x;1/2sp" chẳng hạn.
Tôi nghĩ vấn đề này không phải là chuyện đếm ký tự nữa rồi.
 
Đúng rồi công thức này chỉ làm theo yêu cầu của Hong Van chưa tổng quát hết các điều kiện. cám ơn duongsatdn nhắc nhé.
Mến!
 
Bạn dùng công thức này thử xem :
=COUNTIF($A$1:$E$1,"*"&"x"&"*")-COUNTIF($A$1:$E$1,"*"&"1/2x"&"*")/2 &"x và "&COUNTIF($A$1:$E$1,"*"&"sp"&"*")-COUNTIF($A$1:$E$1,"*"&"1/2sp"&"*")/2&"sp"
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn dùng thử công thức này xem, công thức đã sửa theo các DK.
=COUNTIF(A1:F1,"*"&"x"&"*")-COUNTIF(A1:F1,"*"&"1/2x"&"*")+COUNTIF(A1:F1,"*"&"1/2x"&"*")/2 &"x "&COUNTIF(A1:F1,"*"&"sp"&"*")-COUNTIF(A1:F1,"*"&"1/2sp"&"*")+COUNTIF(A1:F$1,"*"&"1/2sp"&"*")/2&sp"
 

File đính kèm

Lần chỉnh sửa cuối:
Hàm tổng hợp công đây, xin mời!

PHP:
 Option Explicit
Function THCong(VungCC As Range, Optional Loai As String)
On Error Resume Next
  Dim Rng As Range

If Loai = "" Then Loai = "X" Else Loai = UCase$(Loai)
 For Each Rng In VungCC
    If InStr(UCase$(Rng), Loai) > 0 Then
        If InStr(Rng, "1/2") > 0 Then
            THCong = THCong + 0.5
        Else
            THCong = THCong + 1
        End If
    End If
 Next Rng
 THCong = CStr(THCong) & Loai
End Function

Cú pháp hàm sẽ là (tính cho người ở dòng 6; bảng chấm công bắt đầu từ cột C đền cột AF)

=THCong(C6:AF6) & " " & THCong(C6:AF6;"sF")
Kết quả có thể là: 9X 5,5SF
 

File đính kèm

Lần chỉnh sửa cuối:
Bài của bác S_D em check chưa ổn. Tính vẫn sai bác ạ. Bác thử xem file Test này của em nhé
Em đã test và phát hiện lỗi khi gặp trường hợp 1/2X;SF và 1/2SF;X , Kết quả chỉ cộng 1/2SF và 1/2X trong trường hợp này. Bác xem lại nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Xem lại hay mời thêm người ngoài trọng tài cái!

Bài của bác S_D em check chưa ổn. Tính vẫn sai bác ạ. Bác thử xem file Test này của em nhé
Em đã test và phát hiện lỗi khi gặp trường hợp 1/2X;SF và 1/2SF;X , Kết quả chỉ cộng 1/2SF và 1/2X trong trường hợp này. Bác xem lại nhé

Bạn phamnhukhang thử dùng autofill hàm tự tạo xuống hết bảng chấm công;
Sau đó thêm vài dữ liệu cho các hàng xem hàm nó cập nhật lại ngay không!
Mình cảm tưởng vẫn đúng mà!

Chúc Vui!&&&%$R
 
Nguyên văn bởi SA_DQ
Xem lại hay mời thêm người ngoài trọng tài cái!
Nên xem lại vì mình thấy hàm của bác không phân biệt 2 trường hợp sau:
-1/2x;1/2sp = Nửa x và nửa sp
-1/2x;sp = Nửa x và nửa sp
 
1. Công thức của bạn PhamnhuKhang và bạn Salam nên rút gọn như sau:
=COUNTIF(A1:F1,"*x*")-COUNTIF(A1:F1,"*1/2x*")/2&"x "&COUNTIF(A1:F1,"*sp*")-COUNTIF(A1:F1,"*1/2sp*")/2&"sp".
2. Đề nghị bạn Hồng Vân giải thích rõ hơn về trường hợp:
1/2x;sp=1/2x+sp hay =1/2x+1/2sp.
Tốt nhất nếu được bạn nên gửi file, trong file nhớ ghi chú đầy đủ để mọi người có thể giúp bạn cách làm tốt nhất.
 
Xin phép thêm 1 chút từ đoạn code của bác SA_DQ:
Function THCong(VungCC As Range, Optional Loai As String)
On Error Resume Next
Dim Rng As Range
Loai = UCase$(Loai)
For Each Rng In VungCC
.....If InStr(UCase$(Rng), Loai) > 0 Then
.........If InStr(UCase$(Rng), "1/2" & Loai) > 0 Then
..............THCong = THCong + 0.5
.........Else
..............THCong = THCong + 1
.........End If
.....End If
Next Rng
If THCong > 0 Then
.........THCong = CStr(THCong) & Loai
End If
End Function
 
Với các hàm nêu trên, đúng hay sai là rất khó phân định;

Bởi vì, khi lập hàm mỗi người hiểu theo cách riêng của mình.

Vì vậy, muốn thống nhất cách hiểu cho tất cả mọi người, phải đưa ra được tiêu chuẩn để làm căn cứ phân định đúng sai.

Muốn vậy người yêu cầu trợ giúp phải đưa ra định nghĩa (hoặc chú thích) về việc chấm công.
(Ví dụ: Trong một ô tức là một ngày mà có chứa các ký tự là: 1/2x;SF hay X;SP thì hiểu như thế nào ??? ...)
 
Bài này tôi nhớ ko lầm thì Hương Thơm có hỏi 1 lần.. hay là bài gần tương tự như thế... Thấy giống lắm!
 
Rất cảm ơn tất cả mọi người đã trợ giúp.
Tôi đã rất bận trong thời gian qua nên đã quên không nhớ rằng mình đã đặt ra vấn đề này trên diễn đàm (nên đã hì hục đếm mồn vậy).
Tôi đã làm theo công thức của bạn Phamnhukhang hướng dẫn nhưng lại gặp vấn đề là công thức không phân biệt nếu một cell chứa x;x hay sp;sp công thức sẽ chỉ cho kết quả là 1"x" hay 1'sp".
Thêm đây tôi cũng giải thích về các ký tự như sau:
x: 1 công tg
sp: 1 công sp
1/2x or 1/2sp(hay x/2 or sp/2 cũng được) là một nửa công tg hay một nửa công sp. Vậy 1/2x;sp có nghĩa là nửa công t/g và 1 công sp (1/2x+sp)
tương tự như vậy sẽ có các trường hợp:
x = 1"x" ; 1/2x = 0.5"x" ; x;x = 2"x" ; x;x/2 = 1.5"x" (tương tự đối với "sp")

x;sp = 1"x"+1"sp" ; x;sp/2 = 1"x"+0.5"sp" ; x/2;sp = 0.5"x"+1"sp"
Rất mong các bạn giúp đỡ thêm
Thanks you so much!!
 
Bạn thử CT này xem:
=SUM(LEN(A1:L1))-SUM(LEN(SUBSTITUTE(A1:L1,"x","")))-COUNTIF($A$1:$L$1,"*1/2x*")/2&"x "&(SUM(LEN(A1:L1))-SUM(LEN(SUBSTITUTE(A1:L1,"sp",""))))/2-COUNTIF($A$1:$L$1,"*1/2sp*")/2&"sp "
nhớ ctrl+shift+enter.
Thân
 

File đính kèm

Web KT

Bài viết mới nhất

Back
Top Bottom