Hỏi cách tách mã vật tư

Liên hệ QC

fastdeath

Thành viên chính thức
Tham gia
13/6/09
Bài viết
63
Được thích
8
Tôi có những mã vật tư như file đính kèm. Tại cột A là những mã chưa được tách. Tại cột B tôi đã tách những mã vật tư có ở cột A, cứ 5 ký tự của VT thì đc chèn vào dấu "-". Tại cột C tôi muốn dùng công thức để tách theo quy luật cứ 5 ký tự thì được chèn dấu "-" như cột B. Mong mọi người chỉ giúp tôi phải sử dụng công thức gì. Cảm ơn rất nhiều.
 

File đính kèm

Tôi có những mã vật tư như file đính kèm. Tại cột A là những mã chưa được tách. Tại cột B tôi đã tách những mã vật tư có ở cột A, cứ 5 ký tự của VT thì đc chèn vào dấu "-". Tại cột C tôi muốn dùng công thức để tách theo quy luật cứ 5 ký tự thì được chèn dấu "-" như cột B. Mong mọi người chỉ giúp tôi phải sử dụng công thức gì. Cảm ơn rất nhiều.
Bạn cho hỏi: Mã VT của bạn dài tối đa bao nhiêu ký tự?
Với lại bạn xem lại dòng 9, tôi thấy nó sao sao ấy! Và còn mấy dòng nữa cũng hơi kỳ kỳ
 
Lần chỉnh sửa cuối:
Mã VT tôi đang quản lý dài tối đa 12 ký tự. Rất mong anh chỉ giúp cho tôi. Cảm ơn anh nhiều.
 
Mã VT tôi đang quản lý dài tối đa 12 ký tự. Rất mong anh chỉ giúp cho tôi. Cảm ơn anh nhiều.
Xem lại dòng 9... Xem lại dòng 9...
Cột A = 043716F34H007
Cột C = 04371-6F34H-01
Số 01 này ở đâu ra?
Tốt nhất kiểm tra kỹ lại 1 lần toàn bộ dử liệu dùm cái rồi hẳn nói tiếp! (cột A và C)
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn bác domfoodwear nhiều. Nếu như mã VT dài tới 13 ký tự tôi chỉ việc thay 12 trong công thức của anh thành 13 là đc?
 
Cảm ơn bác domfoodwear nhiều. Nếu như mã VT dài tới 13 ký tự tôi chỉ việc thay 12 trong công thức của anh thành 13 là đc?
Không phải vậy đâu bạn.
Số 12 ở đây là đếm trong 1 chuổi từ trái qua đến kí tự thứ 12 thì là chuổi mới Ví dụ như bạn lấy 5 kí tự đầu thì bắt đầu kí tự mới là 6, bạn lấy 5 kí tự đầu là 1 chuổi + 5 kí tự sau là 1 chuổi + 2 dấu "-" = 12. còn đằng sau còn lại bao nhiêu thì lấy hết.
 
Bác làm ơn chỉ rõ ý nghĩa trong công thức đó luôn, vì hiểu rồi mới nhớ lâu mà, hiểu mới có ý tưởng sáng tạo được hihi. Nếu một mai có phát sinh mã VT mới nào đó có tới 13 ký tự chắc tôi lại loai hoay mãi thôi. Thank bác nhiều lắm
 
Cho mã bạn dài cỡ nào cũng xong, xin mời

PHP:
Option Explicit
Function TachMaVT(MaVT As Variant) As String
 Const nG As String = "-"
 Dim DDai As Byte, jJ As Byte
 
 MaVT = Trim(MaVT)
 TachMaVT = Left(MaVT, 5)
 For jJ = 6 To Len(MaVT) Step 5
   TachMaVT = TachMaVT & nG & Mid(MaVT, jJ, 5)
 Next jJ
End Function
 
Bác làm ơn chỉ rõ ý nghĩa trong công thức đó luôn, vì hiểu rồi mới nhớ lâu mà, hiểu mới có ý tưởng sáng tạo được hihi. Nếu một mai có phát sinh mã VT mới nào đó có tới 13 ký tự chắc tôi lại loai hoay mãi thôi. Thank bác nhiều lắm
Đây không phải là các công thức khó, để hiểu được công thức này trước hết bạn cần đọc và tìm hiểu qua về cấu trúc và ý nghĩa của các hàm cơ bản về văn bản như
-Left; Right, Mid, Replace... Bạn tham khảo bài viết của BNTT tại đây nhé
http://www.giaiphapexcel.com/forum/showthread.php?t=7170
Sau khi đọc qua và tìm hiểu các ví dụ bạn có thể áp dụng trực tiếp trên bài toán thực tế của bạn là hiểu ngay.
 
Đây không phải là các công thức khó, để hiểu được công thức này trước hết bạn cần đọc và tìm hiểu qua về cấu trúc và ý nghĩa của các hàm cơ bản về văn bản như
-Left; Right, Mid, Replace... .
Đúng là bài này thuộc dạng dể... nhưng độ khó sẽ tăng lên nếu như đề bài nói rằng:
- Từ mã VT cho trước, hãy "nhóm" 5 ký tự lại thành 1, mổi "nhóm" cách nhau bởi dấu -
- Độ dài của chuổi trong mã VT là không biết trước

Ẹc... Ẹc... Hãy giải quyết yêu cầu này bằng công thức xem có được không nha! (VBA thì quá dể, bao nhiêu ký tự, code vẩn nhiêu đó)
------------
Thử giải quyết yêu cầu như tôi vừa nói ở trên bằng VBA nhé ---> Thuật toán gần giống với sư phụ SA_DQ (cũng duyệt qua chuổi với Step 5) nhưng tôi thử nghiệm dùng Dictionary xem sao:
PHP:
Function ChangeCode(Text As String, Sep As String) As String
  Dim Dic, i As Long
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To Len(Text) Step 5
    Dic.Add i, Mid(Text, i, 5)
  Next i
  ChangeCode = Join(Dic.Items, Sep)
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom