Code lọc 3 điều kiện (1 người xem)

Liên hệ QC

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

ngh_khanh

Thành viên mới
Tham gia
14/2/11
Bài viết
45
Được thích
25
Em có 1 ví dụ nhỏ thế này, nhờ AC thiết lập cho em code để nó lọc dư liệu sau khi thoả mãn 3 điều kiện.
Cám ơn AC nhiều!
 

File đính kèm

Upvote 0
Anh ơi, anh sửa lại dùm em nhé! Em không hiểu phân Array lắm!
PHP:
Dim endR As Long, iR As Long, iC As Long, s As Long
Dim fDate As Date, eDate As Date
Dim Arr(), ArrKq()
Dim sMaHH As String
Sub TaoBaoCao()
With Sheets("Sheet2")
  .Range("A6:D100").ClearContents
  fDate = .[B2]: eDate = .[D2]
  sMaHH = .[B3]
End With
With Sheets("Sheet1")
  endR = .Cells(65000, 1).End(xlUp).Row
  Arr = .Range("A3:F" & endR).Value
End With
s = 0
ReDim ArrKq(1 To endR, 1 To 4)
For iR = 1 To UBound(Arr)
  If Arr(iR, 2) = sMaHH Then
    If CVDate(Arr(iR, 1)) <= eDate Then
      If CVDate(Arr(iR, 1)) >= fDate Then
        s = s + 1
        For iC = 1 To 4
          ArrKq(s, iC) = Arr(iR, iC + 2)
        Next iC
      End If
    End If
  End If
Next iR
If s > 0 Then
  With Sheets("Sheet2")
    .[A6].Resize(s, 4).Value = ArrKq
  End With
End If
Erase ArrKq, Arr
End Sub
Dùng code sau và code sự kiện
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
  TaoBaoCao
End If
End Sub
 
Upvote 0
Anh ơi, anh sửa lại dùm em nhé! Em không hiểu phân Array lắm!
Bạn có thể làm theo cách đơn giản sau:
- AutoFilter cột ngày theo điều kiện >=Ngày đầu And <= Ngày cuối
- AutoFilter cột Mã theo điều kiện = Mã yêu cầu lọc
- Copy kết quả sau filter và paste sang
Quá trình trên được thực hiện bằng tay kết hợp với chức năng record macro ---> sau đó vào chỉnh lại code tí xíu là xài được rồi
(Phương pháp Array cho tốc độ rất cao nhưng chỉ nên dùng khi bạn thật sự giỏi VBA và khi dữ liệu của bạn quá nhiều, cở vài chục ngàn dòng)
 
Upvote 0
Anh ơi, anh sửa lại dùm em nhé! Em không hiểu phân Array lắm!
Nếu không nuốt nổi "thằng" mảng thì xơi tạm "em" này thử xem:
Right Click sheet2 ==> View Code ==> chép cái này vào
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vung As Range, dK As Range
    Set Vung = Sheets("sheet1").[a2].CurrentRegion
    Set dK = Union([B2], [D2])
        If Target.Address = "$B$3" Then
            If Target.Value <> "" And Application.WorksheetFunction.CountA(dK) < 2 Then
                MsgBox "Không nhap ngày vào thì loc bang gì ha TROI ???"
            Else
                [A5].CurrentRegion.Clear
                With Vung
                    .AutoFilter Field:=1, Criteria1:=">=" & [B2].Value, Operator:=xlAnd, Criteria2:="<=" & [D2].Value
                    .AutoFilter Field:=2, Criteria1:=[b3].Value
                    .SpecialCells(12).Copy [A5]
                    .AutoFilter
                End With
            End If
        End If
End Sub
Thân
 
Upvote 0
Nếu không nuốt nổi "thằng" mảng thì xơi tạm "em" này thử xem:
Right Click sheet2 ==> View Code ==> chép cái này vào
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vung As Range, dK As Range
    Set Vung = Sheets("sheet1").[a2].CurrentRegion
    Set dK = Union([B2], [D2])
        If Target.Address = "$B$3" Then
            If Target.Value <> "" And Application.WorksheetFunction.CountA(dK) < 2 Then
                MsgBox "Không nhap ngày vào thì loc bang gì ha TROI ???"
            Else
                [A5].CurrentRegion.Clear
                With Vung
                    .AutoFilter Field:=1, Criteria1:=">=" & [B2].Value, Operator:=xlAnd, Criteria2:="<=" & [D2].Value
                    .AutoFilter Field:=2, Criteria1:=[b3].Value
                    .SpecialCells(12).Copy [A5]
                    .AutoFilter
                End With
            End If
        End If
End Sub
Thân
Cái dòng
Mã:
AutoFilter Field:=1, Criteria1:=">=" & [B2].Value, Operator:=xlAnd, Criteria2:="<=" & [D2].Value
sẽ không bao giờ chạy được trong đa số trường hợp
Có chăng phải sửa thành vầy:
Mã:
.AutoFilter 1, ">=" & Clng([B2].Value), 1, "<=" & Clng([D2].Value)
Không biết anh Cò đã thử code trên chưa? (với Control Panel định dang dd/mm/yyyy)
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu không nuốt nổi "thằng" mảng thì xơi tạm "em" này thử xem:
Right Click sheet2 ==> View Code ==> chép cái này vào
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vung As Range, dK As Range
    Set Vung = Sheets("sheet1").[a2].CurrentRegion
    Set dK = Union([B2], [D2])
        If Target.Address = "$B$3" Then
            If Target.Value <> "" And Application.WorksheetFunction.CountA(dK) < 2 Then
                MsgBox "Không nhap ngày vào thì loc bang gì ha TROI ???"
            Else
                [A5].CurrentRegion.Clear
                With Vung
                    .AutoFilter Field:=1, Criteria1:=">=" & [B2].Value, Operator:=xlAnd, Criteria2:="<=" & [D2].Value
                    .AutoFilter Field:=2, Criteria1:=[b3].Value
                    .SpecialCells(12).Copy [A5]
                    .AutoFilter
                End With
            End If
        End If
End Sub
Thân
---
Theo hướng dẩn của anh, em đã "xơi" tạm "em" này nhưng mà không hiểu lỗi chổ nào nhờ anh xem và hướng dẩn giúp. Cám ơn
*Test code của anh concogia nên chưa xem bài NDU
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
---
Theo hướng dẩn của anh, em đã "xơi" tạm "em" này nhưng mà không hiểu lỗi chổ nào nhờ anh xem và hướng dẩn giúp. Cám ơn
*Test code của anh concogia nên chưa xem bài NDU
Anh sửa thành vầy xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Range("A5:F10000").Clear
    With Sheets("sheet1").Range("A2").CurrentRegion
      .AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
      .AutoFilter 2, Range("B3").Value
      .SpecialCells(12).Copy Range("A5")
      .AutoFilter
    End With
  End If
End Sub
------------------------
Hihi, bạn nhập ngày giống như dữ liệu bên sheet1 là ...."xơi tuốt tuồn tuột"
Thân
Vấn đề nằm ở chổ: Trên máy anh code chạy được còn máy người khác thì thua ---> AutoFilter với điều kiện ngày tháng phải hết sức cần thận, không đơn giản anh viết Criteria1:=">=" & [B2].Value là máy nó hiểu đâu
(cái vụ này đã đề cập trên diễn đàn lâu rồi mà)
 
Lần chỉnh sửa cuối:
Upvote 0
Cái dòng
Mã:
AutoFilter Field:=1, Criteria1:=">=" & [B2].Value, Operator:=xlAnd, Criteria2:="<=" & [D2].Value
sẽ không bao giờ chạy được trong đa số trường hợp
Có thể nói cụ thể được không hả chú ? và

Có chăng phải sửa thành vầy:
Mã:
.AutoFilter 1, ">=" & Clng([B2].Value), 1, "<=" & Clng([D2].Value)
Clng: chổ này là sao hả chú?
Cám ơn
 
Upvote 0
Có thể nói cụ thể được không hả chú ? và

Có chăng phải sửa thành vầy:
Mã:
.AutoFilter 1, ">=" & Clng([B2].Value), 1, "<=" & Clng([D2].Value)
Clng: chổ này là sao hả chú?
Cám ơn

Clng([B2].Value)để biến giá tri cell B2 thành biến Long thôi mà anh
Nói chung anh cứ nhớ thuộc lòng như vầy: Khi dùng code AutoFilter với điều kiện ngày tháng thì anh BUỘC PHẢI biến điều kiện thành biến Long trước (dùng CLng như em đã làm ở trên) ---> Chắc bắp máy nào cũng chạy
Ẹc... Ẹc...
 
Upvote 0
Anh sửa thành vầy xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$B$3" Then
Range("A5:F10000").Clear
With Sheets("sheet1").Range("A2").CurrentRegion
.AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
.AutoFilter 2, Range("B3").Value
.SpecialCells(12).Copy Range("A5")
.AutoFilter
End With
End If
End Sub
------------------------

Vấn đề nằm ở chổ: Trên máy anh code chạy được còn máy người khác thì thua ---> AutoFilter với điều kiện ngày tháng phải hết sức cần thận, không đơn giản anh viết Criteria1:=">=" & [B2].Value là máy nó hiểu đâu
(cái vụ này đã đề cập trên diễn đàn lâu rồi mà)

Em làm thế này sao vẫn chưa được? Anh xem thêm dùm em chút nha!
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Range("A5:D10000").Clear
    With S1.Range([A2], [A65535].End(3))
      .AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
      .AutoFilter 2, Range("B3").Value
      .Offset(1, 2).Resize(, 4).SpecialCells(12).Copy Range("A6")
      .AutoFilter
    End With
  End If
End Sub
 

File đính kèm

Upvote 0
Em làm thế này sao vẫn chưa được? Anh xem thêm dùm em chút nha!
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Range("A5:D10000").Clear
    With S1.Range([A2], [A65535].End(3))
      .AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
      .AutoFilter 2, Range("B3").Value
      .Offset(1, 2).Resize(, 4).SpecialCells(12).Copy Range("A6")
      .AutoFilter
    End With
  End If
End Sub
Sai chổ này:
With S1.Range([A2], [A65535].End(3))
Lý ra phải vầy:
With S1.Range(S1.[A2], S1.[A65535].End(3))
Ngoài ra do bạn có filter cột B nên phải Resize vùng trên ít nhất 2 cột (nếu không thì dòng này .AutoFilter 2 sẽ báo lỗi)
Tóm lại, nếu không thích dùng CurrentRegion thì code trên sửa thành:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Range("A5:D10000").Clear
    With S1.Range(S1.[A2], S1.[A65535].End(3)).Resize(, 6)
      .AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
      .AutoFilter 2, Range("B3").Value
      .Offset(, 2).Resize(, 4).SpecialCells(12).Copy Range("A6")
      .AutoFilter
    End With
  End If
End Sub
 
Upvote 0
Em muốn chèn thêm cột bên Sheet2 và đặt tên là STT thì làm thế nào viết code?
 
Upvote 0
Mình sẽ tạo cho bạn thêm cột STT trước cột tên hàng. Và code thêm là:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.ScreenUpdating = False
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Range("A6:E65535").Clear
    With S1.Range(S1.[A2], S1.[A65535].End(3)).Resize(, 6)
      .AutoFilter 1, ">=" & CLng(Range("B2").Value), 1, "<=" & CLng(Range("D2").Value)
      .AutoFilter 2, Range("B3").Value
      .Offset(1, 2).Resize(, 4).SpecialCells(12).Copy Range("B6")
      .AutoFilter
    End With
    With S2.Range("A5").CurrentRegion
        If .Rows.Count > 1 Then
            .Resize(, 1).SpecialCells(4).Value = Evaluate("row(R:R)")
        End If
    End With
  End If
End Sub
 

File đính kèm

Upvote 0
Clng([B2].Value)để biến giá tri cell B2 thành biến Long thôi mà anh
Nói chung anh cứ nhớ thuộc lòng như vầy: Khi dùng code AutoFilter với điều kiện ngày tháng thì anh BUỘC PHẢI biến điều kiện thành biến Long trước (dùng CLng như em đã làm ở trên) ---> Chắc bắp máy nào cũng chạy
Ẹc... Ẹc...

Anh ơi, anh nói rõ hơn chút nữa "CLng" nhé! Em không hiểu rõ chỗ này!?
 
Upvote 0

Clng([B2].Value)để biến giá tri cell B2 thành biến Long thôi mà anh
Nói chung anh cứ nhớ thuộc lòng như vầy: Khi dùng code AutoFilter với điều kiện ngày tháng thì anh BUỘC PHẢI biến điều kiện thành biến Long trước (dùng CLng như em đã làm ở trên) ---> Chắc bắp máy nào cũng chạy
Ẹc... Ẹc...

Có thể dùng Value2 thay vì Value, cũng xơi tuốt tuột

.AutoFilter 1, ">=" & Range("B2").Value2, 1, "<=" & Range("D2").Value2

Mã:
[B]Value2[/B] Returns or sets the cell value. Read/write [B]Variant[/B]. [B]Syntax[/B]
 [B][I]expression[/I].Value2[/B]
 [I]expression[/I]   A variable that represents a [B]Range[/B] object.
 [B]Remarks[/B]

The only difference between this property and the [B]Value[/B] property is  that the [B]Value2[/B] property [COLOR=red]doesn’t use the [B]Currency[/B] and [B]Date[/B]  data types[/COLOR]
 
Lần chỉnh sửa cuối:
Upvote 0
Có thể dùng Value2 thay vì Value, cũng xơi tuốt tuột
Cái thằng Value2 này em xài từ ngày mới vào diễn đàn, vậy mà bây giờ sư phụ nhắc lại thì mới thấy rằng mình.. đã quên tuốt
Tức là cái gì để lâu quá không dùng thì có thể bị... chuột tha mất
Ẹc... Ẹc...
 
Upvote 0
NHDK đã viết:
Anh ơi, anh nói rõ hơn chút nữa "CLng" nhé! Em không hiểu rõ chỗ này!?

Nói vầy chưa rõ sao?
ndu đã viết:
Clng([B2].Value)để biến giá tri cell B2 thành biến Long thôi mà anh

VBA co thể đọc hiểu ngày tháng của cell bất kỳ set Control Panel là kí rì, nhưng khi xử lý, nó luôn xử lý kiểu mm/dd/yyyy. Nếu cell A1 là 20/01/2011 và gán thisday = A1.Value, thì VBA có thể sẽ xử lý giá trị thisday là 20/1/2011 = 20/11 = 1,81818 hoặc 20/2011 = 0,009945 (bài toán chia)
Do đó chuyển Date thành Long, là 1 con số, VBA không thể hiện khác kiểu so với giá trị thực.

Tương tự, VBA thích hành sự theo ý mình là US, nên nếu muốn thể hiện số #.###,00 trong hệ thống dấu phảy thập phân, khi dùng VBA vẫn phải dùng lệnh:

[A1].Numberformat = "#,###.00"
 
Lần chỉnh sửa cuối:
Upvote 0
Em đã xem các ví dụ và có làm 1 file tương tự thế này. Nhưng hiện tại em vẫn chưa biết các bẫy lỗi. Nếu em muốn ô C4 nhập vào mà không đúng mã hàng thì nó sẽ thông báo: "Bạn nhâp chưa đúng. Hãy nhập lại!" thì em phải sửa code này như thế nào?
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    On Error Resume Next
    If Target.Address = "$C$4" Then
        Range("A7:E65000").ClearContents
        With S1.Range(S1.[A1], S1.[A65535].End(3)).Resize(, 7)
            .AutoFilter 2, ">=" & CLng(Range("C2").Value), 1, "<=" & CLng(Range("C3").Value)
            .AutoFilter 3, Range("C4").Value
            '2 dong sau co the viet thanh mot?
            .Resize(, 1).Offset(1, 0).SpecialCells(12).Copy Range("A7")
            .Offset(1, 3).Resize(, 4).SpecialCells(12).Copy Range("B7")
            .AutoFilter
        End With
    End If
End Sub
 

File đính kèm

Upvote 0
Câu bẫy lỗi thêm vào như sau:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    On Error Resume Next
    If Target.Address = "$C$4" Then
        [COLOR=red]If S1.Range(S1.[c1], S1.[c65535].End(3)).Find(Target) = 0 Then _
        MsgBox "hong co ma nay cha noi oi!": Exit Sub[/COLOR]
        Range("A7:E65000").ClearContents
        With S1.Range(S1.[A1], S1.[A65535].End(3)).Resize(, 7)
            .AutoFilter 2, ">=" & CLng(Range("C2").Value), 1, "<=" & CLng(Range("C3").Value)
            .AutoFilter 3, Range("C4").Value
            .Resize(, 1).Offset(1, 0).SpecialCells(12).Copy Range("A7")
            .Offset(1, 3).Resize(, 4).SpecialCells(12).Copy Range("B7")
            .AutoFilter
        End With
    End If
End Sub
 
Upvote 0
Câu bẫy lỗi thêm vào như sau:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Target.Address = "$C$4" Then
[COLOR=red]If S1.Range(S1.[c1], S1.[c65535].End(3)).Find(Target) = 0 Then _
MsgBox "hong co ma nay cha noi oi!": Exit Sub[/COLOR]
Range("A7:E65000").ClearContents
With S1.Range(S1.[A1], S1.[A65535].End(3)).Resize(, 7)
.AutoFilter 2, ">=" & CLng(Range("C2").Value), 1, "<=" & CLng(Range("C3").Value)
.AutoFilter 3, Range("C4").Value
.Resize(, 1).Offset(1, 0).SpecialCells(12).Copy Range("A7")
.Offset(1, 3).Resize(, 4).SpecialCells(12).Copy Range("B7")
.AutoFilter
End With
End If
End Sub

Sư phụ ơi, 2 dòng này có thế viết gộp lại:
PHP:
.Resize(, 1).Offset(1, 0).SpecialCells(12).Copy Range("A7")
.Offset(1, 3).Resize(, 4).SpecialCells(12).Copy Range("B7")
được không ah?
 
Upvote 0
Sư phụ ơi, 2 dòng này có thế viết gộp lại:
PHP:
.Resize(, 1).Offset(1, 0).SpecialCells(12).Copy Range("A7")
.Offset(1, 3).Resize(, 4).SpecialCells(12).Copy Range("B7")
được không ah?
Được thì vẫn được, dùng Union, nhưng không đáng công.

PHP:
Union(.Resize(, 1).Offset(1, 0).SpecialCells(12), .Offset(1, 3).Resize(, 4).SpecialCells(12)).Copy Range("A7")
 
Upvote 0
Được thì vẫn được, dùng Union, nhưng không đáng công.

PHP:
Union(.Resize(, 1).Offset(1, 0).SpecialCells(12), .Offset(1, 3).Resize(, 4).SpecialCells(12)).Copy Range("A7")
Hổng biết đặt thằng SpecialCells(12) ra ngoài làm "thừa số chung" được không ta???
 
Upvote 0
Upvote 0
thử phát biết liền:
PHP:
Union(.Resize(, 1).Offset(1, 0), .Offset(1, 3).Resize(, 4)).SpecialCells(12).Copy Range("A7")
Kết quả: OK
Thấy tác giả topic này tiếp thu tốt và chắc chắn là VBA cũng năm khá. Vậy sao kg hướng theo array, thú thật dùng for và array có khi còn dễ hiểu hơn.
Vậy mà 2 Thầy PTM và NDU cùng nhau làm theo hướng AutoFilter.
Vậy nhờ 2 Thầy PTM và NDU giúp em vấn đề em đang bí với. Chắc chắn là PTM và NDU sẽ có hướng.
Link sau. ConvertExToFox
http://www.giaiphapexcel.com/forum/showthread.php?44987-Đưa-dữ-liệu-từ-excel-vào-fox!
Cám ơn nhé.
Hậu tạ 2 Thầy 1 cây Con mèo.
 
Lần chỉnh sửa cuối:
Upvote 0
Thấy tác giả topic này tiếp thu tốt và chắc chắn là VBA cũng năm khá. Vậy sao kg hướng theo array, thú thật dùng for và array có khi còn dễ hiểu hơn.
Vậy mà 2 Thầy PTM và NDU cùng nhau làm theo hướng AutoFilter.
Vậy nhờ 2 Thầy PTM và NDU giúp em vấn đề em đang bí với. Chắc chắn là PTM và NDU sẽ có hướng.
Link sau. ConvertExToFox
http://www.giaiphapexcel.com/forum/showthread.php?44987-%C4%90%C6%B0a-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%AB-excel-v%C3%A0o-fox!
Cám ơn nhé.
Hậu tạ 2 Thầy 1 cây Con mèo.
Chỉ là tham khảo thôi mà ---> Ít ra với AutoFilter thì ta còn làm bằng tay được (chỉ viết lại cho ra vẽ tự động thôi)
Còn cái thăng ConvertExToFox thì... tiếc quá, có biết gì về "con cáo" đâu mà giúp (mất cha nó con mèo rồi)
 
Upvote 0
Chỉ là tham khảo thôi mà ---> Ít ra với AutoFilter thì ta còn làm bằng tay được (chỉ viết lại cho ra vẽ tự động thôi)
Còn cái thăng ConvertExToFox thì... tiếc quá, có biết gì về "con cáo" đâu mà giúp (mất cha nó con mèo rồi)
NDU chuyên nghiên cứu mà, nghiên cứu giúp mình với, chớ mình có biết gì về con cáo đâu, chỉ biết con cầy thôi. Vì có dùng PM bằng Fox mà phần nhập liệu mất công quá nên muốn tham gia để có thể nhập = Ex, thời gian dư để làm vài ve.
 
Upvote 0
Thấy tác giả topic này tiếp thu tốt và chắc chắn là VBA cũng năm khá. Vậy sao kg hướng theo array, thú thật dùng for và array có khi còn dễ hiểu hơn.
Vậy mà 2 Thầy PTM và NDU cùng nhau làm theo hướng AutoFilter.
Vậy nhờ 2 Thầy PTM và NDU giúp em vấn đề em đang bí với. Chắc chắn là PTM và NDU sẽ có hướng.
Link sau. ConvertExToFox
http://www.giaiphapexcel.com/forum/showthread.php?44987-Đưa-dữ-liệu-từ-excel-vào-fox!
Cám ơn nhé.
Hậu tạ 2 Thầy 1 cây Con mèo.

Thực ra về mảng em vẫn kém lắm! Em biết mảng rất hay với dữ liệu nhiều! Em đang tìm hiểu. Nhở các AC chỉ thêm nữa.
 
Upvote 0
Thực ra về mảng em vẫn kém lắm! Em biết mảng rất hay với dữ liệu nhiều! Em đang tìm hiểu. Nhở các AC chỉ thêm nữa.
Mảng cũng như set range, range sao thì mảng vậy.
VD:
Dim MyRng as range
Set MyRng=Range("A1:B10")
'Gồm 10 dòng và 2 cột'
For iR =1 to 10
For iC=1 to 2
'iF MyRng(iR,iC) ="..." then ...'
Next iC
Next iR

Dim MyArr
MyArr=Range("A1:B10")
'Gồm 10 dòng và 2 cột'
For iR =1 to 10
For iC=1 to 2
'iF MyArr(iR,iC) ="..." then ...'
Next iC
Next iR
Cố gắng, dùng cơ bản vòng lặp sẽ dễ triển khai hơn, nó giống như hiểu sao làm vậy, duyệt qua từng dòng, nếu dòng nào có cột nào thỏa yêu cầu thì lấy.
Range thì phải gán kết quả vào Sh khi thỏa yêu cầu.
Mảng thì lấy kết quả xong mới gán vào sh.
 
Upvote 0

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

Back
Top Bottom