Cách tìm kiếm trong dãy số khác nhau?

  • Thread starter thuylienevn
  • Ngày gửi
T

thuylienevn

Guest
8/8/12
17
1
3
_
tôi có các mã hàng không đồng nhất như sau:

A00019 | dạng chuỗi - có số 19 cuối cùng
11443 | dạng số
987YU | dạng chuỗi
C11392 | dạng chuỗi
19 | dạng số - có số 19 cuối cùng
28 | dạng số
W32199 | dạng chuỗi

giả sử tôi muốn tìm 19 có trong 02 ký tự cuối cùng hay không tôi phải dùng hàm như thế nào? - trong dữ liệu trên thì có 02 kết quả là 19
 
Khóa học Quản trị dòng tiền
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
611
104
43
68
HCM city
Ðề: Cách tìm kiếm trong dãy số khác nhau bằng hàm tự tạo, nha

Mã:
Option Explicit
Function TimSoCuoi(Rng As Range, Num As Variant)
 Dim Cls As Range
 Num = CStr(Num)
 For Each Cls In Rng
    If Right(CStr(Cls.Value), 2) = Num Then
        TimSoCuoi = TimSoCuoi & Cls.Row & "-"
    End If
 Next Cls
 If Len(TimSoCuoi) > 1 Then TimSoCuoi = Left(TimSoCuoi, Len(TimSoCuoi) - 1)
End Function

/-(àm sẽ cho biết các dòng có chứa dữ liệu kiểu số trong biến Num được đưa vào hàm

Ví dụ với cù fáp =TimSoCuoi(A1:A13, "19") => kết quả: 2-7-8-10-11
Cũng sẽ nhận được kết quả này khi ta xài cú fáp =TimSoCuoi(A2:A13,19)


1 |MaHang|
2 |A00019|
3 |11443|
4 |9875a9|
5 |c1987|
6 |GPE.COM|
7 |19x19|
8 |1919|
9 |w199|
10 |F19|
11 |q12319|
12 |144\
 
T

thuylienevn

Guest
8/8/12
17
1
3
_
Ðề: Cách tìm kiếm trong dãy số khác nhau?

SA_DQ: cám ơn bạn rất nhiều, đây đúng là hàm tôi cần đến. Tuy nhiên hàm bạn tạo tôi thấy chưa chính xác trong trường hợp tìm số cuối là 0x hoặc x - như: 05/5, 09/9

hơn nữa bạn có thể sửa lại là tìm nhiều số trong 1 lần không?
 
Sửa lần cuối:
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
611
104
43
68
HCM city
Ðề: Cách tìm kiếm trong dãy số khác nhau?

(2)Tuy nhiên hàm bạn tạo tôi thấy chưa chính xác trong trường hợp tìm số cuối là 0x hoặc x - như: 05/5, 09/9

(1) Hơn nữa bạn có thể sửa lại là tìm nhiều số trong 1 lần không?

(1) (/ì bạn không nói hết đề bài ngay từ đầu, nên hàm chỉ tìm 1 đối số thôi;

Giờ bạn muốn sao trong 2 trường hợp sau:

(A) Đưa hết các dữ liệu cần tìm vô 1 vùng các ô & trong hàm sẽ duyệt lần lượt từ tham biến trong từng ô

(B )Đưa vô từng tham biến trong hàm để xử;

(2) Bạn sẻ thấy hàm mới tìm dữ liệu có độ dài là 2;
Muốn tìm các dữ liệu khác ta thay con số 2 trong hàm bằng hàm Len(Num)

Thân chào!
 
QDuc

QDuc

Cao cấp
3/6/06
254
18
18
Biển khơi
Ðề: Rất là tầm bậy "Tôi có các mã hàng không đồng nhất sau. . "

/-)ã là mã hàng, thông thường mọi CSDL điều có độ dài mã là như nhau; Mà trong nó thường là chuỗi (chứ không nên là chuỗi số)
Trong đó thường chia nhóm cố định để tiện trong việc quản lý hàng;

Mình lấy ví dụ: 2(3) chữ cái đầu là mã fân loại, như
VFF:= Văn fòng fẩm
TBD:= Thiết bị điện
DNh:= Đồ nhựa
VBi:= Vòng bi/ bạc đạn,
. . . .
2(3) chữ cái tiếp là mã hàng; 3 chữ nữa là ký hiệu nước S/x (USA, VIE, USS,. . . )
. . . . .

Còn của bạn, mã hàng có vẻ tùy tiện quá; Thật ra như vậy bạn chỉ tự làm khó cho mình thôi!
 
T

thuylienevn

Guest
8/8/12
17
1
3
_
Ðề: Cách tìm kiếm trong dãy số khác nhau?

QDuc: nếu như bạn nói thì quá tốt, vì csdl đã được chuẩn hoá. Còn đây tôi tổng hợp kết quả của 6 bộ phận khác nhau mà 6 ÔNG này lại NGHỊCH nhau vì ai cũng muốn làm CHA. Nên csdl khác nhau về Định dạng, Chiều dài, Kiểu dl, ....

SA_DQ: e không hiểu từ chuyên môn anh nói
Nhưng e thấy hàm a làm và e sử dụng tốt rồi. Tuy nhiên hàm cho kết quả chưa chính xác khi tìm nội dung cụ thể như sau:
Tìm 05, tìm 5 - vì hàm anh tạo không cho nhập 05. Chi tiết hơn:

1 MaHang  
2 A00015  
3 11445  
4 9875a9  
5 c1987  
6 GPE.COM  
7 19x19  
8 1905  
9 w199  
10 F19  
11 q1230

=TimSoCuoi(A1:A13, 5) => kết quả: 8
=TimSoCuoi(A1:A13, 05)=> kết quả: 8. Hiện hàm anh tạo chưa cho nhập số 0 ở trước
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
611
104
43
68
HCM city
Ðề: Tạm xài đỡ dạng chuỗi, khi gặp 05, 06,. . .

/(/ội dung hàm được sửa lại xíu như sau:
Mã:
Option Explicit
Function TimSoCuoi(Rng As Range, Num As Variant)
 Dim Cls As Range
 Num = CStr(Num)
 For Each Cls In Rng
    If Right(CStr(Cls.Value), Len(Num)) = Num Then  [COLOR="#FF0000"][B]  '<=|'[/B][/COLOR]
        TimSoCuoi = TimSoCuoi & Cls.Row & "-"
    End If
 Next Cls
 If Len(TimSoCuoi) > 1 Then TimSoCuoi = Left(TimSoCuoi, Len(TimSoCuoi) - 1)
End Function

Cú fáp lúc đó sẽ là:

Mã:
   =TimSoCuoi(A1:A23,"05")       - Để tìm số 05 cuối
   =TimSoCuoi(A1:A23,905)       - Để tìm số 905 cuối
   =TimSoCuoi(A1:A23,"005")     - Để tìm số 005 cuối
 
T

thuylienevn

Guest
8/8/12
17
1
3
_
Ðề: Cách tìm kiếm trong dãy số khác nhau?

SA_DQ: đã thử hàm mới của anh nhưng thấy dùng 2 hàm bất tiện
nên e tách 2 ký tự cuối cùng qua dạng số và dùng 1 hàm của a đã tạo.

CÁM ƠN anh nhiều.
 
  • Like
Reactions: 1 person

Xem nhiều