Tạo function mới trong excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

return81

Thành viên mới
Tham gia
8/5/09
Bài viết
2
Được thích
0
Mình đang cần thu gọn hàm trong excel như sau:

Từ: = if(countif(a3:b4,a2) >0, "đi làm","nghỉ làm")

thành =chamcong(a3:b4,a2)

trong đó a3:b4 là range có thể thay đổi được
a2 là cell có thể thay đổi được

bác nào thạo vba cho mình xin cái code với

cám ơn trước.
 
Mình đang cần thu gọn hàm trong excel như sau:

Từ: = if(countif(a3:b4,a2) >0, "đi làm","nghỉ làm")

thành =chamcong(a3:b4,a2)

trong đó a3:b4 là range có thể thay đổi được
a2 là cell có thể thay đổi được

bác nào thạo vba cho mình xin cái code với

cám ơn trước.

Bạn dùng function này
Mã:
Function chamcong(dulieu As Range, dk As Range) As String
Dim cel As Range
For Each cel In dulieu
    If cel = dk Then
        chamcong = "di lam"
        Exit Function
    End If
Next
chamcong = "nghi lam"
End Function
 
Upvote 0
Tạm là vầy cũng được:
PHP:
Option Explicit
Function ChamCong(Rng As Range, Cls As Range) As String
 Dim WF As Object
 Set WF = Application.WorksheetFunction
 If WF.CountIf(Rng, Cls.Value) > 0 Then
    ChamCong = "Có Làm"
 Else
    ChamCong = "0 Làm"
 End If
End Function
 
Upvote 0
dùng find range
Mã:
Function ChamCong(rng As Range, val)
ChamCong = "Nghi lam"
If Not rng.Find(val, LookIn:=xlValues) Is Nothing Then ChamCong = "Di lam"
End Function
 
Upvote 0
Cái này tuy hay nhưng coi chừng... trật lất
Cám ơn bạn, các tham số hàm Find mình không rành, mình copy trong Help ra, kiểm tra trên máy mình thì ra kết quả đúng
Sử dụng cách tìm được trên GPE nhưng không hiểu trong Find(val, , , 1) số 1 là gì, bạn giải thích dùm
Mã:
Function ChamCong(rng As Range, val)
ChamCong = "Nghi lam"
If Not rng.Find(val, , , 1) Is Nothing Then ChamCong = "Di lam"
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn, các tham số hàm Find mình không rành, mình copy trong Help ra, kiểm tra trên máy mình thì ra kết quả đúng
Sử dụng cách tìm được trên GPE nhưng không hiểu trong Find(val, , , 1) số 1 là gì, bạn giải thích dùm
Mã:
Function ChamCong(rng As Range, val)
ChamCong = "Nghi lam"
If Not rng.Find(val, , , 1) Is Nothing Then ChamCong = "Di lam"
End Function

nghe nói vị trí thứ 4 trong tham số nó tương ứng với cái checkbox này

0f36501bcf96abe0ca23f8b9732d8987.png


bạn thử MsgBox xlWhole xem sao . -+*/-+*/
 
Upvote 0
Cám ơn bạn, các tham số hàm Find mình không rành, mình copy trong Help ra, kiểm tra trên máy mình thì ra kết quả đúng
Sử dụng cách tìm được trên GPE nhưng không hiểu trong Find(val, , , 1) số 1 là gì, bạn giải thích dùm
Mã:
Function ChamCong(rng As Range, val)
ChamCong = "Nghi lam"
If Not rng.Find(val, , , 1) Is Nothing Then ChamCong = "Di lam"
End Function
Sáng nay mở tập tin
Mã:
Function ChamCong(rng As Range, val)
ChamCong = "Nghi lam"
If Not rng.Find(val, LookIn:=xlValues) Is Nothing Then ChamCong = "Di lam"
End Function
Thì kết quả không đúng
Lại thêm một cái sai nữa vì không đọc kỹ phần help "The settings for LookIn, LookAt, SearchOrder, and MatchByte are saved each time you use this method."+-+-+-++-+-+-++-+-+-+
 
Upvote 0
Các bạn cho mình hỏi thêm là muốn search theo Tên luôn thì thế nào nhỉ. VD: công thức là
=ChamCong(A2:B4,"Lan")
chẳng hạn. làm thế nào để VBA nó hiểu linh động giữa Cell và value có sẵn trong công thức.
 
Upvote 0
Các bạn cho mình hỏi thêm là muốn search theo Tên luôn thì thế nào nhỉ. VD: công thức là
=ChamCong(A2:B4,"Lan")
chẳng hạn. làm thế nào để VBA nó hiểu linh động giữa Cell và value có sẵn trong công thức.
Bạn thay "dk as range" thành "dk" ko thui ( biến dk sẽ là variant)
PHP:
Function chamcong(dulieu As Range, dk) As String
Dim cel As Range
For Each cel In dulieu
    If cel = dk Then
        chamcong = "di lam"
        Exit Function
    End If
Next
chamcong = "nghi lam"
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom