Lọc dữ liệu không theo qui tắc nào

Liên hệ QC

hocham

Thành viên chính thức
Tham gia
29/6/09
Bài viết
59
Được thích
8
ở câu hỏi trước em nhờ các anh chi giúp em gỡ rối vấn đề là lấy số cont và số seal ra hai cột khác nhau(số cont 4chữ cái và 7 số,còn số seal thì lộn xộn).
Nay em lại gặp phải một rắc rối nữa là lấy tên tàu và số chuyến ra hai cột dựa theo đơn hàng.
nhưng tên tàu và số chuyến lộn xộn không theo qui tắc nào(lúc tên tàu có 10,12,ký tự hay>20ký tự...,và số chuyến cũng vậy)
em goi file kem theo+-+-+-+
 

File đính kèm

  • Book1.xls
    14 KB · Đọc: 114
ở câu hỏi trước em nhờ các anh chi giúp em gỡ rối vấn đề là lấy số cont và số seal ra hai cột khác nhau(số cont 4chữ cái và 7 số,còn số seal thì lộn xộn).
Nay em lại gặp phải một rắc rối nữa là lấy tên tàu và số chuyến ra hai cột dựa theo đơn hàng.
nhưng tên tàu và số chuyến lộn xộn không theo qui tắc nào(lúc tên tàu có 10,12,ký tự hay>20ký tự...,và số chuyến cũng vậy)
em goi file kem theo+-+-+-+

Tôi bó tay với bạn luôn, bạn không biết vận dụng hàm của các ANH CHỊ đã giúp bạn trong bài trước, bạn phải động não lên chứ, tự mình nghiền ngẫm sẽ tốt hơn cho bạn đó!

Tôi xin vận dụng công thức của anh hoangdanh282vn để trả lời cho bạn nè, chán bạn thiệt đó!
 

File đính kèm

  • TenTau.xls
    17 KB · Đọc: 154
ở câu hỏi trước em nhờ các anh chi giúp em gỡ rối vấn đề là lấy số cont và số seal ra hai cột khác nhau(số cont 4chữ cái và 7 số,còn số seal thì lộn xộn).
Nay em lại gặp phải một rắc rối nữa là lấy tên tàu và số chuyến ra hai cột dựa theo đơn hàng.
nhưng tên tàu và số chuyến lộn xộn không theo qui tắc nào(lúc tên tàu có 10,12,ký tự hay>20ký tự...,và số chuyến cũng vậy)
em goi file kem theo+-+-+-+
Sao lại bảo là không có quy tắc.
Quy tắc chính là dấu phân cách giữa tên tàu và số chuyến là dấu "/".
Công thức đây
Tên tàu =LEFT(B3,FIND("/",B3)-1)
Số chuyến = =RIGHT(B3,LEN(B3)-FIND("/",B3))

Xin nói thêm là bạn phải chịu khó suy nghĩ tí chứ. Cũng chính công thức này tôi đã gửi ở phần sau câu hỏi về số cont và số seal của bạn đấy.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sao lại bảo là không có quy tắc.
Quy tắc chính là dấu phân cách giữa tên tàu và số chuyến là dấu "/".
Công thức đây
Tên tàu =LEFT(B3,FIND("/",B3)-1)
Số chuyến = =RIGHT(B3,LEN(B3)-FIND("/",B3))
Công thức không có vấn đề, có điều là chưa đúng yêu cầu đâu ---> Vì đầu tiên phải tìm dử liệu dựa vào cell D1, sau đó mới tách chuổi
 
Một bài toán khó chịu.

Trong File dữ liệu dưới đây, mình muốn căn cứ vào Số tham chiếu, lọc từ 2 dòng ở mục Dữ liệu đầu vào những số trùng với số trong Số tham chiếu kết quả như ở ô Kết quả, mong các bạn giúp đỡ. Cám ơn các bạn nhiều.
 

File đính kèm

  • Du lieu mau 8.xls
    15 KB · Đọc: 27
Lần chỉnh sửa cuối:
Lọc mã theo từng vùng dữ liệu?

Anh chị ơi!trong file anh Minhthien giải ở trên làm thế nào để lọc mã đơn hàng vậy, có thể hướng dẫn em cài công thức được không ạh?
Em xin chân thành cám ơn.
 
Anh chị ơi!trong file anh Minhthien giải ở trên làm thế nào để lọc mã đơn hàng vậy, có thể hướng dẫn em cài công thức được không ạh?
Em xin chân thành cám ơn.
Mã đơn hàng ở trên tác giả đã cho tại cột D1 rồi mà. Nếu Bạn muốn tìm mã đơn hàng nữa thì cũng được Bạn dùng hàm INDEX kết hợp với MATCH nhé. Tại ô C3.
INDEX($A$2:$A$9;MATCH(D3&"*";$B$2:$B$9;0))
 
dạ em đang làm một bảng tính với nhiều bảng mỗi bảng đại diện một loại sản phẩm cùng nằm trên 1 sheet khi làm em muốn lọc từng bảng tính, nên em mới hỏi công thức ở trên, nhưng em áp dụng công thức của anh Minh Cường nhưng không tùy chọn được, làm sao để xuất hiện dấu tùy chọn như ở ô D1 như trên
 
dạ em đang làm một bảng tính với nhiều bảng mỗi bảng đại diện một loại sản phẩm cùng nằm trên 1 sheet khi làm em muốn lọc từng bảng tính, nên em mới hỏi công thức ở trên, nhưng em áp dụng công thức của anh Minh Cường nhưng không tùy chọn được, làm sao để xuất hiện dấu tùy chọn như ở ô D1 như trên
Bạn chọn ô D1 và vào Data validation để xem nhé!
 
Trong File dữ liệu dưới đây, mình muốn căn cứ vào Số tham chiếu, lọc từ 2 dòng ở mục Dữ liệu đầu vào những số trùng với số trong Số tham chiếu kết quả như ở ô Kết quả, mong các bạn giúp đỡ. Cám ơn các bạn nhiều.

Có ai biết cách giải bài toán này thì giúp mình với.
 

File đính kèm

  • Du lieu mau 8.xls
    15 KB · Đọc: 12
Viết hẵn cho bạn hàm tự tạo đây

Trong File dữ liệu dưới đây, mình muốn căn cứ vào Số tham chiếu, lọc từ 2 dòng ở mục Dữ liệu đầu vào những số trùng với số trong Số tham chiếu kết quả như ở ô Kết quả, mong các bạn giúp đỡ. Cám ơn các bạn nhiều.
PHP:
Option Explicit
Function SoConLai(ThamChieu As Range, DuLieu As Range)
 Dim StrC As String, Chu As String:             Const AC As String = "@"
 Dim Jj As Byte, VTr As Byte, Ww As Byte, Clls As Range

 StrC = CStr(ThamChieu):            SoConLai = StrC
 For Each Clls In DuLieu
   Chu = Chu & CStr(Clls.Value)
 Next Clls
 For Jj = 1 To Len(StrC)
   For Ww = 1 To Len(Chu)
      If Mid(StrC, Jj, 1) = Mid(Chu, Ww, 1) Then _
         SoConLai = Left(SoConLai, Jj - 1) & AC & Mid(SoConLai, Jj + 1)
   Next Ww
 Next Jj
 SoConLai = CLng(Replace(SoConLai, AC, ""))
End Function

Bạn cần chú í hai điều:
(1) Không nên chen ngang vô topic của người khác;
(2) Sau khi chép nội dung hàm vô CS VBA, bạn nhập vô ô D4 cú fáp sau: =SoConLai(C2,C4:C5)
 
Cám ơn HYen17 đã giúp mình. Giờ có bài tập nữa tương tự bài vừa rồi nhưng ở cấp độ khó hơn, ở bài tập này mình muốn dựa vào Dãy số tham chiếu để tìm ra những số không xuất hiện ở Dãy số đầu vào (xem file đính kèm). HYen17 xem giúp mình với nhé, và cả các bạn GPE nữa. Cám ơn các bạn nhiều.
 

File đính kèm

  • Tm so khong xuat hien trong Day so.xls
    13.5 KB · Đọc: 12
Hàm của bạn đây

PHP:
Option Explicit
Function SoConLai(ThamChieu As String, DauVao As String) As String
 Dim lDV As Integer, jJ As Integer, VTr As Integer
 Const GPE As String = "@@@"
 
 ThamChieu = ThamChieu & " "
 SoConLai = ThamChieu
 lDV = Len(DauVao):          DauVao = Trim(DauVao) & " " & GPE:
 For jJ = 1 To lDV Step 3
   VTr = InStr(ThamChieu, Mid(DauVao, jJ, 3))
   If VTr > 0 Then _
      SoConLai = Left(SoConLai, VTr - 1) & GPE & Mid(SoConLai, VTr + 3)
 Next jJ
 SoConLai = Replace(SoConLai, GPE, "")
End Function

Tại [A19] bạn thử nhập cú fáp sau: =SoConLai(A$3,A8)
 
PHP:
Option Explicit
Function SoConLai(ThamChieu As String, DauVao As String) As String
 Dim lDV As Integer, jJ As Integer, VTr As Integer
 Const GPE As String = "@@@"
 
 ThamChieu = ThamChieu & " "
 SoConLai = ThamChieu
 lDV = Len(DauVao):          DauVao = Trim(DauVao) & " " & GPE:
 For jJ = 1 To lDV Step 3
   VTr = InStr(ThamChieu, Mid(DauVao, jJ, 3))
   If VTr > 0 Then _
      SoConLai = Left(SoConLai, VTr - 1) & GPE & Mid(SoConLai, VTr + 3)
 Next jJ
 SoConLai = Replace(SoConLai, GPE, "")
End Function
Tại [A19] bạn thử nhập cú fáp sau: =SoConLai(A$3,A8)

Sao mình nhập công thức vào nhưng không ra được kết quả?
 

File đính kèm

  • Tm so khong xuat hien trong Day so.xls
    14 KB · Đọc: 9
Sao mình nhập công thức vào nhưng không ra được kết quả?
Vì trong ô A9 của bạn xuất hiện 2 khoảng trắng giữa số 26 và số 37.

Bạn sửa code lại như sau chắc chắn sẽ được.
PHP:
Function SoConLai(ThamChieu As String, DauVao As String) As String
 Dim lDV As Integer, jJ As Integer, VTr As Integer
 Const GPE As String = "@@@"
 
 ThamChieu = ThamChieu & " "
 SoConLai = ThamChieu
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Đoạn code mới thêm vào
 If InStr(DauVao, "  ") > 0 Then
 Do
    DauVao = Replace(DauVao, "  ", " ")
 Loop While InStr(DauVao, "  ") > 0
 End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 lDV = Len(DauVao):          DauVao = Trim(DauVao) & " " & GPE:
 For jJ = 1 To lDV Step 3
   VTr = InStr(ThamChieu, Mid(DauVao, jJ, 3))
   If VTr > 0 Then _
      SoConLai = Left(SoConLai, VTr - 1) & GPE & Mid(SoConLai, VTr + 3)
 Next jJ
 SoConLai = Replace(SoConLai, GPE, "")
End Function
 
Hai công thức cho kết quả khác nhau!

Chào bạn các bạn, trong file "soconlai2&3", cùng một yêu cầu mình sử dụng 2 công thức của bạn SA_DQ (soconlai3) và bạn tungson_mrcc (soconlai2) thì ra kết quả như sau:
1. Công thức của bạn tungson_mrcc (soconlai2) cho kết quả đúng nhưng vẫn còn những ký tự @@
2. Công thức của bạn SA_DQ (soconlai3) cho kết quả gần đúng và cũng có những ký tự @@
Vậy cho mình hỏi tại sao kết quả của hai công thức lại khác nhau, và có cách nào bỏ được những ký tự @@ không?
Cám ơn các bạn.
Dưới đây là PHP code mà các bạn SA_DQ và tungson_mrcc đã giúp đỡ mình (mình thêm số 2 và số 3 vào tên công thức của 2 bạn để phân biệt):
PHP Code:
Option Explicit[FONT=&quot]
[/FONT]
Function SoConLai3(ThamChieu As String, DauVao As String) As String[FONT=&quot]
Dim lDV [/FONT]
As Integer, jJ As Integer, VTr As Integer[FONT=&quot]
[/FONT]
Const GPE As String = "@@@"[FONT=&quot]

[/FONT]
ThamChieu = ThamChieu & " "[FONT=&quot]
[/FONT]
SoConLai3 = ThamChieu[FONT=&quot]
lDV [/FONT]
= Len(DauVao): DauVao = Trim(DauVao) & " " & GPE:[FONT=&quot]
For [/FONT]
jJ = 1 To lDV Step 3[FONT=&quot]
VTr [/FONT]
= InStr(ThamChieu, Mid(DauVao, jJ, 3))[FONT=&quot]
If [/FONT]
VTr > 0 Then _[FONT=&quot]
SoConLai3 [/FONT]
= Left(SoConLai, VTr - 1) & GPE & Mid(SoConLai3, VTr + 3)[FONT=&quot]
[/FONT]
Next jJ[FONT=&quot]
SoConLai3 [/FONT]
= Replace(SoConLai3, GPE, "")[FONT=&quot]
[/FONT]
End Function



PHP Code:
Function SoConLai2(ThamChieu As String, DauVao As String) As String[FONT=&quot]
Dim lDV [/FONT]
As Integer, jJ As Integer, VTr As Integer[FONT=&quot]
[/FONT]
Const GPE As String = "@@@"[FONT=&quot]

[/FONT]
ThamChieu = ThamChieu & " "[FONT=&quot]
[/FONT]
SoConLai2 = ThamChieu[FONT=&quot]
[/FONT]
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''[FONT=&quot]
'[/FONT]
Đoạn code mới thêm vào[FONT=&quot]
[/FONT]
If InStr(DauVao, " ") > 0 Then[FONT=&quot]
[/FONT]
Do[FONT=&quot]
[/FONT]
DauVao = Replace(DauVao, " ", " ")[FONT=&quot]
[/FONT]
Loop While InStr(DauVao, " ") > 0[FONT=&quot]
End [/FONT]
If[FONT=&quot]
[/FONT]
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''[FONT=&quot]
[/FONT]
lDV = Len(DauVao): DauVao = Trim(DauVao) & " " & GPE:[FONT=&quot]
For [/FONT]
jJ = 1 To lDV Step 3[FONT=&quot]
VTr [/FONT]
= InStr(ThamChieu, Mid(DauVao, jJ, 3))[FONT=&quot]
If [/FONT]
VTr > 0 Then _[FONT=&quot]
SoConLai2 [/FONT]
= Left(SoConLai2, VTr - 1) & GPE & Mid(SoConLai2, VTr + 3)[FONT=&quot]
[/FONT]
Next jJ[FONT=&quot]
SoConLai2 [/FONT]
= Replace(SoConLai2, GPE, "")[FONT=&quot]
[/FONT]
End Function

[FONT=&quot]http://www.giaiphapexcel.com/forum/member.php?u=8759[/FONT]
 

File đính kèm

  • Soconlai2&3.xls
    15.5 KB · Đọc: 4
01 02 03 05 06 07 12 13 14 15 16 17 18 19 23 24 29 35 38 39 47 58 59 69 79 BBB 05 12 13 19 24 34 35 45
49 69




Số liệu đầu vào của bạn lại có mấy chữ cái BBB tổ chảng thế kia thì hàm nào mà chịu nổi

Thật hết í luôn!

Tại B5 cũng vậy: 03 04 06 08 09 18 19 34 37 38 46 49 67 68 78 79 89 BBB 07 12 14 15 16 17 19 23 25 27 28 36 37 59
 
01 02 03 05 06 07 12 13 14 15 16 17 18 19 23 24 29 35 38 39 47 58 59 69 79 BBB 05 12 13 19 24 34 35 45
49 69




Số liệu đầu vào của bạn lại có mấy chữ cái BBB tổ chảng thế kia thì hàm nào mà chịu nổi

Thật hết í luôn!

Tại B5 cũng vậy: 03 04 06 08 09 18 19 34 37 38 46 49 67 68 78 79 89 BBB 07 12 14 15 16 17 19 23 25 27 28 36 37 59

Cám ơn bạn đã chỉ ra lỗi giúp mình. Đúng như bạn nói, khi bỏ mấy chữ BBB đi thì cả 2 công thức đều cho kết quả đúng. Xin lỗi bạn SA_DQ và bạn tungson_mrcc, vì sự ngu muội của mình mà đã trách nhầm 2 bạn. Rất mong tiếp tục nhận được sự giúp đỡ của các bạn.
 
Gửi bạn CongThanh6868,
Nếu bạn không kiểm soát được dữ liệu đầu vào thì khó mà xử lý dữ liệu đúng theo yêu cầu của bạn được.
Tất nhiên là đôi khi người dùng gõ nhầm trên bàn phím, nhưng phải biết ktra nội dung đã nhập vào chứ.
Cái này hồi xưa đi học gọi là ktra lỗi chính tả đấy mà.
Dẫu sao cũng cám ơn bạn đã nêu ra một vấn đề rất lý thù.
Trân trọng.
 
Cám ơn bạn đã chỉ ra lỗi giúp mình. Đúng như bạn nói, khi bỏ mấy chữ BBB đi thì cả 2 công thức đều cho kết quả đúng. Mình đã trách nhầm 2 bạn. Rất mong tiếp tục nhận được sự giúp đỡ của các bạn.

Nếu tác giả topic cần, ta có thể bổ sung vào cácv hàm trẹn đoạn code kiểm tra dữ liệu luôn thể;

(*) Kiểm theo độ dài của chuỗi;
(*) Kiểm theo nhóm 3 ký số
 
Web KT
Back
Top Bottom