Trần Văn Bình
GTVT
- Tham gia
- 30/7/06
- Bài viết
- 423
- Được thích
- 383
- Nghề nghiệp
- GTVT
Mã số đơn vị gồm 10 số, bạn có thể dùng hàm LEFT để tách nó.Hiện mình có cột dữ liệu D2: D & Lr mình muốn tách dữ liệu cột này thành 02 cột kế tiếp
Rất mông anh chị hỗ trợ vì đối tượng phân cách bới phím Alt+enter
Mã rố đơn vị từ 2 đến 10 số bạn nên hơi khóMã số đơn vị gồm 10 số, bạn có thể dùng hàm LEFT để tách nó.
Chạy thử xem saoHiện mình có cột dữ liệu D2: D & Lr mình muốn tách dữ liệu cột này thành 02 cột kế tiếp
Rất mông anh chị hỗ trợ vì đối tượng phân cách bới phím Alt+enter
Option Explicit
Sub xxx()
Dim Nguon
Dim Kq
Dim rws
Dim i, j, k
Nguon = Sheet1.Range("D2", Sheet1.Range("D2").End(xlDown))
rws = UBound(Nguon)
ReDim Kq(1 To rws, 1 To 2)
With CreateObject("VbScript.RegExp")
.Pattern = "\d\D"
For i = 1 To rws
If .test(Nguon(i, 1)) Then
k = .Execute(Nguon(i, 1))(0).firstindex
Kq(i, 1) = Left(Nguon(i, 1), k + 1)
Kq(i, 2) = Mid(Nguon(i, 1), k + 1, 1000000)
End If
Next i
End With
With Sheet1
.Range("F2").Resize(rws, 2).Clear
.Range("F2").Resize(rws, 2).NumberFormat = "@"
.Range("F2").Resize(rws, 2) = Kq
.Range("F2").Resize(rws, 2).Columns.AutoFit
End With
End Sub
Nếu độ dài khác nhau, có thể dùng:Mã rố đơn vị từ 2 đến 10 số bạn nên hơi khó
Nhờ bạn sữa giúp hiện chạy code tại cột G dư 1 số đứng đầu của dữ liệuChạy thử xem sao
Mã:Option Explicit Sub xxx() Dim Nguon Dim Kq Dim rws Dim i, j, k Nguon = Sheet1.Range("D2", Sheet1.Range("D2").End(xlDown)) rws = UBound(Nguon) ReDim Kq(1 To rws, 1 To 2) With CreateObject("VbScript.RegExp") .Pattern = "\d\D" For i = 1 To rws If .test(Nguon(i, 1)) Then k = .Execute(Nguon(i, 1))(0).firstindex Kq(i, 1) = Left(Nguon(i, 1), k + 1) Kq(i, 2) = Mid(Nguon(i, 1), k + 1, 1000000) End If Next i End With With Sheet1 .Range("F2").Resize(rws, 2).Clear .Range("F2").Resize(rws, 2).NumberFormat = "@" .Range("F2").Resize(rws, 2) = Kq .Range("F2").Resize(rws, 2).Columns.AutoFit End With End Sub
Tách theo char(10) thử dùng code sau:Vẫn đang bị đơn vị Chi nhánh hoặc số có chữ ở giữa
Sub xyz()
Dim Nguon
Dim Kq
Dim rws&
Dim i&, arr
Nguon = Sheet1.Range("D2", Sheet1.Range("D2").End(xlDown))
rws = UBound(Nguon)
ReDim Kq(1 To rws, 1 To 2)
For i = 1 To rws
arr = Split(Nguon(i, 1) & ChrW(10), ChrW(10))
Kq(i, 1) = arr(0)
Kq(i, 2) = arr(1)
Next i
With Sheet1
.Range("F2").Resize(rws, 2).Clear
.Range("F2").Resize(rws, 2).NumberFormat = "@"
.Range("F2").Resize(rws, 2) = Kq
.Range("F2").Resize(rws, 2).Columns.AutoFit
End With
End Sub
Cám ơn bạn rất nhiều Code như mong muốnTách theo char(10) thử dùng code sau:
Mã:Sub xyz() Dim Nguon Dim Kq Dim rws& Dim i&, arr Nguon = Sheet1.Range("D2", Sheet1.Range("D2").End(xlDown)) rws = UBound(Nguon) ReDim Kq(1 To rws, 1 To 2) For i = 1 To rws arr = Split(Nguon(i, 1) & ChrW(10), ChrW(10)) Kq(i, 1) = arr(0) Kq(i, 2) = arr(1) Next i With Sheet1 .Range("F2").Resize(rws, 2).Clear .Range("F2").Resize(rws, 2).NumberFormat = "@" .Range("F2").Resize(rws, 2) = Kq .Range("F2").Resize(rws, 2).Columns.AutoFit End With End Sub
Function GetCompanyCode(TgStr As String, TgChar As String) As String
Dim iPosition As Integer: iPosition = InStr(TgStr, TgChar)
If iPosition > 0 Then GetCompanyCode = Left(TgStr, iPosition)
End Function
Function GetCompanyName(TgStr As String, TgChar As String) As String
Dim iPosition As Integer: iPosition = InStr(TgStr, TgChar)
If iPosition > 0 Then GetCompanyName = Right(TgStr, Len(TgStr) - iPosition)
End Function
= GetCompanyCode(D2,Char(10))
= GetCompanyName(D2,Char(10))
D2="3100771234-CÔNG TY TNHH DỊCH VỤ THƯƠNG MẠI ĐIỆN TỬ VATOTA"
B2 = GetCompanyCode(D2,"-")
C2 = GetCompanyName(D2,"-")
Cám ơn bạn nhiều mình dùng Function của bạn chạy chính xác theo mong muốnĐối với bài toán của bạn, bạn có thể đặt hai Function như sau:
PHP:Function GetCompanyCode(TgStr As String, TgChar As String) As String Dim iPosition As Integer: iPosition = InStr(TgStr, TgChar) If iPosition > 0 Then GetCompanyCode = Left(TgStr, iPosition) End Function
và
PHP:Function GetCompanyName(TgStr As String, TgChar As String) As String Dim iPosition As Integer: iPosition = InStr(TgStr, TgChar) If iPosition > 0 Then GetCompanyName = Right(TgStr, Len(TgStr) - iPosition) End Function
Sau đó, có thể dùng tuỳ biến trên sheet, như data hiện có của bạn thì mình thấy ký tự ngăn cách là Char(10) (tương đương Alt+Enter), thì cú pháp là
PHP:= GetCompanyCode(D2,Char(10)) = GetCompanyName(D2,Char(10))
Trong trường hợp data bạn dùng ký tự khác ngăn cách thì thay Char(10) bằng ký tự ngăn cách đó. Ví dụ:
PHP:D2="3100771234-CÔNG TY TNHH DỊCH VỤ THƯƠNG MẠI ĐIỆN TỬ VATOTA" B2 = GetCompanyCode(D2,"-") C2 = GetCompanyName(D2,"-")