Cách lọc những số có cùng dãy số. (1 người xem)

  • Thread starter Thread starter ntvanha
  • Ngày gửi Ngày gửi
Liên hệ QC

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

ntvanha

Thành viên mới
Tham gia
10/9/08
Bài viết
3
Được thích
0
Mình có dãy số liệu này - sếp theo cột:
0903124562
0918639024
0975123456
0902456789
0901123456
Mình cần lọc những con số có đầu là 090 thì làm cách nào? Cám ơn nhiều.

VH
 
Bạn dùng Custom AutoFilter:
000-197.png
 
Chia sẽ với bạn thêm 1 cách nữa nè!
Thân.
 

File đính kèm

Bạn muốn dùng công thức thì thế này. Lọc theo 09, 090, 091, 0903, 09135... đều được.
 

File đính kèm

Thảo luận về tốc độ, thuật toán ... giữa VBA và công cụ có sẵn của Excel

Chia sẽ với bạn thêm 1 cách nữa nè!
Thân.
Cách này không ổn rồi ---> Bạn mà For thế với vài ngàn dòng chắc "đuối" luôn!
Tôi nghĩ chỉ có AutoFilter hoặc Advanced Filter mới là giãi pháp tối ưu nhất
 
Có thể dùng C formatting được không các bạn

"Cách lọc những số có cùng dãy số."

Vì tiêu đề đâu có iêu cầu lọc ra đâu! Lọc để đó mà!
Lúc đó chỉ áp công thức 1 lần trong suốt quá trình tồn tại dữ liệu luôn;

Nhanh hay chậm các bác cho biết í kiến với!
 
Mình cũng không dám chắc là AutoFilter và Advanced Filter có phải là nhanh nhất hay không, nhưng quan điểm của mình khi giãi quyết 1 bài toán là:
Ưu tiên 1: Tốc độ
Ưu tiên 2: Code đơn giãn nhất, ngắn gọn nhất (thông thường giãi pháp càng đơn giãn càng hiệu quả)
Ưu tiên 3: Thẩm mỹ

Không biết các cao thủ khác thì sao?
 
theo mình thêm một cột mữa
=left(A1;3)
sau đó dùng lọc tự động sẽ chọn ra các số có số đầu là 090 là gọn nhất và đơn giản nhất ai làm cũng xong
 
theo mình thêm một cột mữa
=left(A1;3)
sau đó dùng lọc tự động sẽ chọn ra các số có số đầu là 090 là gọn nhất và đơn giản nhất ai làm cũng xong
Gọn nhất? Đơn giản nhất?

Làm kiểu này thì thôi dùng luôn cái Custom AutoFilter tôi đã nói ở bài trên, không nhanh hơn à? Trong Custom AutoFilter đã có sẵn chức năng "Begin with...", tại sao không dùng, mà lại lập thêm một cột phụ, rồi dùng hàm trích ra cái "Begin with" (bắt đầu với...), rồi lại lôi AutoFilter ra?

Bạn xem lại giữa cách xài cái có sẵn, và cách phải tạo ra rồi lại dùng cái có sẵn để xài, cái nào gọn hơn, cái nào đơn giản hơn?
 
Vậy sao không đưa AutoFilter vào trong VBA luôn đi. Làm 1 lần cho nó tiện.
Thân.
 

File đính kèm

Vậy sao không đưa AutoFilter vào trong VBA luôn đi. Làm 1 lần cho nó tiện.
Thân.
Cũng hay!
Tôi thì làm vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.ScreenUpdating = False
  If Target.Address = "$F$3" Then
    Target.CurrentRegion.Offset(1).Clear
    With Range("A3").CurrentRegion
      .AutoFilter 1, Target & "*", , , False
      .Offset(1).Copy: Target(2).PasteSpecial
    End With
    ActiveSheet.ShowAllData: Target.Select
  End If
End Sub
Khỏi khai báo biến nào cả
 

File đính kèm

Ah... hồi nãy vội nên chưa xem kỹ code của bạn Tuyetbay!
Code của bạn là:
PHP:
Sub Chay()
On Error Resume Next
Dim cel As Range, dulieu As String, vung As Range, k As String
dulieu = Chr(61) & Application.InputBox("Nhap gia tri can quet:", Type:=2) & "*"
Set vung = Application.InputBox("Chon vung quet: " & Chr(10) & "Nho quet luon dong tieu de nua nha!", Type:=8)
Set cel = Application.InputBox("Chon vi tri Paste: ", Type:=8)
Application.ScreenUpdating = False
    vung.AutoFilter Field:=1, Criteria1:=dulieu
k = Left(vung.Address, InStr(1, vung.Address, ":") - 1)
    Range(Range(k), Range(k).End(xlDown)).Copy
    cel.PasteSpecial xlPasteAll
    Selection.AutoFilter
Application.ScreenUpdating = True
End Sub
Mạn phép nói theo suy nghĩ của riêng tôi: Code sao nó dài và lòng vòng quá
Nếu tôi làm Sub này thì sẽ là vầy:
PHP:
Sub Chay()
  Dim Des As Range
  On Error GoTo Thoat
  With Application.InputBox("Chon 1 cell bat ky trong vung du lieu", Type:=8).CurrentRegion
    Set Des = Application.InputBox("Chon cell can paste", Type:=8)
    .AutoFilter 1, InputBox("Nhap vao dau so DT can tim") & "*"
    .Copy: Des.PasteSpecial
    .AutoFilter
  End With
Thoat: Exit Sub
End Sub
Chỉ là suy nghĩ của cá nhân, có gì không phải bạn bỏ qua cho!
Nhân tiên nhờ các cao thủ khác giúp cho 1 chuyện: Làm cách nào có thể bỏ luôn biến Des trong code trên?
Tôi thử dùng With... End With... nhưng nó cứ xóa mất Clipboard khi vừa copy dử liệu xong
 

File đính kèm

Web KT

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

Back
Top Bottom