Tách chuỗi đặc biệt trong 1 ô thành nhiều dòng!!! (1 người xem)

Liên hệ QC

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

zzchantinh

Thành viên mới
Tham gia
13/2/15
Bài viết
3
Được thích
0
Chào mọi người!!!
Rất mong nhận được sự trợ giúp mọi thành viên trên diễn đàn GPE. Yêu cầu và mong muốn cụ thể mình đã nêu cụ thể trong file đính kèm. Xin cảm ơn.
 
Lần chỉnh sửa cuối:
Chào mọi người!!!
Rất mong nhận được sự trợ giúp mọi thành viên trên diễn đàn GPE. Yêu cầu và mong muốn cụ thể mình đã nêu cụ thể trong file đính kèm. Xin cảm ơn.
Hình như kết quả mong muốn tại ô A4 của bạn bị sai. Tôi nghĩ đúng phải là: 28/07/2011 chứ??
 
Upvote 0
Chào mọi người!!!
Rất mong nhận được sự trợ giúp mọi thành viên trên diễn đàn GPE. Yêu cầu và mong muốn cụ thể mình đã nêu cụ thể trong file đính kèm. Xin cảm ơn.

Code vầy thử xem:
Mã:
Sub Main()
  Dim text As String
  Dim clb As Object
  text = Sheet1.Range("A1").Value
  text = Replace(text, "[[""", "")
  text = Replace(text, """,", vbTab)
  text = Replace(text, "],[""", vbLf)
  text = Replace(text, "]]}}}", "")
  text = Replace(text, "\", "")
  text = Replace(text, ",", vbTab)
  Set clb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  clb.SetText text
  clb.PutInClipboard
  With Sheet1.Range("A4")
    .Resize(10000).NumberFormat = "@"
    .PasteSpecial
  End With
  Set clb = Nothing
End Sub
 
Upvote 0
Code vầy thử xem:
Mã:
Sub Main()
  Dim text As String
  Dim clb As Object
  text = Sheet1.Range("A1").Value
  text = Replace(text, "[[""", "")
  text = Replace(text, """,", vbTab)
  text = Replace(text, "],[""", vbLf)
  text = Replace(text, "]]}}}", "")
  text = Replace(text, "\", "")
  text = Replace(text, ",", vbTab)
  Set clb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  clb.SetText text
  clb.PutInClipboard
  With Sheet1.Range("A4")
    .Resize(10000).NumberFormat = "@"
    .PasteSpecial
  End With
  Set clb = Nothing
End Sub
Phục thầy quá! Thầy có thể giải thích giúp em về ý nghĩa các dòng code này được không ạ?
 
Upvote 0
Phục thầy quá! Thầy có thể giải thích giúp em về ý nghĩa các dòng code này được không ạ?

- Để ý rằng nếu ta copy 1 vùng nhiều dòng nhiều cột thì dữ liệu (text) trong clipboard sẽ bị biến đổi theo kiểu:
a> Toàn bộ dữ liệu sẽ trở thành 1 chuỗi
b> Chuỗi ấy tuân thủ quy tắc: Cột cách cột bằng ký tự vbTab và dòng cách dòng bằng ký tự vbLf
- Với chuỗi đã cho trong bài 1, ta sẽ làm điều ngược lại bằng cách:
a> Hàm Replace để xóa những ký tự không cần thiết, chừa lại những chỗ cần lấy (chắc bạn hiểu)
b> Những chỗ nào ta muốn cột cách cột, ta sẽ gán vào đó tự vbTab
c> Những chỗ nào ta muốn xuống dòng, ta sẽ gán vào đó ký tự vbLf
d> Cuối cùng "nhét" nguyên "đống rác" ấy vào Clipboard rồi paste ngược lại bảng tính
Vậy thôi!
(Giả lập như rằng ta đã copy dữ liệu từ bảng tính vào clipboard ấy mà)
 
Upvote 0
- Để ý rằng nếu ta copy 1 vùng nhiều dòng nhiều cột thì dữ liệu (text) trong clipboard sẽ bị biến đổi theo kiểu:
a> Toàn bộ dữ liệu sẽ trở thành 1 chuỗi
b> Chuỗi ấy tuân thủ quy tắc: Cột cách cột bằng ký tự vbTab và dòng cách dòng bằng ký tự vbLf
- Với chuỗi đã cho trong bài 1, ta sẽ làm điều ngược lại bằng cách:
a> Hàm Replace để xóa những ký tự không cần thiết, chừa lại những chỗ cần lấy (chắc bạn hiểu)
b> Những chỗ nào ta muốn cột cách cột, ta sẽ gán vào đó tự vbTab
c> Những chỗ nào ta muốn xuống dòng, ta sẽ gán vào đó ký tự vbLf
d> Cuối cùng "nhét" nguyên "đống rác" ấy vào Clipboard rồi paste ngược lại bảng tính
Vậy thôi!
(Giả lập như rằng ta đã copy dữ liệu từ bảng tính vào clipboard ấy mà)
Qua bài này của thầy em thấy để học lập trình thì ngôn ngữ lập trình phải biết là đương nhiên rồi, tuy nhiên em nghĩ tư duy thuật toán là vấn đề cơ bản nhất. Cái này em cần rèn luyện nhiều! Cảm ơn thầy rất nhiều!/-*+/
 
Upvote 0
Qua bài này của thầy em thấy để học lập trình thì ngôn ngữ lập trình phải biết là đương nhiên rồi, tuy nhiên em nghĩ tư duy thuật toán là vấn đề cơ bản nhất. Cái này em cần rèn luyện nhiều! Cảm ơn thầy rất nhiều!/-*+/

Thật ra cái chiêu này tôi đã làm nhiều lần trên diễn đàn rồi. Chẳng hạn đã đố ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=484428#post484428
và giải ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=484722#post484722
Để ý các bài viết trên GPE sẽ thấy!
 
Upvote 0
Code vầy thử xem:
Mã:
Sub Main()
  Dim text As String
  Dim clb As Object
  text = Sheet1.Range("A1").Value
  text = Replace(text, "[[""", "")
  text = Replace(text, """,", vbTab)
  text = Replace(text, "],[""", vbLf)
  text = Replace(text, "]]}}}", "")
  text = Replace(text, "\", "")
  text = Replace(text, ",", vbTab)
  Set clb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  clb.SetText text
  clb.PutInClipboard
  With Sheet1.Range("A4")
    .Resize(10000).NumberFormat = "@"
    .PasteSpecial
  End With
  Set clb = Nothing
End Sub
Code của anh chạy rất tổt. Cảm ơn anh nhiều.
 
Upvote 0
Đoạn code của thầy kia paste vào VBA rồi dùng kiểu gì vậy bạn?
 
Upvote 0
Thật ra cái chiêu này tôi đã làm nhiều lần trên diễn đàn rồi. Chẳng hạn đã đố ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=484428#post484428
và giải ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=484722#post484722
Để ý các bài viết trên GPE sẽ thấy!
Có một dòng sau Em không hiểu làm sao để biết nó là một Key của Rigistry mà lấy...Nếu được Xin Anh chỉ dùm

PHP:
Set clb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

Em Cảm ơn
 
Upvote 0
Có một dòng sau Em không hiểu làm sao để biết nó là một Key của Rigistry mà lấy...Nếu được Xin Anh chỉ dùm

PHP:
Set clb = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

Em Cảm ơn

Hổng biết thì lên google mà tìm
Đôi khi tôi nhờ bác Google tìm giúp tôi cái A nhưng tình cờ tôi lại phát hiện ra cái B ---> Cứ cảm thấy nó "lạ" và "độc" là tôi mở ngay Excel để thử nghiệm ---> Nếu thành công sẽ cất vào "kho đồ nghề"
Cái vụ CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") cũng từ việc nhờ tìm A được B mà ra
--------------
Thật ra hồi đó tôi tìm từ khóa Createobject("clipboard và phát hiện ra CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
 
Lần chỉnh sửa cuối:
Upvote 0
Hổng biết thì lên google mà tìm
Đôi khi tôi nhờ bác Google tìm giúp tôi cái A nhưng tình cờ tôi lại phát hiện ra cái B ---> Cứ cảm thấy nó "lạ" và "độc" là tôi mở ngay Excel để thử nghiệm ---> Nếu thành công sẽ cất vào "kho đồ nghề"
Cái vụ CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") cũng từ việc nhờ tìm A được B mà ra
--------------
Thật ra hồi đó tôi tìm từ khóa Createobject("clipbrd.clipboard") và phát hiện ra CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

Em tìm ra nó là Microsoft Forms 2.1 DataObject không Biết có đúng không Anh
code mẫu Em Mới Tìm được
PHP:
Sub CopyTextToClipboard(byval inText as String)
  Dim objClipboard As Object
  Set objClipboard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

   objClipboard.SetText inText
   objClipboard.PutInClipboard

   Set objClipboard = Nothing
End Sub
Em cảm Ơn
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom