Copy paste từng phần dữ liệu vào các blank cell (dữ liệu nhiều)

Liên hệ QC

Fye.HUBT

Thành viên mới
Tham gia
10/8/09
Bài viết
5
Được thích
0
Mọi người down file mình đính kèm trước đã nhé

Mình lấy 1VD cái trích yếu Cục thiết kế Bộ Công nghiệp nhẹ. Xây dựng nhà làm việc. Thôn Thịnh Hào và Cát Linh- Quận Đống Đa. Số 2655 UN/CĐ ngày 13.6.60 nhé

mình muốn tách Cục thiết kế Bộ Công nghiệp nhẹ vào cột Ten Nguoi Sd Dat; Xây dựng nhà làm việc vào Muc Dich Sd; tương tự với cái số QĐngày QĐ.

Nếu mà làm thủ công ctrl C, ctrl V thì sẽ rất lâu vì dữ liệu của mình kéo dài tới vài ngàn -+*/

có cách nào để tạo cái macro đại loại như:

bôi đen Cục thiết kế Bộ Công nghiệp nhẹ rồi ấn 1 chẳng hạn thì nó tự copy và paste vào cột Ten Nguoi Sd Dat; bôi đen tiếp Xây dựng nhà làm việc và ấn 2 thì vào Muc Dich Sd,.... tất nhiên là với hàng tương ứng.

Mình chỉ nghĩ được thế này còn làm sao để tạo ra cái macro thì ko biết, giúp mình nhé :-=

**~**. Các bạn có phương pháp khác hay hơn cứ chỉ mình.

Àhh mình còn 1 câu hỏi nữa:

Ngày tháng năm (ngày QĐ) hiện tại rất lung tung ko hề theo chuẩn gì (do lỗi của việc nhiều người nhập mà không thống nhất từ đầu): dd/mm/yy, dd-mm-yy, dd/mm/yyyy, dd.mm.yy,..........tóm lại rất nhiều và rất .....loạn -+*/. Giờ cách nhanh nhất để chuyển về format yyyy/mm/dd là gì hả mọi người. Mình cũng nghĩ đến replace nhưng nhiều vấn đề quá mọi người giúp mình nhé

Thanks all}}}}}
 

File đính kèm

Tôi vừa xem file của bạn xong! Văn bản chẳng có quy luật gì cả thì biết đường nào mà tách đây hả bạn
Nói về bài toán tách chuổi, it ra nó cũng phải có 1 dấu hiệu nhận biết nào đó... Chẳng hạn bài toán TÁCH HỌ TÊN, người ta sẽ dựa vào khoảng trắng mà tách
Bạn xem lại dử liệu của bạn, cột trích yếu bạn muốn tách nó ra làm 5 phần, vậy đâu là dấu hiệu nhận biết của mổi phần vậy?
 
hix ko có bạn àhh, vậy mình mới đi hỏi chứ :((
chỗ này mà tách tay thì đến già mất T_T

có cách nào để tạo cái macro bôi đen vào 1 đoạn text rồi ấn phím bất kỳ thì nó sẽ tự copy và paste ra 1 cell nhất định cùng hàng được ko. Nếu có thì mình sẽ thủ công kiểu này vậy (những vẫn nhanh hơn là xài ctrl V, click chuột vào ô cần paste, ctrl V ^^)
 
Macro hỗ trợ bạn đây

vậy mình mới đi hỏi chứ Có cách nào để tạo cái macro . . . thì nó sẽ tự copy và paste ra 1 cell nhất định cùng hàng được ko.
Nếu có thì mình sẽ thủ công kiểu này vậy (những vẫn nhanh hơn là xài ctrl V, click chuột vào ô cần paste, ctrl V ^^)

(*) Macro chỉ hỗ trợ ít nhiều thôi;
Phần việc của bạn phải làm như sau:

Câu đang có ở [D2] là:

"XN g?ch ngói c?u du?ng (S? Xây D?ng HN)M? r?ng phân xu?ng g?ch ngói Mai lâm và khai thác d?t s?n xu?t phúc v? cho KHXDCB c?a Thành ph? T?i xã D?c tú huy?n Ðông Anh cv 403TC/QÐ 03.08.1997"

Việc của bạn là biến nó thành như dưới đây:  

"XN g?ch ngói c?u du?ng (S? Xây D?ng HN)@M? r?ng phân xu?ng g?ch ngói Mai lâm và khai thác d?t s?n xu?t phúc v? cho KHXDCB c?a Thành ph?@ T?i xã D?c tú huy?n Ðông Anh@ cv 403TC/QÐ@ 03.08.1997" 

( Việc này chỉ có thể làm bằng tay, không macro nào giúp bạn được!)

Sau khi nhập thêm toàn bộ '@' vô những chỗ cần thiết trong cột 'D' đó; Bạn cho chạy macro sau:

PHP:
Option Explicit
Sub TachTuNgu()
 Dim eRw As Long, jJ As Long:          Dim StrC As String
 Dim VTr As Byte, Col As Byte
 
 eRw = [c65500].End(xlUp).Row
 For jJ = 2 To eRw
   StrC = Cells(jJ, "D").Value & "@"
   Do
      VTr = InStr(StrC, "@")
      If VTr < 1 Then
         Exit Do
      Else
         Col = Col + 1
         Cells(jJ, Choose(Col, "E", "F", "G", "K", "L", "Y")).Value = Left(StrC, VTr - 1)
         StrC = LTrim(Mid(StrC, VTr + 1))
      End If
   Loop
   Col = 0
 Next jJ
End Sub

Bạn suy xét xem, công việc sẽ giảm thiểu đó chứ!

Sau cùng là việc chọn cột 'D' & vô menu Edit để thay toàn bộ '@' => " " (khoảng trắng)

Chúc bạn thành công! --=0 :-= --=0
 
(*) Macro chỉ hỗ trợ ít nhiều thôi;
Phần việc của bạn phải làm như sau:

Câu đang có ở [D2] là:

"XN g?ch ngói c?u du?ng (S? Xây D?ng HN)M? r?ng phân xu?ng g?ch ngói Mai lâm và khai thác d?t s?n xu?t phúc v? cho KHXDCB c?a Thành ph? T?i xã D?c tú huy?n Ðông Anh cv 403TC/QÐ 03.08.1997"

Việc của bạn là biến nó thành như dưới đây:

"XN g?ch ngói c?u du?ng (S? Xây D?ng HN)@M? r?ng phân xu?ng g?ch ngói Mai lâm và khai thác d?t s?n xu?t phúc v? cho KHXDCB c?a Thành ph?@ T?i xã D?c tú huy?n Ðông Anh@ cv 403TC/QÐ@ 03.08.1997"

( Việc này chỉ có thể làm bằng tay, không macro nào giúp bạn được!)

Sau khi nhập thêm toàn bộ '@' vô những chỗ cần thiết trong cột 'D' đó; Bạn cho chạy macro sau:

PHP:
Option Explicit
Sub TachTuNgu()
 Dim eRw As Long, jJ As Long:          Dim StrC As String
 Dim VTr As Byte, Col As Byte
 
 eRw = [c65500].End(xlUp).Row
 For jJ = 2 To eRw
   StrC = Cells(jJ, "D").Value & "@"
   Do
      VTr = InStr(StrC, "@")
      If VTr < 1 Then
         Exit Do
      Else
         Col = Col + 1
         Cells(jJ, Choose(Col, "E", "F", "G", "K", "L", "Y")).Value = Left(StrC, VTr - 1)
         StrC = LTrim(Mid(StrC, VTr + 1))
      End If
   Loop
   Col = 0
 Next jJ
End Sub
Bạn suy xét xem, công việc sẽ giảm thiểu đó chứ!

Sau cùng là việc chọn cột 'D' & vô menu Edit để thay toàn bộ '@' => " " (khoảng trắng)

Chúc bạn thành công! --=0 :-= --=0
Nếu đã có dấu hiệu nhận biết, ta dùng Split nhanh hơn chứ sư phụ!
 
Chứ Sờ Pờ lít gì đó có cho vô các cột cần thiết được ru?
Em nghĩ đâu có vấn đề gì chứ sư phụ!
Nếu dử liệu "chuẩn" (tức đủ 5 thành phần và có các dấu hiệu nhận biết) thì thậm chí có khỏi cần vòng lập nào cũng OK luôn ---> VBA cho phép gán 1 mãng vào 1 range mà! ---> Mà mãng ngang lại càng sướng (khỏi TRANSPOSE)
-----------------
Tránh chỗ để người khác làm ăn! khà,.. khà,. . . !--=0 :-= --=0
Sư phụ yên chí... em nói thế thôi chứ hứa là không "giật mối" đâu ---> Sư phụ cứ "mần ăn" thoải mái
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Sau khi nhập thêm toàn bộ '@' vô những chỗ cần thiết trong cột 'D' đó; Bạn cho chạy macro sau:
Ý kiến trên của Sư phụ em thấy rất hợp lý... nhưng lâu nay em vẩn thắc mắc:
- Nếu làm theo cách trên, tức ta (con người) phải tự tay điền dấu @ vào những chổ hợp lý
- Đương nhiên ta (con người) thừa khả năng làm điều này
- Vậy ta (con người) đã dựa vào nguyên tắc nào để tiến hành công việc vậy?
- Lý nào ta (còn người) làm được mà không hề biết mình đã dựa vào cái gì sao?
Cũng giống như bài toán tách tên phường xã, huyện, tỉnh từ 1 chuổi cho trước.. nếu làm bằng tay sẽ không có vấn đề, nhưng lại chả biết "dạy" cho máy "hiểu ý" ta bằng cách nào
Ý em muốn nói rằng: Nếu mình biết mình đã dựa vào nguyên tắc gì để làm thì đương nhiên mình có thể "dạy" cho máy làm giống như mình vậy!
Quả thật phi lý hết sức!
 
oái, cái bảng của mình nó kéo dài tới hơn 5000 dòng lận. Nếu mà thêm @ bằng tay để tách nhỏ từng đoạn text ra cho cả 5k dòng chắc mình chống gậy rùi @_@. Vì là dữ liệu ko có cái gì chung hết nên rất là củ chuối. Cho nên mình muốn hỏi là có cách nào chỉ việc bôi đen từng đoạn, nhấn nút bất kỳ (do mình đặt) là tự nó copypaste thẳng vô ô bao nhiêu đó trên cùng 1 hàng không. (Giờ mình vẫn đang bôi đen - Ctrl C - click sang ô bên cạnh - Ctrl V - bôi đen ......... <----- đúng là ác mộng)

Ý kiến trên của Sư phụ em thấy rất hợp lý... nhưng lâu nay em vẩn thắc mắc:
- Nếu làm theo cách trên, tức ta (con người) phải tự tay điền dấu @ vào những chổ hợp lý
- Đương nhiên ta (con người) thừa khả năng làm điều này
- Vậy ta (con người) đã dựa vào nguyên tắc nào để tiến hành công việc vậy?
- Lý nào ta (còn người) làm được mà không hề biết mình đã dựa vào cái gì sao?
Cũng giống như bài toán tách tên phường xã, huyện, tỉnh từ 1 chuổi cho trước.. nếu làm bằng tay sẽ không có vấn đề, nhưng lại chả biết "dạy" cho máy "hiểu ý" ta bằng cách nào
Ý em muốn nói rằng: Nếu mình biết mình đã dựa vào nguyên tắc gì để làm thì đương nhiên mình có thể "dạy" cho máy làm giống như mình vậy!
Quả thật phi lý hết sức!


bon chen tý ^^
THeo mình thì đấy là khả năng đọc hiểu (hoặc gọi là kinh nghiệm). Con người có khả năng đọc, ghi nhớ, hiểu,... ko như cái máy, nó là chỉ xử lý những gì được lập trình thôi.
Giả sử bạn tách : số nhà 123 ngõ abc phường xyz quận mno thành phố @#$ chẳng hạn. Thì con người (với kinh nghiệm của mình) có thể hiểu ngay 123 là số nhà, abc là ngõ, ..., còn máy thì không.

giả sử có bảng như dưới này (tất nhiên là rất lớn đi). Giao cho máy và người tìm 1 số bất kỳ, 100 chẳng hạn.

1 2 3 4 5 6 7 8 9
10 11 12 13 14 15
16 17 18 19 20 21
....................

- Máy sẽ dò từ đầu, hoặc từ cột hoặc hàng tùy phương pháp lập trình, nhưng nó vẫn phải dò.
-Con người sẽ bỏ qua rất nhiều hàng để nhìn tới hàng gần số 100 nhất



Trình còi nên chỉ dám phát ngôn thế thôi, khả năng diễn đạt của mình không tốt mong bạn thông cảm:D
 
Chỉnh sửa lần cuối bởi điều hành viên:
oái, cái bảng của mình nó kéo dài tới hơn 5000 dòng lận. Nếu mà thêm @ bằng tay để tách nhỏ từng đoạn text ra cho cả 5k dòng chắc mình chống gậy rùi @_@. Vì là dữ liệu ko có cái gì chung hết nên rất là củ chuối. Cho nên mình muốn hỏi là có cách nào chỉ việc bôi đen từng đoạn, nhấn nút bất kỳ (do mình đặt) là tự nó copypaste thẳng vô ô bao nhiêu đó trên cùng 1 hàng không. (Giờ mình vẫn đang bôi đen - Ctrl C - click sang ô bên cạnh - Ctrl V - bôi đen ......... <----- đúng là ác mộng)
Hình như không có cách nào chạy được code khi cell đang ở chế độ Edit đâu bạn à!
 
:.,:.,:.,:.,:.,:.,

vậy là vẫn phải ngồi ctrl C ctrl V từng chút một cho 5k dòng rồi

-+*/**~**-+*/**~**

Cảm ơn mọi người đã quan tâm

ps: àhh thế còn vụ replace ngày tháng năm thì như nào nhỉ.
Hiện giờ cái này cũng lung tung xà beng, mình xem qua qua thì có vô số kiểu: dd/mm/yy, dd-mm-yy, dd.mm.yy, lại còn d.m.yy, d-m-yy, ..... tóm lại là rất đa dạng, ngày tháng thì lúc 1 lúc 2 ký tự, năm cũng vậy, lúc để 2 số lúc để 4 số, phân tách bẳng đủ các loại dấu: /, -, .

Có cách nào để quy chúng nó về yyyy/mm/dd nhanh mà đỡ mất công gõ lại từng dòng không mọi người

Hình như không có cách nào chạy được code khi cell đang ở chế độ Edit đâu bạn à!
vậy có code nào để lấy dữ liệu từ buffer vào cell không bạn

nếu không chạy code khi đang edit thì sẽ làm thế này vậy: mình copy dữ liêu cần chuyển - nó sẽ được lưu vào buffer đúng ko - tạo ra 1 cái shotcut macro gì đó để paste thẳng vào ô mình mong muốn (cùng hàng, cột xác định a b c gì đó)

thì cái này giải quyết thế nào nhỉ.
trả lời giùm mình luôn câu hỏi về ngày tháng năm càng tốt :D
Thx.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình đề xuất thêm 1 phươg án, như vầy

(*) Tách thành nhiều trường (cột), mỗi cột 1 từ;
(*) Sau đó bạn dò từ trên cho đến hết dòng; chổ nào cần tách thì ấn vô bảng màu cho nó 1 màu nền
(Như vậy 1 tay (trái) xài mũi tên xuống, tay phải chọn cột & ấn chỉ đinh màu nền;)

Chẳng qua tìm thao tác sao vận trù học nhất mà thôi; tựu chung vẫn là thủ công.
 
À mình còn 1 câu hỏi nữa:
Ngày tháng năm (ngày QĐ) hiện tại rất lung tung ko hề theo chuẩn gì (do lỗi của việc nhiều người nhập mà không thống nhất từ đầu): dd/mm/yy, dd-mm-yy, dd/mm/yyyy, dd.mm.yy,..........tóm lại rất nhiều và rất .....loạn -+*/. Giờ cách nhanh nhất để chuyển về format yyyy/mm/dd là gì hả mọi người. Mình cũng nghĩ đến replace nhưng nhiều vấn đề quá mọi người giúp mình nhé
Thanks all}}}}}

OK, bây giờ bạn có thể thoải mái nhìn ngang liếc dọc với công thức tách ngày tháng cho bạn nhé!|||||%#^#$**~**--=0
 

File đính kèm

yay cảm ơn bác:D có cái này đỡ mệt rùi

/giờ đi ngủ tý đã lát check sau ^^
 
Web KT

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

Back
Top Bottom