Tách ký tự cần lấy . với chuỗi không theo quy luật

Liên hệ QC

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
250
Được thích
43
Giới tính
Nam
1647678624203.png

Em chào diễn đàn !.
Hiện em đang có một file với dữ liệu chuỗi không theo quy luật, và cần tách các ký trong chuỗi ra một cột riêng.
Em có gửi file đính kèm và có kết quả nhập tay mong muốn hiển thị. Mong nhận được sự giúp đỡ từ diễn đàn ạ.
Em cảm xin cảm ơn .
 

File đính kèm

  • 220319_TachDonvi.xlsx
    14.1 KB · Đọc: 28
View attachment 273355

Em chào diễn đàn !.
Hiện em đang có một file với dữ liệu chuỗi không theo quy luật, và cần tách các ký trong chuỗi ra một cột riêng.
Em có gửi file đính kèm và có kết quả nhập tay mong muốn hiển thị. Mong nhận được sự giúp đỡ từ diễn đàn ạ.
Em cảm xin cảm ơn .
Lại là tôi đây. Bạn thử file. hy vọng đúng ý
P/S: có thể code này chỉ đúng với liệu bài này
 

File đính kèm

  • 220319_TachDonvi.xlsm
    23.1 KB · Đọc: 64
Chào các anh chị,
Mình cần tách nguyên âm ra 1 hàng và phụ am ra 1 hàng, giúp mình với, Cám ơn nhiều
 

File đính kèm

  • Exel NSH.xlsx
    11.4 KB · Đọc: 17
Lại là tôi đây. Bạn thử file. hy vọng đúng ý
P/S: có thể code này chỉ đúng với liệu bài này
Thầy con chưa hiểu 1 số cái trong code, mong thầy giải đáp để con được học hỏi:
1. Tại sao mình cần chuyển dấu " " thành ","?
2. Biến t dùng để làm gì?

Cảm ơn thầy.
 
1. Tại sao mình cần chuyển dấu " " thành ","?
Có lẽ điều này là không cần thiết
2. Biến t dùng để làm gì?
Khả năng là bác ấy muốn dùng cho khúc dưới nhưng quên sửa (vì nếu giả sử chuỗi không có mã Q..Q.. thì vòng for J vẫn lặp, và J vẫn có giá trị có thể =3 hoặc >3, thay T cho J ở chỗ đó hợp lý hơn, vì T sẽ = 0. Nhưng nếu vậy, đầu vòng for phải cài T=0 trước)
--> Khúc dưới là khúc này:
Mã:
If j = 3 Then KQ(i, 2) = S(1) & " " & S(2)
If j > 3 Then KQ(i, 2) = S(1) & " " & S(2) & " " & S(3)

Bác @HUONGHCKT :
Trim của VBA có sự khác biệt so với của worksheet, do vậy khúc này:
Mã:
Temp = Application.Substitute(Trim(Arr(i, 1)), " ", ",")
1/ Nên dùng application.Trim để loại bỏ khoảng trắng ở giữa các ký tự nếu có nhiều khoảng trắng liền kề
2/ Phần substitute theo em nên thay bằng replace thuần VBA sẽ hay hơn
3/ Không cần thay thế thành dấu phẩy mà để nguyên split luôn

Bác xem lại code, nếu dữ liệu ô B23, B24 không dư khoảng trắng thì kết quả chưa đúng!
 
Thầy con chưa hiểu 1 số cái trong code, mong thầy giải đáp để con được học hỏi:
1. Tại sao mình cần chuyển dấu " " thành ","?
2. Biến t dùng để làm gì?

Cảm ơn thầy.
Mình không học cơ bản nên chỉ có thể giải thích nôm na theo ý hiểu của bản thân là như thế này:
1/là để khi đưa dữ liệu vào mảng 1 chiều (mảng S) các phần tử của mảng sẽ được phân tách theo dấu ","( việc này để tránh nhầm lẫn khi trong chuỗi đưa vào có những dấu cách hay dấu khác mà khi nhìn thì không thấy). Tất nhiên là không cần chuyển đổi thì vẫn được-các phần tử được cách nhau một khoảng trống cũng vẫn được. Bạn thử thì biết ngay thôi mà.
2/ Biến t ấy thừa.
Bài đã được tự động gộp:

Có lẽ điều này là không cần thiết

Khả năng là bác ấy muốn dùng cho khúc dưới nhưng quên sửa (vì nếu giả sử chuỗi không có mã Q..Q.. thì vòng for J vẫn lặp, và J vẫn có giá trị có thể =3 hoặc >3, thay T cho J ở chỗ đó hợp lý hơn, vì T sẽ = 0. Nhưng nếu vậy, đầu vòng for phải cài T=0 trước)
--> Khúc dưới là khúc này:
Mã:
If j = 3 Then KQ(i, 2) = S(1) & " " & S(2)
If j > 3 Then KQ(i, 2) = S(1) & " " & S(2) & " " & S(3)

Bác @HUONGHCKT :
Trim của VBA có sự khác biệt so với của worksheet, do vậy khúc này:
Mã:
Temp = Application.Substitute(Trim(Arr(i, 1)), " ", ",")
1/ Nên dùng application.Trim để loại bỏ khoảng trắng ở giữa các ký tự nếu có nhiều khoảng trắng liền kề
2/ Phần substitute theo em nên thay bằng replace thuần VBA sẽ hay hơn
3/ Không cần thay thế thành dấu phẩy mà để nguyên split luôn

Bác xem lại code, nếu dữ liệu ô B23, B24 không dư khoảng trắng thì kết quả chưa đúng!
Cảm ơn bạn. Tôi không học cơ bản nên nhiều khi cứ làm theo kiểu học lóm thôi.
Hôm trước có đọc của 1 anh nào đó(rất có uy tín trên diễn đàn này) nó về sự khác nhau giữa cách dùng Có Application và Application.WorksFunciton, có cả đoạn nói về hàm Trim của VBA và hàm Trim của Excel nữa mà không nhớ nổi,
Cảm ơn bạn đã cho tôi thêm kiến thức về VBA, về cách sử dụng hàm Replace của VBA thay hàm Substitute của Excel. Tôi hay đãng trí Hôm nay nhớ thì đấy, mai lại làm theo cách cũ cũng nên.
 
Lần chỉnh sửa cuối:
Với dữ liệu đại diện chỉ có chừng đó dạng thì không thể nói là không có quy luật để trích chuỗi, và theo đó dễ dàng trích được theo nhiều cách khác nhau. Chỉ e rằng sau đó lại tòi ra 1 vài kiểu nữa thì lại mất công sửa code.
 
Hôm trước có đọc của 1 anh nào đó(rất có uy tín trên diễn đàn này) nó về sự khác nhau giữa cách dùng Có Application và Application.WorksFunciton,
Có thể là đây - xem cả bài #53 để hiểu.


application.jpg
 
Có thể là đây - xem cả bài #53 để hiểu.


View attachment 273674
Cảm ơn Anh nhiều! Tôi đã có thêm được 1 kiến thức bổ ích.
 
Web KT
Back
Top Bottom