Insert thêm dòng & kết hợp 2 sheet

Liên hệ QC

how_nice

Thành viên mới
Tham gia
1/10/06
Bài viết
9
Được thích
1
Mình có một sheet bao gồm rất nhiều dòng dữ liệu, nhưng bây giờ mình muốn insert thêm dòng ở dưới mỗi dòng dữ liệu đã có, để điền thông tin vào dòng mới này từ một sheet khác.

(VD: mình có một sheet gồm các dòng bằng Tiếng Việt, một sheet bằng Tiếng Anh. Bây giờ mình muốn kết hợp 2 sheet này vào (với tiếng việt ở dòng trên, tiếng Anh ở dòng dưới)

Các bạn có ai biết làm thế nào thì nhanh ko, vì nếu phải insert từng dòng bằng cách chon từng dòng rồi Insert row thì lâu quá.
 
Không Copy được à bạn ? Hay nhất thiết phải chèn dòng ???
 
Theo tôi bạn làm thế này
Tại sh Việt bạn thêm 1 cột và cho số TT là 1, 2, 3,....n
Tại sh English bạn thêm 1 cột và cho số TT là 1a, 2a, 3a,....na
Copy 2 sh vào 1 sh Trộn, sh Việt đến sh Eng, sort theo số TT, sau đó bỏ số TT là OK
 
Dùng VBA đi các bạn. Dùng chức năng record macro đi ghi thành code. Sau đó chỉnh lại chút đỉnh.
 
Mình chỉ thấy đơn giản và tiện thì làm thôi.
Vì nếu không dùng VBA, phải thêm cột và nhiều thao tác mất công quá.Trong khi trong tay mình có " công cụ tuyệt vời" tại sao không dùng ?
 
Lần chỉnh sửa cuối:
ThuNghi đã viết:
Theo tôi bạn làm thế này
Tại sh Việt bạn thêm 1 cột và cho số TT là 1, 2, 3,....n
Tại sh English bạn thêm 1 cột và cho số TT là 1a, 2a, 3a,....na
Copy 2 sh vào 1 sh Trộn, sh Việt đến sh Eng, sort theo số TT, sau đó bỏ số TT là OK

Được đấy.
Cũng là thế này nhưng tự động hóa bằng VBA thì tiện hơn.
Thân!
 
Chào các bạn,

Mình thấy cách của ThuNghi rất dễ hiểu --> newbie của Excel cũng có thể làm được. Cái gì cũng đòi VBA thì không cần thiết, theo mình nghĩ chỉ nên dùng VBA trong trong trường hợp bất khả kháng !.

Thân,
TP.
 
/_ời hiệu triệu của CFC:

Chào các bạn, chỉ nên dùng VBA trong trong trường hợp bất khả kháng !.
Ai có đủa xài đủa, Ai có muỗng dùng muỗng, Ai không có cái này lẫn cái kia thí xắn tay áo lên bốc ta ơi!--=0

&ui &ậy thôi, chứ nêu nhiều cách để mọi người cùng tham khảo cũng tốt mà!

Êxcel là bữa tiệt hoành tráng: Rất nhiều món ngon, vật lạ cho mọi người, kể cả khó tính! (huyện đâu còn có đó, ta phán xét hay không thì 'Người ta' cũng vẫn là 'Người ta' mà thôi!
 
Mình xin trình bày thêm một số ý kiến với tinh thần cầu học, mong các bạn góp ý thêm:
-Trong quá trình học VBA, mình nhận thấy VBA là công cụ rất mạnh giúp người dùng làm các thao tác trên Excel như: chèn dòng, ô, sao chép, lọc dữ liệu, kẻ ô bảng tính...nói chung là những thao tác không liên quan đến công thức và hàm mà ta thường phải làm bằng thủ công. Theo mình dùng VBA để tự động hoá các thao tác thủ công ấy là rất cần thiết.
-Mình có suy nghĩ khác với bạn ttphong2007: Nếu ta không tập làm với VBA thì làm sao học VBA tiến bộ được. Thế nên, cái gì mình cũng dùng VBA để giải quyết trước. Nếu không được( phần lớn là do trình độ ), thì mới chấp nhận làm theo kiểu thủ công.
-Trong trường hợp trên, mình không phủ nhận cách làm của bạn ThuNghi .Nhưng giả sử như ta có khoảng vài chục cái bảng tính như thế thì các bạn giải quyết thế nào?
 
voda đã viết:
Dùng VBA đi các bạn. Dùng chức năng record macro đi ghi thành code. Sau đó chỉnh lại chút đỉnh.
Bạn đã có lòng thì cụ thể hóa ra luôn, trưng lên diễn đàn cho những người lơ mơ vb như mình được có cơ hội học hỏi luôn / Thanks !
 
Nếu o muốn thêm cột stt thì làm cách này
ta có sh1, sh2, ....
tại sh3 ta muốn có
A1 là A1 của sh1='Sh1'!A1
A2 là A1 của sh2'=Sh2'!A1
A3 là A2 của sh1='Sh1'!A2
A4 là A2 của sh2'=Sh2'!A2
Sau đó copy kéo xuống như kiểu tạo số TT là OK, Copy cột A sang B....X
Còn dùng VBA cũng dễ thôi, nhưng dù thế nào bạn cũng phải có thuật tóan => Code
 
VBA là gì vậy các bạn?bạn nào có thể cho mình biết với, nghe chừng rất tiện ích.cám ơn nhiều
 
ThuNghi đã viết:
Theo tôi bạn làm thế này
Tại sh Việt bạn thêm 1 cột và cho số TT là 1, 2, 3,....n
Tại sh English bạn thêm 1 cột và cho số TT là 1a, 2a, 3a,....na
Copy 2 sh vào 1 sh Trộn, sh Việt đến sh Eng, sort theo số TT, sau đó bỏ số TT là OK

Mình đã copy toàn bộ sheet tiếng Việt rồi paste xuống dưới của sheet T.Anh, sau đó sort; nhưng mình vẫn thấy xếp là 1,2,3..n,1a,2a,...na. Làm thế nào để là 1,1a,2,2a,..n.na ???
 
how_nice đã viết:
Mình đã copy toàn bộ sheet tiếng Việt rồi paste xuống dưới của sheet T.Anh, sau đó sort; . . .
Thực ra, bạn TNghi đề nghị chúng ta làm thế này:
(Tiếng Việt trên tiếng Anh:)

Thêm 2 cột A,B vô Sheets("Eng")
Cột B mới thêm được quýnh số TTự 1,2,. . . . .
Cột A bạn lập hàm (tại A1), như sau: =Right("0000" & B1, 4) & "B";

Cũng tương tự như vậy với Sheets("VN"), chỉ # chăng là thay vì kí tự "B" ta chọn nguyên âm đầu bảng;

Sau khi chép Sheets("Eng") sang Sheets("VN") ta sort & ngía kết quả ưng í chửa?!?
 
Sorry How_nice nhé! Do sơ suất nên chỉ chưa hơi thiếu sót. Bạn làm cáh như anh SA_DQ là OK, nếu thấy khó khăn thì bạn đánh số TT như sau
Sh VN bạn chọn TT là 1,3,5...2n+1
Sh Eng bạn chọn TT là 2,4,6...2n
Sh VN-En thì sau khi sort số TT là 1,2,3,4...2n. 2n+1
Chúc bạn làm được. Chúc thứ bảy trời mưa vui vẻ
 
how_nice đã viết:
Mình đã copy toàn bộ sheet tiếng Việt rồi paste xuống dưới của sheet T.Anh, sau đó sort; nhưng mình vẫn thấy xếp là 1,2,3..n,1a,2a,...na. Làm thế nào để là 1,1a,2,2a,..n.na ???

Do 1,2,3. . . là số
1a, 2a . . là ký tự

Số đứng trước ký tự là đúng rồi.

Muốn theo thứ tự thì trước khi lọc bạn phải cho các dấu hiệu lọc đồng nhất : Là số, là ký tự, là ngày . . .

Thân!
 
how_nice đã viết:
Mình có một sheet bao gồm rất nhiều dòng dữ liệu, nhưng bây giờ mình muốn insert thêm dòng ở dưới mỗi dòng dữ liệu đã có, để điền thông tin vào dòng mới này từ một sheet khác.

(VD: mình có một sheet gồm các dòng bằng Tiếng Việt, một sheet bằng Tiếng Anh. Bây giờ mình muốn kết hợp 2 sheet này vào (với tiếng việt ở dòng trên, tiếng Anh ở dòng dưới)

Các bạn có ai biết làm thế nào thì nhanh ko, vì nếu phải insert từng dòng bằng cách chon từng dòng rồi Insert row thì lâu quá.

Chào bạn,

Bạn hãy làm theo cách của ThuNghi, còn muốn sử dụng VBA thì đây là đoạn mã ghép các dòng xen kẽ nhau từ nhiều sheet lấy dữ liệu từ nhiều sheet do bạn qui định. Xem tập tin Ví dụ để biết cách sử dụng.

Sub MergeSheets()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim Socotcanlay As Integer
Dim Sodongcanlay As Integer
Dim SoSheet As Integer
Dim TenSheetKetqua As String

TenSheetKetqua = "Ketqua" 'Chen them Sheet moi dat ten giong o day
Sodongcanlay = 65 'So dong can lay tren moi sheet
Socotcanlay = 5 'So cot can lay tren moi sheet
SoSheet = 2 'So Sheet can merge xen ke dong voi nhau Khi co nhieu ngon ngu hon 2

'Gia su dong dau tien la tieu de, bat dau merge tu dong 2

With Sheets(TenSheetKetqua)
k = 2
For i = 2 To Sodongcanlay
For m = 1 To SoSheet
For j = 1 To Socotcanlay
.Cells(k, j).Value = Sheets(m).Cells(i, j)
Next j
k = k + 1
Next m
Next i
End With
End Sub

Bạn có thể sử dụng mã này cho nhiều hơn 2 ngôn ngữ. Lưu ý đặt sheet Ketqua ở cuối trên thanh Sheet tab, các sheet cần ,merge để lên phía trước.
 

File đính kèm

  • Province.zip
    14.9 KB · Đọc: 74
Thử xem sao

Bạn có thể viết một macro để thực hiện rất dễ dàng sau đây là một ví dụ: bạn chỉ cần chèn một module và paste vào là có thể sử dụng được:
Ví dụ:

Trước khi chạy macro ta có table:
Name Address Telephone
Nguyen Van A x 54584854
Nguyen Van B y 54584854
Nguyen Van c z 54584854

sau khi chạy macro ta có table:
Name Address Telephone
Nguyen Van A x 54584854

Nguyen Van B y 54584854

Nguyen Van c z 54584854

Trong macro này hàng đầu tiên không insert, bạn có thể sửa lại theo ý mình

Nếu bạn cần chèn càng nhiều hàng thì bạn có thể thay đổi biến counter lớn hơn.

Sub InsertRow()
Dim i As Integer
Dim counter As Integer
counter = 500
'----------Insert row---------------------------
For i = 3 To counter Step 2
Rows(i).Select
Selection.Insert Shift:=xlDown
Next i
End Sub



bigok.gif

Tay rượu Tay Đao,
Đầu Ngẳng Cao Ta Bước
Trên Đường Đời Ai Cản Được Ta
 
Các bạn thử khoảng 10.000->20.000 dòng xem thấy chạy thế nào ?? Hơi bị chậm đấy.

Xem rằng làm theo ông Excel có lẽ nhanh hơn.

Thân!
 
Đây là File của MrPhong. Cảm ơn Mr nhiều. Mình chế lại cho nó giống con nhà Excel thôi.

các bạn xem có nhanh hơn không nhé.

Thân!
 

File đính kèm

  • Province.7z
    69.5 KB · Đọc: 97
Web KT
Back
Top Bottom