NHG
Thành viên hoạt động
- Tham gia
- 15/1/07
- Bài viết
- 148
- Được thích
- 126
Bạn dùng thử code sauNHG đã viết:Cám ơn anhtuan đã giúp đỡ, nhưng bạn hiểu nhầm ý của mình rồi, bài toán ở đây không phải là sắp xêp dữ liệu theo thứ tự ABC hay 123 mà mình muốn kết hợp lần lượt cột đầu tiên với cột thứ hai, cột đầu tiên với cột thứ ba; cột đầu tiên với cột thứ năm. Và mình muốn dùng Macro vì File dữ liệu của mình rất lớn, dùng công thức e máy mình không tải nổi
Option Explicit
Dim i As Integer, j As Integer, rGet As Integer
Dim iRows As Integer, iCols As Integer
Const fR = 10 'Khai bao dong lay du lieu dau
Const fC = 7 'Khai bao cot lay du lieu dau
Sub Trich()
Sheet1.Select
Range("B5:E9").Name = "Data" 'Tao range Data
iRows = Range("Data").Rows.Count
iCols = Range("Data").Columns.Count
Range(Cells(fR, fC), Cells(1000, fC + 1)).ClearContents 'Xoa du lieu tu Cells(fr,fc)
For i = 1 To iRows
For j = 1 To iCols
rGet = j + iCols * (i - 1) + fR 'dong se lay du lieu
Cells(rGet, fC + 1) = Range("data").Cells(i, j)
Cells(rGet, fC) = i 'So TT
Next
Next
End Sub
ThuNghi đã viết:Bạn dùng thử code sau
mạn phép bạn ThuNghi mình sửa thế nàyOption Explicit
Dim i As Integer, j As Integer, rGet As Integer
Dim iRows As Integer, iCols As Integer
Const fR = 10 'Khai bao dong lay du lieu dau
Const fC = 7 'Khai bao cot lay du lieu dau
Sub Trich()
Sheet1.Select
Range("B5:E9").Name = "Data" 'Tao range Data
iRows = Range("Data").Rows.Count
iCols = Range("Data").Columns.Count
Range(Cells(fR, fC), Cells(1000, fC + 1)).ClearContents 'Xoa du lieu tu Cells(fr,fc)
For i = 1 To iRows
For j = 1 To iCols
rGet = j + iCols * (i - 1) + fR 'dong se lay du lieu
Cells(rGet, fC + 1) = Range("data").Cells(i, j)
Cells(rGet, fC) = i 'So TT
Next
Next
End Sub
đã đảm bảo đạt 100% yêu cầu của bài toánOption Explicit
Dim i As Integer, j As Integer, rGet As Integer
Dim iRows As Integer, iCols As Integer
Const fR = 10 'Khai bao dong lay du lieu dau
Const fC = 2 'Khai bao cot lay du lieu dau
Sub Trich()
Sheet1.Select
Range("B5:F9").Name = "Data" 'Tao range Data
iRows = Range("Data").Rows.Count
iCols = Range("Data").Columns.Count
Range(Cells(fR, fC), Cells(1000, fC + 1)).ClearContents 'Xoa du lieu tu Cells(fr,fc)
For i = 1 To iRows
For j = 2 To iCols
rGet = j - 1 + (iCols - 1) * (i - 1) + fR 'dong se lay du lieu
Cells(rGet, fC + 1) = Range("data").Cells(i, j)
Cells(rGet, fC) = i 'So TT
Next
Next
End Sub
NHG đã viết:Mình có một dữ liệu nguồn như sau:
1 A B C D E
2 F G H Y K
3 L M N O P
Mình muốn có một Macro để có dữ liệu đích như sau:
1 A
1 B
1 C
1 E
2 F
2 G
2 H
2 Y
2 K
...
Chi tiết mình gửi ở File đính kèm, các bạn giúp mình nhé
Bạn xem đã đúng ý chưa?Option Explicit
Dim i As Integer, j As Integer, rGet As Integer
Dim iRows As Integer, iCols As Integer
Const fR = 10 'Khai bao dong lay du lieu dau
Const fC = 2 'Khai bao cot lay du lieu dau
Sub Trich()
Sheet1.Select
Range("B5:F9").Name = "Data" 'Tao range Data
iRows = Range("Data").Rows.Count
iCols = Range("Data").Columns.Count
Range(Cells(fR, fC), Cells(1000, fC + 1)).ClearContents 'Xoa du lieu tu Cells(fr,fc)
For i = 1 To iRows
For j = 2 To iCols
rGet = j - 1 + (iCols - 1) * (i - 1) + fR 'dong se lay du lieu
Cells(rGet, fC) = Range("data").Cells(i, 1)
Cells(rGet, fC + 1) = Range("data").Cells(i, j)
Next
Next
End Sub
Bạn dùng code sauNHG đã viết:Cảm ơn các bạn đã giúp đỡ
Bây giừ bài toán của mình lại có một chút thay đổi các bạn nghiên cứu tiếp tục giúp mình nhé:
Sub DongCot()
Dim eCol As Integer, i As Integer, j As Integer, z As Integer
Sheet1.Select
Range("E19:F100").ClearContents
eCol = Range("AZ5").End(xlToLeft).Column - 1
z = 18
For i = 6 To 8
For j = 3 To eCol Step 2
If Cells(i, j) <> "" Then
z = z + 1
Cells(z, 5) = Cells(i, j)
Cells(z, 6) = Cells(i, j + 1)
End If
Next
Next
End Sub
NHG đã viết:Lại một bài toán nữa mà mình cần giải quyết các bạn giúp mình nhé, cũng là kết hợp dòng thành cột
NHG đã viết:Cảm ơn các bạn đã giúp đỡ
Bây giừ bài toán của mình lại có một chút thay đổi các bạn nghiên cứu tiếp tục giúp mình nhé:
Dữ liệu nguồn
cnc Linh cn1 Hoang cn5 Quân cn6 Thuy ccn Tuan
tcsx1 Lan tcsx2 Hà tcsx3 Quang tcsx4 Bình tcsx5 Minh
dx Anh dx2 Khánh dx1 Thịnh dx5 Nên dx7 Huỳnh
Dữ liệu đích
cnc Linh
cn1 Hoang
cn5 Quân
cn6 Thuy
ccn Tuan
tcsx1 Lan
tcsx2 Hà
tcsx3 Quang
tcsx4 Bình
tcsx5 Minh
dx Anh
dx2 Khánh
dx1 Thịnh
dx5 Nên
dx7 Huỳnh
NHG đã viết:Lại một bài toán nữa mà mình cần giải quyết các bạn giúp mình nhé, cũng là kết hợp dòng thành cột
Bạn xem lại bài: "dong thanh cot"NHG đã viết:Các bạn ơi còn yêu cầu này nữa:
Dữ liệu nguồn
[FONT=.VnTime]Gh-B-Bx-C-Cz-D-Dg-E-Ec[/FONT]
[FONT=.VnTime]Gk-F-Ft-Y-Ym-K-Kt-H-Ht[/FONT]
[FONT=.VnTime]Gy-O-Oj-P-Pk-L-Lm-N-Nj[/FONT]
[FONT=.VnTime]Du lieu dich[/FONT]
[FONT=.VnTime]Gh-B-Bx[/FONT]
[FONT=.VnTime]Gh-C-Cz[/FONT]
[FONT=.VnTime]Gh-D-Dg[/FONT]
[FONT=.VnTime]Gh-E-Ec[/FONT]
[FONT=.VnTime]Gk-F-Ft[/FONT]
[FONT=.VnTime]Gk-Y-Ym[/FONT]
[FONT=.VnTime]Gk-K-Kt[/FONT]
[FONT=.VnTime]Gk-H-Ht[/FONT]
[FONT=.VnTime]Gy-O-Oj[/FONT]
[FONT=.VnTime]Gy-P-Pk[/FONT]
[FONT=.VnTime]Gy-L-Lm[/FONT]
[FONT=.VnTime]Gy-N-Nj[/FONT]
Bạn dùng code sau:NHG đã viết:Các bạn sửa lại code giúp mình với:
http://i258.photobucket.com/albums/hh275/hgiang0101/Exceldongthanhcot.jpg
Sub DongCot()
Dim eCol As Integer, i As Integer, j As Integer, z As Integer
Sheet1.Select
Range("G12:I100").ClearContents
eCol = Range("AZ5").End(xlToLeft).Column - 1
z = 11
For i = 5 To 7
For j = 2 To eCol Step 2
If Cells(i, j + 1) <> "" And Cells(i, j + 2) <> "" Then
z = z + 1
Cells(z, 7) = Cells(i, 2)
Cells(z, 8) = Cells(i, j + 1)
Cells(z, 9) = Cells(i, j + 2)
End If
Next
Next
End Sub