Các bạn viết giúp mình cái Code tách số và chữ này với

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

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
846
Nghề nghiệp
CNVC Laos
̣Điều kiện mình viết trong File đính kèm
Cảm ơn các bạn
 

File đính kèm

̣Điều kiện mình viết trong File đính kèm
Cảm ơn các bạn
Xem bài này trước:
http://www.giaiphapexcel.com/forum/showthread.php?16983-Tách-số-không-dùng-vòng-lặp&
Chỉnh sửa lại cho bạn:
PHP:
Function StExtract(Text As String, stType As String) As String
  With CreateObject("VBScript.RegExp")
    .Global = True
    Select Case stType
      Case "N": .Pattern = "\D"
      Case "T": .Pattern = "\d"
    End Select
    StExtract = .Replace(Text, "")
  End With
End Function
Cell D13 dùng công thức:
PHP:
=stExtract(E13,"N")
Cell X13 dùng công thức:
PHP:
=stExtract(E13,"T")
 
Xem bài này trước:
http://www.giaiphapexcel.com/forum/showthread.php?16983-T%C3%A1ch-s%E1%BB%91-kh%C3%B4ng-d%C3%B9ng-v%C3%B2ng-l%E1%BA%B7p&
Chỉnh sửa lại cho bạn:
PHP:
Function StExtract(Text As String, stType As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
Select Case stType
Case "N": .Pattern = "\D"
Case "T": .Pattern = "\d"
End Select
StExtract = .Replace(Text, "")
End With
End Function
Theo mình, code này hơi bất tiện, nó bắt phải nhập stType ("N" & "T") đúng như trong code ( chữ hoa) thì mới chạy
Mượn code của Thầy ndu sửa lại tí
Mã:
Function TachCs(Text As String, Optional Dk As Integer)
  With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = IIf(Dk = 1, "\D", "\d")
    TachCs = .Replace(Text, "")
  End With
End Function
Công thức ở cell [D13]: lấy số
PHP:
=tachcs(E13,1)
Công thức ở cell [X13]: không phải số
PHP:
=tachcs(E13)
Thân
 
cảm ơn ndu96081631 đã giúp,nói thật mình xem xong rồi chả hiểu gì cả...bạn giúp làm trên File mình up lên cho với.Cảm ơn bạn
 
Theo mình, code này hơi bất tiện, nó bắt phải nhập stType ("N" & "T") đúng như trong code ( chữ hoa) thì mới chạy
Hổng phải vô tình mà em dùng Select Case đâu (thay vì IIF)... Em muốn chắc chắn rằng chỉ có 2 trường hợp xảy ra: TEXTNUMBER thôi, các trường hợp khác không tính
Mai này chỉnh sửa lại code, có thể dùng để tách Symbol chẳng hạn (khi ấy stType sẽ là "S")
Với code của em, nếu không nhập đúng stType = "N" hoặc "T" thì nó sẽ giữ nguyên chuổi (hổng làm gì cả)
Nói chung, viết 1 hàm thì nên tính đến hướng tổng quát chứ không phải chỉ dùng được là đủ
Ẹc... Ẹc...
-------------------
cảm ơn ndu96081631 đã giúp,nói thật mình xem xong rồi chả hiểu gì cả...bạn giúp làm trên File mình up lên cho với.Cảm ơn bạn
Bạn xem file đính kèm này đây (tôi cứ tưởng bạn đã quá rành cách dùng code rồi chứ)
 

File đính kèm

Lần chỉnh sửa cuối:
cảm ơn ndu96081631 đã giúp,nói thật mình xem xong rồi chả hiểu gì cả...bạn giúp làm trên File mình up lên cho với.Cảm ơn bạn
Bạn bấm phím Alt+F11 -> Sau đó vào Insert Module -> Copy đoạn code trên dán vào Module vừa insert.
Ra trang tính của Bạn tại ô E13 nhập công thức:
Mã:
=StExtract(E13,"N")
Tại ô X13 nhập công thức
Mã:
=StExtract(E13,"T")
Tương tư code của anh cò già
Tại ô E13
Mã:
=[COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#0000BB]tachcs[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]E13[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700])
[/COLOR][/COLOR]Tại ô X13
Mã:
=[COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#0000BB]tachcs[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]E13[/COLOR][COLOR=#007700][/COLOR][COLOR=#0000BB][/COLOR][COLOR=#007700])
[/COLOR][/COLOR]
 
Hổng phải vô tình mà em dùng Select Case đâu (thay vì IIF)... Em muốn chắc chắn rằng chỉ có 2 trường hợp xảy ra: TEXTNUMBER thôi, các trường hợp khác không tính
Mai này chỉnh sửa lại code, có thể dùng để tách Symbol chẳng hạn (khi ấy stType sẽ là "S")
Với code của em, nếu không nhập đúng stType = "N" hoặc "T" thì nó sẽ giữ nguyên chuổi (hổng làm gì cả)
Nói chung, viết 1 hàm thì nên tính đến hướng tổng quát chứ không phải chỉ dùng được là đủ
Ẹc... Ẹc...
-------------------

Bạn xem file đính kèm này đây (tôi cứ tưởng bạn đã quá rành cách dùng code rồi chứ)

Chết thật,mình cứ dán Code vào Sheet1,thảm nào trả được,Cảm ơn các bạn đã giúp.
 
Các bạn cho hỏi là,nếu muốn tách số ra nhiều cột thì phải sửa lại Code hoặc hàm như thế nào,vídụ:
mình nhập vào ô E13 là:01020304khamha
thì:
Cột X13 = khamha
Cột D13 = 01020304
Cột C13 = 010203
Cột B13 = 0102
Cột A13 = 01
Cảm ơn các bạn
 
Các bạn cho hỏi là,nếu muốn tách số ra nhiều cột thì phải sửa lại Code hoặc hàm như thế nào,vídụ:
mình nhập vào ô E13 là:01020304khamha
thì:
Cột X13 = khamha
Cột D13 = 01020304
Cột C13 = 010203
Cột B13 = 0102
Cột A13 = 01
Cảm ơn các bạn
Cell D13 đã có kết quả rồi, còn lại cell B13, C13, D13 muốn tách sao thì cứ dùng các hàm xử lý chuổi thôi (như LEFT, RIGHT, MID)
Chẳng hạn C13 là =LEFT(D13,6)
 
Mình đã thử dùng hàm =VALUE(LEFT(E13,6)) nhưng không được.
kết quả:
Cột C13 = 10203 chứ không ra 010203
Cột B13 = 102 chứ không ra 0102
Cột A13 = 1 chứ không ra 01
 
Mình đã thử dùng hàm =VALUE(LEFT(E13,6)) nhưng không được.
kết quả:
Cột C13 = 10203 chứ không ra 010203
Cột B13 = 102 chứ không ra 0102
Cột A13 = 1 chứ không ra 01
Bỏ cái thằng VALUE đi, chỉ LEFT thôi được rồi
Bạn phải hiểu rằng hàm VALUE để biến số nằm trong chuổi trở thành số thật sự ---> Mà khi biến thành số thật sự thì đương nhiên số 0 nằm ở đầu trở nên vô nghĩa, nó bỏ đi là phải rồi
 
Web KT

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

Back
Top Bottom