thao nguyen01
Thành viên thường trực




- Tham gia
- 8/12/19
- Bài viết
- 250
- Được thích
- 32
Bạn này dùng khá nhiều về vba, vào diễn đàn đến năm thứ 6 rồi mà sao không chịu khó học để tự làm nhỉ. Có lẽ cứ đi nhờ đến khi nào không đi làm nữa mất thôi.Kính gửi anh/chị trên diễn đàn,
Em đang vướng vấn đề: Em muốn tìm dòng có mặt hàng không nằm trong danh mục cho sẵn. Em có mô tả vấn đề trong file ạ.
Anh chị xem và hỗ trợ giúp em với ạ. Em cảm ơn nhiều ạ.
Sub InStr_()
Dim DMMH As String, Tmp As String: Const DF As String = ","
Dim Cls As Range
Dim VTr As Integer, Rws As Long, J As Integer
For Each Cls In [F2].CurrentRegion.Offset(1)
DMMH = DMMH & Cls.Value
Next Cls
Rws = [C2].CurrentRegion.Rows.Count
For Each Cls In Range([C2], [C2].End(xlDown))
For J = 1 To Len(Cls.Value)
Tmp = Mid(Cls.Value, J, 1)
If Tmp <> DF And Tmp <> " " Then
VTr = InStr(DMMH, Tmp)
If VTr < 1 Then
MsgBox Tmp, , Cls.Value
End If
End If
Next J
Next Cls
End Sub
Dạ, em cảm ơn anh nhiều ạ.Bạn này dùng khá nhiều về vba, vào diễn đàn đến năm thứ 6 rồi mà sao không chịu khó học để tự làm nhỉ. Có lẽ cứ đi nhờ đến khi nào không đi làm nữa mất thôi.
Dạ, con cảm ơn Bác ạ.Tạm thời tham khảo con macro cù lần này trong file thực tế của bạn xem sao:
PHP:Sub InStr_() Dim DMMH As String, Tmp As String: Const DF As String = "," Dim Cls As Range Dim VTr As Integer, Rws As Long, J As Integer For Each Cls In [F2].CurrentRegion.Offset(1) DMMH = DMMH & Cls.Value Next Cls Rws = [C2].CurrentRegion.Rows.Count For Each Cls In Range([C2], [C2].End(xlDown)) For J = 1 To Len(Cls.Value) Tmp = Mid(Cls.Value, J, 1) If Tmp <> DF And Tmp <> " " Then VTr = InStr(DMMH, Tmp) If VTr < 1 Then MsgBox Tmp, , Cls.Value End If End If Next J Next Cls End Sub
Sub Replace_Copilot()
Dim Cls As Range, RngF As Range, CellF As Range
Dim Tmp As String: Dim Rws As Long, W As Integer
Rws = [C2].CurrentRegion.Rows.Count
ReDim Arr(1 To Rws, 1 To 3):
[J4].Resize(Rws, 3).Value = Arr()
Arr(1, 1) = [A1].Value: Arr(1, 2) = [B1].Value
Arr(1, 3) = [C1].Value: W = 1
Set RngF = Range("F2", Range("F2").End(xlDown)) ' Danh Muc Cân Loai Bo'
For Each Cls In Range("C2", Range("C2").End(xlDown))
Tmp = Cls.Value
For Each CellF In RngF
Tmp = Replace(Tmp, CellF.Value, "")
Next CellF
Tmp = Replace(Tmp, ",", "")
If Len(Trim(Tmp)) > 0 Then
W = W + 1: Arr(W, 1) = Cls.Offset(, -2).Value
Arr(W, 2) = Cls.Offset(, -1).Value: Arr(W, 3) = Cls.Value
End If
Next Cls
If W Then
Randomize: [J4].Resize(W, 3).Value = Arr()
[J4:L4].Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End If
End Sub
Dạ, con cảm ơn ạPHP:Sub Replace_Copilot() Dim Cls As Range, RngF As Range, CellF As Range Dim Tmp As String: Dim Rws As Long, W As Integer Rws = [C2].CurrentRegion.Rows.Count ReDim Arr(1 To Rws, 1 To 3): [J4].Resize(Rws, 3).Value = Arr() Arr(1, 1) = [A1].Value: Arr(1, 2) = [B1].Value Arr(1, 3) = [C1].Value: W = 1 Set RngF = Range("F2", Range("F2").End(xlDown)) ' Danh Muc Cân Loai Bo' For Each Cls In Range("C2", Range("C2").End(xlDown)) Tmp = Cls.Value For Each CellF In RngF Tmp = Replace(Tmp, CellF.Value, "") Next CellF Tmp = Replace(Tmp, ",", "") If Len(Trim(Tmp)) > 0 Then W = W + 1: Arr(W, 1) = Cls.Offset(, -2).Value Arr(W, 2) = Cls.Offset(, -1).Value: Arr(W, 3) = Cls.Value End If Next Cls If W Then Randomize: [J4].Resize(W, 3).Value = Arr() [J4:L4].Interior.ColorIndex = 34 + 9 * Rnd() \ 1 End If End Sub