Tách các ký tự từ chuỗi theo mẫu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ketamine

Thành viên mới
Tham gia
24/9/15
Bài viết
1
Được thích
0
Mình đang cần tách địa chỉ như thế này

Ô A1 : 25 PHAN CHU TRINH, P.TÂN THÀNH, Q.TP, TP. HCM

Mình muốn

Ô B1 : 25 PHAN CHU TRINH
Ô C1 : P. TÂN THÀNH
Ô D1 : Q.TP
Ô E1 : TP. HCM

mình phải làm thế nào ? Mong các bạn và các anh chị giúp đỡ ạ.

Điển hình trong file đính kèm, thanks các bạn và các anh chị .
 

File đính kèm

Mình đang cần tách địa chỉ như thế này

Ô A1 : 25 PHAN CHU TRINH, P.TÂN THÀNH, Q.TP, TP. HCM

Mình muốn

Ô B1 : 25 PHAN CHU TRINH
Ô C1 : P. TÂN THÀNH
Ô D1 : Q.TP
Ô E1 : TP. HCM

mình phải làm thế nào ? Mong các bạn và các anh chị giúp đỡ ạ.

Điển hình trong file đính kèm, thanks các bạn và các anh chị .
Có cách làm khác mà không dùng đến công thức, bạn làm như sau:
- Chon toàn bộ cột C
- Vào Data \ Text to Colums \Next
- Tích vào Other, gõ dấu ","
- Chọn Finish, xong.
Thật đơn giản.
 
Mình đang cần tách địa chỉ như thế này

Ô A1 : 25 PHAN CHU TRINH, P.TÂN THÀNH, Q.TP, TP. HCM

Mình muốn



Ô B1 : 25 PHAN CHU TRINH
Ô C1 : P. TÂN THÀNH
Ô D1 : Q.TP
Ô E1 : TP. HCM

mình phải làm thế nào ? Mong các bạn và các anh chị giúp đỡ ạ.

Điển hình trong file đính kèm, thanks các bạn và các anh chị .

Mình làm thử bằng VBA bạn xem vầy có được không, bạn bấm vào nút chạy Code sẽ cho ra kết quả
 

File đính kèm

Mình làm thử bằng VBA bạn xem vầy có được không, bạn bấm vào nút chạy Code sẽ cho ra kết quả

Bạn dùng Split sẽ bỏ bớt được 1 vòng lập:
Mã:
Sub tach()
  Dim i As Long
  Dim arr
  Range("B1:F104").ClearContents
  For i = 1 To 104
    [COLOR=#ff0000]arr = Split(Cells(i, 1).Value, ", ")[/COLOR]
    [COLOR=#ff0000]Cells(i, 2).Resize(, UBound(arr) + 1).Value = arr[/COLOR]
   Next i
End Sub
Ngoài ra: Mới học viết VBA nên chú trọng việc khai báo biến đầy đủ và đúng kiểu
Trong cửa sổ VBA, bạn nên vào menu Tools\Options và check mục "Require Variable Declaration" trong tab Editor.


Untitled_1.jpg


























Kể từ bây giờ trở đi, mỗi khi bạn viết code thì sẽ thấy ngay dòng Option Explicit nằm sẵn. Mục đích dòng này nó sẽ "rình" và báo lỗi khi bạn quên không khai báo biến đầy đủ


Untitled_2.jpg
 
Bạn dùng Split sẽ bỏ bớt được 1 vòng lập:
Mã:
Sub tach()
  Dim i As Long
  Dim arr
  Range("B1:F104").ClearContents
  For i = 1 To 104
    [COLOR=#ff0000]arr = Split(Cells(i, 1).Value, ", ")[/COLOR]
    [COLOR=#ff0000]Cells(i, 2).Resize(, UBound(arr) + 1).Value = arr[/COLOR]
   Next i
End Sub
Ngoài ra: Mới học viết VBA nên chú trọng việc khai báo biến đầy đủ và đúng kiểu
Trong cửa sổ VBA, bạn nên vào menu Tools\Options và check mục "Require Variable Declaration" trong tab Editor.


View attachment 147702


























Kể từ bây giờ trở đi, mỗi khi bạn viết code thì sẽ thấy ngay dòng Option Explicit nằm sẵn. Mục đích dòng này nó sẽ "rình" và báo lỗi khi bạn quên không khai báo biến đầy đủ


View attachment 147703
















Cảm ơn chú ạ.

PS: Đã check vào mục Require Variable Declaration cho lần sau khỏi quên luôn.hihi :-=
 
Bạn dùng Split sẽ bỏ bớt được 1 vòng lập:
Ngoài ra: Mới học viết VBA nên chú trọng việc khai báo biến đầy đủ và đúng kiểu
Trong cửa sổ VBA, bạn nên vào menu Tools\Options và check mục "Require Variable Declaration" trong tab Editor.
không check vào thì nó tự gán biến tự động làm code chạy chậm hay sao thầy.
 
không check vào thì nó tự gán biến tự động làm code chạy chậm hay sao thầy.

Cái việc chậm hay nhanh tôi không dám chắc nhưng có điều chắc như vầy: Nếu bạn không phải báo biến thì bạn sẽ mất cơ hội được xem các gợi ý về những thuộc tính, phương thức của biến
Ví dụ:
Mã:
Sub Test()
   Set rng = Range("A1:B10")
   ......
End Sub
Sau đoạn Set rng = ... giờ xuống hàng rồi gõ rng.
Sau khi gõ dấu chấm bạn sẽ chẳng thấy có gì xảy ra cả
Tuy nhiên, nếu viết thành vầy:
Mã:
Sub Test()
   [COLOR=#ff0000]Dim rng as Range[/COLOR]  ''khai báo biến đàng hoàng
   Set rng = Range("A1:B10")
   ......
End Sub
bên dưới dòng Set rng =.... nếu bạn gõ rng. thì ngay sau dấu chấm sẽ có cả đống gợi ý cho bạn mặc sức lựa chọn (đở mất công nhớ)

Untitled.jpg
 
Công bằng ở dưới cũng có mà #13 không để ý. Kể ra forum cũng lắm kỳ nhân dị khách ^^
 
Mộtkhi đã làm thì phải đưa ra cái chỗ sáng. chứ không ai lại đi nhét vào cái chỗ tối thui........, cho dù có làm đúng đi chăng nữa cũng phải bố trí sao cho người ta đập mắt vào là thấy....

Công bằng mà nói, học sinh đi thì cũng phải biết chép đề ở trên, làm bài ở dưới.

Chứ mấy học sinh không biết "giấy rách phải giữ lấy lề", làm bài mà người khác nhìn vào cũng chẳng biết đề là gì thì chỉ có qua Tây mà học, văn hóa Á Đông không trọng vậy /-*+//-*+//-*+/
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom