ngắt chuỗi kí tự theo số lượng và vị trí mong muốn

Liên hệ QC

tranhoainam9701

Thành viên chính thức
Tham gia
15/11/11
Bài viết
67
Được thích
5
Kính gửi các Anh/ Chị trên diễn đàn
Em có một file dữ liệu dạng chuỗi muốn nhờ Anh/ Chị viết code giúp để xử lí ngắt chuỗi ( lấy đi) với 03 trường hợp, theo số lượng bên trái, bên phải chuỗi, và cả bên trái và bên phải. Với mong muốn xử lí bằng code VBA không muốn sử dụng hàm MID, Right, để ngắt ạ!
Mong Anh/ Chị viết giúp
Trân trọng/
 

File đính kèm

  • xử lí chuỗi.xlsb
    9.7 KB · Đọc: 19
Kính gửi các Anh/ Chị trên diễn đàn
Em có một file dữ liệu dạng chuỗi muốn nhờ Anh/ Chị viết code giúp để xử lí ngắt chuỗi ( lấy đi) với 03 trường hợp, theo số lượng bên trái, bên phải chuỗi, và cả bên trái và bên phải. Với mong muốn xử lí bằng code VBA không muốn sử dụng hàm MID, Right, để ngắt ạ!
Mong Anh/ Chị viết giúp
Trân trọng/
Nội dung mong muốn và kết quả làm bằng tay chẳng khớp với nhau chút nào
 
Xin lỗi Bác Maika ví dụ kết quả có phần sai, hiện em đã chuẩn lại mong Bác code giúp!
Cám ơn Bác nhiều!
Vẫn sai (hoặc tôi không hiểu ý bạn):
Dữ liệu gốc là 00,01,02,03,04,05,...........,71,72, (tức là chỉ đến 72 thêm dấu phẩy), ở A5 yêu cầu cắt 6 ký tự bên trái
Sai 1: kết quả bằng tay của bạn chứa 06,07,08,09,10,.........,98,99 => Vậy từ 73 đến 99 ở đâu ra mà không có trong dữ liệu gốc?
Sai 2: Cắt 6 ký tự mà sao kết quả bắt dầu từ 06? Nếu đúng nghĩa ký tự tin học dùng là phải cắt các 6 ký tự sau 00,01, (4 ký tự số và 2 dấu phẩy = 6) -> kết quả phải từ 03 trở đi

Bạn xem lại kết quả tại D5 xem, nói cắt 6 ký tự nhưng cắt ký tự nào đâu (nếu đúng 99 là số cuối)
 
Vẫn sai (hoặc tôi không hiểu ý bạn):
Dữ liệu gốc là 00,01,02,03,04,05,...........,71,72, (tức là chỉ đến 72 thêm dấu phẩy), ở A5 yêu cầu cắt 6 ký tự bên trái
Sai 1: kết quả bằng tay của bạn chứa 06,07,08,09,10,.........,98,99 => Vậy từ 73 đến 99 ở đâu ra mà không có trong dữ liệu gốc?
Sai 2: Cắt 6 ký tự mà sao kết quả bắt dầu từ 06? Nếu đúng nghĩa ký tự tin học dùng là phải cắt các 6 ký tự sau 00,01, (4 ký tự số và 2 dấu phẩy = 6) -> kết quả phải từ 03 trở đi

Bạn xem lại kết quả tại D5 xem, nói cắt 6 ký tự nhưng cắt ký tự nào đâu (nếu đúng 99 là số cuối)
Theo em đoán là 6 kí tự thớt muốn ở đây kiểu dạng là những con số ở trong chuỗi ấy.
Chuỗi có 100 số.Mỗi số cách nhau dấu phẩy, cắt 6 kí tự tương đương cắt đi 6 số ấy
 
Theo em đoán là 6 kí tự thớt muốn ở đây kiểu dạng là những con số ở trong chuỗi ấy.
Chuỗi có 100 số.Mỗi số cách nhau dấu phẩy, cắt 6 kí tự tương đương cắt đi 6 số ấy
Thớt nói gửi lại dữ liệu đã sửa nhưng vẫn sai.
Để yên xem bạn ấy nói thế nào.
 
Thớt nói gửi lại dữ liệu đã sửa nhưng vẫn sai.
Để yên xem bạn ấy nói thế nào.
Thực sự là không biết nói và giải thích như nào. Tuy nhiên cách giải thích của Bùi Quang Thuận đúng theo ý của Em mong muốn. Đó chính là các con số trong chuỗi ở đây là 100 số, và cách ngắt đi các con số trong chuỗi nhưng ở đây em không để ý đến kí tự dấu "," trong chuỗi mà chỉ tính là kí tự số mà thôi. Trường hợp 1 bên trái chuỗi gốc, trường hợp 2 bên phải chuỗi gốc, và trường hợp 3 bên trái lẫn bên phải chuỗi gốc đều không tính dấu "," có trong chuỗi ạ. ,mà chỉ tính các con số mà thôi. Vậy nếu đúng phải là lấy đi 06 kí tự số và 5 kí tự dấu phẩy. Nói theo thuật ngữ Bác Maika nói là chuẩn ạ.
Sai 2: Cắt 6 ký tự mà sao kết quả bắt dầu từ 06? Nếu đúng nghĩa ký tự tin học dùng là phải cắt các 6 ký tự sau 00,01, (4 ký tự số và 2 dấu phẩy = 6) -> kết quả phải từ 03 trở đi
P/s dự đoán của Bùi Quang Thuận....Theo em đoán là 6 kí tự thớt muốn ở đây kiểu dạng là những con số ở trong chuỗi ấy.
Chuỗi có 100 số.Mỗi số cách nhau dấu phẩy, cắt 6 kí tự tương đương cắt đi 6 số ấy.( Bùi Quang Thuận hiểu đúng rồi)
 
Thực sự là không biết nói và giải thích như nào. Tuy nhiên cách giải thích của Bùi Quang Thuận đúng theo ý của Em mong muốn. Đó chính là các con số trong chuỗi ở đây là 100 số, và cách ngắt đi các con số trong chuỗi nhưng ở đây em không để ý đến kí tự dấu "," trong chuỗi mà chỉ tính là kí tự số mà thôi. Trường hợp 1 bên trái chuỗi gốc, trường hợp 2 bên phải chuỗi gốc, và trường hợp 3 bên trái lẫn bên phải chuỗi gốc đều không tính dấu "," có trong chuỗi ạ. ,mà chỉ tính các con số mà thôi. Vậy nếu đúng phải là lấy đi 06 kí tự số và 5 kí tự dấu phẩy. Nói theo thuật ngữ Bác Maika nói là chuẩn ạ.
Sai 2: Cắt 6 ký tự mà sao kết quả bắt dầu từ 06? Nếu đúng nghĩa ký tự tin học dùng là phải cắt các 6 ký tự sau 00,01, (4 ký tự số và 2 dấu phẩy = 6) -> kết quả phải từ 03 trở đi
P/s dự đoán của Bùi Quang Thuận....Theo em đoán là 6 kí tự thớt muốn ở đây kiểu dạng là những con số ở trong chuỗi ấy.
Chuỗi có 100 số.Mỗi số cách nhau dấu phẩy, cắt 6 kí tự tương đương cắt đi 6 số ấy.( Bùi Quang Thuận hiểu đúng rồi)
Bạn xem lại dữ liệu bạn gửi chưa, nhất là dữ liệu gốc ở A2? và dữ liệu đã cắt (mong muốn) tại D5? Tôi chỉ hỏi sao bạn gửi dữ liệu nói là đã sửa nhưng sao vẫn sai?
 
Bạn xem lại dữ liệu bạn gửi chưa, nhất là dữ liệu gốc ở A2? và dữ liệu đã cắt (mong muốn) tại D5? Tôi chỉ hỏi sao bạn gửi dữ liệu nói là đã sửa nhưng sao vẫn sai?
Rảnh đâu mà tự xem. Để bà con "ăn không ngồi rồi" trên GPE dò dữ liệu sai giùm có phải khoẻ hơn không?

Chức năng thầy bói bắt đầu kích hoạt.
Bói được cũng là một kỹ năng xứng đáng luyện tập để phát triển khả năng tư duy.
Rất tiếc ở đây, GOPE toàn chuyện bói mò không ích lợi gì cho sự luyện tập lô gic cả.
 
Bạn xem lại dữ liệu bạn gửi chưa, nhất là dữ liệu gốc ở A2? và dữ liệu đã cắt (mong muốn) tại D5? Tôi chỉ hỏi sao bạn gửi dữ liệu nói là đã sửa nhưng sao vẫn sai?
Tôi không kiểm tra các ô còn lại nhưng rất có thể sau khi cắt còn phải SẮP XẾP tăng dần thì mới có D5 như bạn thấy.

Lưu ý là trong A2 không có sắp xếp. Sau khi cắt không có như D5, phải SẮP XẾP mới đúng như D5. Nếu đúng thế thì trong mô tả người ta đã bỏ qua đoạn nói về SẮP XẾP. Thôi kệ người ta đi.
-----------
A2 = 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72

D5 = 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99

Nếu theo mô tả thì sau khi cắt 6 SỐ (số chứ không phải ký tự) thì phải có

00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66

Nhìn thì thấy khác với D5 nhưng nếu sắp xếp tăng dần thì lại giống hệt D5.
 
Tôi không kiểm tra các ô còn lại nhưng rất có thể sau khi cắt còn phải SẮP XẾP tăng dần thì mới có D5 như bạn thấy.

Lưu ý là trong A2 không có sắp xếp. Sau khi cắt không có như D5, phải SẮP XẾP mới đúng như D5. Nếu đúng thế thì trong mô tả người ta đã bỏ qua đoạn nói về SẮP XẾP. Thôi kệ người ta đi.
...
Sau diễn tả của bác, chợt hiểu ra mục đích của bài này :p

Tôi chỉ nói "hiểu mục đích" thôi nghe. Còn vấn đề đạt mục đích tương tự nhưng cách thực hiện giản dị hơn thì tôi chưa nói tới.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom