Nhờ giúp lấy “Các tuổi còn lại” sau khi loại bỏ, Tương tự như phép trừ Cell text. (1 người xem)

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

JETLI_VN

Thành viên mới
Tham gia
4/5/13
Bài viết
21
Được thích
1
Nghề nghiệp
Nhân viên kỹ thuật
Mình nhờ các bạn giúp mình với mục đích trong Excell như sau.
Bảng Excell gồm :
[TABLE="width: 644"]
[TR]
[TD="align: center"]12 con giáp
[/TD]
[TD="align: center"]Các tuổi cần loại bỏ
[/TD]
[TD="align: center"]Các tuổi còn lại
[/TD]
[/TR]
[TR]
[TD="align: center"]Tý, Sửu, Dần, Mão, Thìn, Tị, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi[/TD]
[TD="align: center"]Tý, Tị, Ngọ ,Dần, Thân, Tuất, Mùi[/TD]
[TD="align: center"]Sửu, Mão, Thìn, Dậu, Hợi[/TD]
[/TR]
[/TABLE]

- Mục đích: mình muốn cột “Các tuổi còn lại” làm bằng công thức tự động, ngắn gọn mà cho ra kết quả tương tự như phép trừ Cell đó. Thực chất cột này có kết quả là:

“Các tuổi còn lại” = “12 con giáp” – “Các tuổi cần loại bỏ”

|||||||||| Thấy thì đơn giản, nhưng khi mình làm thì không đơn giản tí nào!

Cám ơn sự giúp đỡ nhiệt tình của các bạn!
Thân chào!
 

File đính kèm

Mình nhờ các bạn giúp mình với mục đích trong Excell như sau.
Bảng Excell gồm :
[TABLE="width: 644"]
[TR]
[TD="align: center"]12 con giáp
[/TD]
[TD="align: center"]Các tuổi cần loại bỏ
[/TD]
[TD="align: center"]Các tuổi còn lại
[/TD]
[/TR]
[TR]
[TD="align: center"]Tý, Sửu, Dần, Mão, Thìn, Tị, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi[/TD]
[TD="align: center"]Tý, Tị, Ngọ ,Dần, Thân, Tuất, Mùi[/TD]
[TD="align: center"]Sửu, Mão, Thìn, Dậu, Hợi[/TD]
[/TR]
[/TABLE]

- Mục đích: mình muốn cột “Các tuổi còn lại” làm bằng công thức tự động, ngắn gọn mà cho ra kết quả tương tự như phép trừ Cell đó. Thực chất cột này có kết quả là:

“Các tuổi còn lại” = “12 con giáp” – “Các tuổi cần loại bỏ”

|||||||||| Thấy thì đơn giản, nhưng khi mình làm thì không đơn giản tí nào!

Cám ơn sự giúp đỡ nhiệt tình của các bạn!
Thân chào!
Cú pháp: =LoaiBo(A2,B2)
PHP:
Function LoaiBo(Rng1, Rng2) As String
Dim tem1, tem2, i&, kq
tem1 = Split(Rng1, ",")
tem2 = Split(Rng2, ",")
With CreateObject("scripting.dictionary")
   For i = 0 To UBound(tem2)
      .Item(Trim(tem2(i))) = ""
   Next
   For i = 0 To UBound(tem1)
      If Not .exists(Trim(tem1(i))) Then
         .Add Trim(tem1(i)), ""
         kq = kq & tem1(i) & ", "
      End If
   Next
End With
LoaiBo = Left(kq, Len(kq) - 2)
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
... làm bằng công thức tự động, ngắn gọn ...

...Thấy thì đơn giản, nhưng khi mình làm thì không đơn giản tí nào! ...

Đòi hỏi "tự động", "ngắn gọn" mà bảo là "thấy thì đơn giản" ???
Bạn tự xưng là dân kỹ thuật, đáng lẽ bạn phải biết cái gì tự động và ngắn gọn thì thiết kế rất khó so với cái chân tay và to ềnh.
Thú thật, tôi thử code với 10 kiểu dữ liệu khác nhau mà còn chưa dám bảo đảm đúng nữa. Ở đấy mà đơn giản!

Mã:
Function TruTu(ByVal s1 As String, ByVal s2 As String) As String
[COLOR=#008000]' loại bỏ những cụm từ trong chuỗi s2 ra khỏi chuỗi s1
' định nghĩa cụm từ là các ký tự giữa 2 dấu phẩy
[/COLOR]s1 = "," & Replace(Replace(Application.Trim(s1), ", ", ","), " ,", ",") & ","
s2 = Replace(Replace(Application.Trim(s2), ", ", ","), " ,", ",")
For Each s In Split(s2, ",")
s1 = Replace(s1, "," & s & ",", ",")
Next s
TruTu = Replace(Mid(s1, 2, Application.Max(0, Len(s1) - 2)), ",", ", ")
End Function

@quanghai1969: code trên cho ra #VALUE! nếu chuỗi thứ 2 in hệt chuỗi thứ nhất. Đáng lẽ kết quả phải là "".
 
Upvote 0
--=0 Bình tĩnh bạn!

Ý mình nói thấy đơn giãn là công việc đơn giãn như phép trừ, nếu mình làm thủ công là ngồi nhìn so sánh rồi nhập tay thôi. Nhưng việc lập hàm tự động làm việc đó thì không đơn giãn tí nào! Vì mình làm mãi không được nên mình thấy khó quá (Không đơn giãn như mình làm thủ công)!

--=0--=0--=0 Dù sao cũng cám ơn sự giúp đỡ nhiệt tình của các bạn!

Còn hàm của các bạn làm để mình dùng thử đã nhé!
 
Upvote 0

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

Back
Top Bottom