Hoàn thiện hàm Jointif

Liên hệ QC

khaivinh

Thành viên chính thức
Tham gia
18/1/08
Bài viết
53
Được thích
18
Sorry Admin vì mình post nhằm chỗ nhé, tại về bên VBA không cho post nên đành phải post qua bên đây,có gì admin chuyển bài dùm mình nhé.Tks!
Vấn đề cụ thể cần giúp đỡ mình đã ghi rõ trong file đính kèm rồi...

Mã:
Option Explicit
Function JointIf(VungDK As Range, DK As Variant, VungKQ As Range, Optional PC As Variant) As String
  Dim i As Long, Dem As Long, Temp As String
  Dem = VungDK.Count
  If IsMissing(PC) Then PC = ""
  For i = 1 To Dem
    If VungDK(i) = DK Then Temp = Temp & IIf(VungKQ(i) = "", "", PC) & VungKQ(i)
  Next
  JointIf = Mid(Temp, Len(PC) + 1, Len(Temp))
End Function
 

File đính kèm

Hàm cần của bạn đây

PHP:
Option Explicit
Function JointIf(VungDK As Range, DK As Variant, VungKQ As Range, _
               Optional PC As String) As String
  Dim jJ As Long, Dem As Long, Temp As String
  Dem = VungDK.Count
  If IsMissing(PC) Then PC = ""
  For jJ = 1 To Dem
    If VungDK(jJ) = DK And InStr(Temp, PC & VungKQ(jJ)) < 1 Then
      Temp = Temp & PC & VungKQ(jJ)
    End If
  Next
  JointIf = Mid(Temp, Len(PC) + 1, Len(Temp))
End Function
 
Upvote 0
Sorry Admin vì mình post nhằm chỗ nhé, tại về bên VBA không cho post nên đành phải post qua bên đây,có gì admin chuyển bài dùm mình nhé.Tks!
Vấn đề cụ thể cần giúp đỡ mình đã ghi rõ trong file đính kèm rồi...

Mã:
Option Explicit
Function JointIf(VungDK As Range, DK As Variant, VungKQ As Range, Optional PC As Variant) As String
  Dim i As Long, Dem As Long, Temp As String
  Dem = VungDK.Count
  If IsMissing(PC) Then PC = ""
  For i = 1 To Dem
    If VungDK(i) = DK Then Temp = Temp & IIf(VungKQ(i) = "", "", PC) & VungKQ(i)
  Next
  JointIf = Mid(Temp, Len(PC) + 1, Len(Temp))
End Function
Sư phụ đã sửa ở trên rồi, tôi xin đưa ra 1 cách khác:
PHP:
Function JoinUnique(VungDK As Range, DK, VungKQ As Range, Optional PC As String = "") As String
  Dim Dic, i As Long
  On Error Resume Next
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To VungDK.Count
    If VungDK(i) = DK Then Dic.Add VungKQ(i).Value, VungKQ(i).Value
  Next
  JoinUnique = Join(Dic.Keys, PC)
End Function
Thuật toán dựa vào: Key là những phần tử duy nhất của Keys trong Dictionary Object
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom