Xoay Ngang Dữ Liệu

Liên hệ QC

ZzNHCzZ

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
8/5/08
Bài viết
166
Được thích
44
Nghề nghiệp
Hàng Không
Em lại gặp rắc rối với việc xoay ngang dữ liệu. Mong anh chị có cáo kiến giúp em.
Dữ liệu của em được Copy từ Web xuống, hiện đang thể hiện theo dọc. Bây giờ em muốn làm cách để xoay ngang dữ liệu lại.
Em nghĩ chắc phải dùng tới VBA mới nổi.
Vì dữ liệu các trường lúc ngắn lúc dài.

Em gửi file anh chị xem giúp em. Em chân thành cám ơn.
Thân!
 
Lần chỉnh sửa cuối:
Em lại gặp rắc rối với việc xoay ngang dữ liệu. Mong anh chị có cáo kiến giúp em.
Dữ liệu của em được Copy từ Web xuống, hiện đang thể hiện theo dọc. Bây giờ em muốn làm cách để xoay ngang dữ liệu lại.
Em nghĩ chắc phải dùng tới VBA mới nổi.
Vì dữ liệu các trường lúc ngắn lúc dài.

Em gửi file anh chị xem giúp em. Em chân thành cám ơn.
Thân!

Chắc phải dùng VBA thôi, Đã thử dùng công thức cho kết quả đẹp nhưng tốc độ chậm quá
 
Mong anh chị giúp em bài này! Em làm tay oải quá.
5000 dòng dữ liệu chắc chết mất.

Thân!
 
Bạn đưa dữ liệu 5000 dòng lên đi, chứ ít quá nhiều khi tạo form không chuẩn theo logic
  1. File Nặng em đưa ko nổi.
  2. Anh copy dữ liệu của em x10 là đủ Test mà.
  3. Cấu trúc và tên các trường ko thay đổi. Chỉ thay đổi dữ liệu của trường.
Cám ơn anh!
Thân!
 
Bạn khẵng định lại giúp về độ dài thay đổi của các trường

[Corporate Travel], [Leisure Travel], [Products] & [Destinations:]
là thay đổi số dòng thôi phải không?!
Các trường còn lại chỉ chiếm 1 dòng trong 1 records, phải không?
Người ta nói 3 cây chụm lại mới nên hòn núi cao, cũng sẽ đúng một khi bạn đưa lên chí ít 3 record đặt trưng;
Nếu không làm đã một hồi lại thay đổi thì ai cũng nản lắm!
Tóm lại trong 1 record, các mục nào nhiều hơn 1 dòng thì cho bọn này biết, bằng cách:
* Chỉ tô màu nền cho chúng riêng mà thôi; (Cần lưu í rằng chớ lạm dụng màu sắc, nhưng chưa làm nổi bậc những điều mình muốn thông tin cho người khác.)
* Toàn bộ là bao nhiêu trường, trường đầu & trường cuối là bất biến?!
@$@!^%:-=}}}}}--=--
 
[Corporate Travel], [Leisure Travel], [Products] & [Destinations:]
là thay đổi số dòng thôi phải không?!
Các trường còn lại chỉ chiếm 1 dòng trong 1 records, phải không?
Người ta nói 3 cây chụm lại mới nên hòn núi cao, cũng sẽ đúng một khi bạn đưa lên chí ít 3 record đặt trưng;
Nếu không làm đã một hồi lại thay đổi thì ai cũng nản lắm!
Tóm lại trong 1 record, các mục nào nhiều hơn 1 dòng thì cho bọn này biết, bằng cách:
* Chỉ tô màu nền cho chúng riêng mà thôi; (Cần lưu í rằng chớ lạm dụng màu sắc, nhưng chưa làm nổi bậc những điều mình muốn thông tin cho người khác.)
* Toàn bộ là bao nhiêu trường, trường đầu & trường cuối là bất biến?!

  1. Tổng cộng có 22 trường. Vị trí và tên các trường không thay đổi
  2. 9 trường đầu (Name -> Company Website) dữ liệu chỉ có 1 dòng
  3. Các trường còn lại dữ liệu nhiều hơn 1 dòng.
  4. Cấu trúc dữ liệu tại sheet Data không thay đổi.
Em chân thành cám ơn tất cả anh chị!
Thân!
 
  1. Tổng cộng có 22 trường. Vị trí và tên các trường không thay đổi
  2. 9 trường đầu (Name -> Company Website) dữ liệu chỉ có 1 dòng
  3. Các trường còn lại dữ liệu nhiều hơn 1 dòng.
  4. Cấu trúc dữ liệu tại sheet Data không thay đổi.
Em chân thành cám ơn tất cả anh chị!
Thân!
Tôi nghĩ bạn chưa biết cách lấy dữ liệu từ web, nếu đã có report như vậy thì chắc sẽ có cấu trúc khác.
Còn đây tôi hệ thống lại sơ, lấy ra các filed duy nhất, may mà tên field không trùng.
Các Bác xử lý tiếp hộ em.
Dùng 1 cột phụ để lấy STT là OK.
 

File đính kèm

  • Du Lieu.xls
    53 KB · Đọc: 35
Ban thử dung Paste Special xem sao ? Bạn copy cột đó => vào Paste Special rồi click vào ô Transpose là xong.
Nhưng chỉ có một điều là khi chuyển sang dòng ngang thi số cột Excel lại hạn chế.
 
Ban thử dung Paste Special xem sao ? Bạn copy cột đó => vào Paste Special rồi click vào ô Transpose là xong.
Nhưng chỉ có một điều là khi chuyển sang dòng ngang thi số cột Excel lại hạn chế.
Cách này chỉ có thể chuyển từ 1 cột thành 1 hàng, hoặc 1 hàng thành 1 cột thôi, bạn ơi!
 
Cách này chỉ có thể chuyển từ 1 cột thành 1 hàng, hoặc 1 hàng thành 1 cột thôi, bạn ơi!
Cách này có thể chuyển table1 (m dòng, n cột) thành table2 (n dòng, m cột).
nhưng cũng không đáp ứng yêu cầu của topic.
 
Vậy bây giờ phải làm sao ạ? :.,
Các anh có cao kiến gì không ah?
 
  1. Tổng cộng có 22 trường. Vị trí và tên các trường không thay đổi
  2. 9 trường đầu (Name -> Company Website) dữ liệu chỉ có 1 dòng
  3. Các trường còn lại dữ liệu nhiều hơn 1 dòng.
  4. Cấu trúc dữ liệu tại sheet Data không thay đổi.
Em chân thành cám ơn tất cả anh chị!
Thân!

Cho mình hỏi thêm là trường "Corporate Travel" luôn có 2 dòng à, có khi nào 3,5.. không?
Leisure Travel luôn có 6 dòng a?
 
Cho mình hỏi thêm là trường "Corporate Travel" luôn có 2 dòng à, có khi nào 3,5.. không?
Leisure Travel luôn có 6 dòng a?
  1. 9 trường đầu (từ Name -> đến Company Website) dữ liệu chỉ có 1 dòng
  2. Các trường còn lại dữ liệu nhiều hơn 1 dòng (Không xác định được, lúc nhiều lúc ít)
Thân!
 
Bạn chạy thử thủ tục này
Mã:
Sub ChuyenDuLieu()
Dim DT As Worksheet, KQ As Worksheet, Ten As Range
Dim LisDt()
Dim r As Long, rc As Long, rDt1 As Long, rDt2 As Long, r1 As Long, r2 As Long
Dim rKQ As Long, Stt As Long, cKQ As Long
LisDt = Array("", "Name:", "Company Name:", "Designation:", "Telephone:", "Fax:", "Email:", "Company Address:", "Country:", "Company Website:", "Inbound Business:", "Outbound Business:", "No. Consultants:", "No. Tours:", "No. People per Tour:", "Average Length of Stay:", "Totle Air Tickets:", "Hotel Rooms Booked:", "Corporate Travel:", "Leisure Travel:", "Services:", "Products:", "Destinations:")
ThisWorkbook.Activate
Set DT = Sheets("data")
Set KQ = Sheets("KQ")
KQ.Select
Range(Cells(3, 1), Cells(Cells.Rows.Count, 22)).ClearContents
DT.Select
rc = Cells(Cells.Rows.Count, 2).End(xlUp).Row
rDt1 = 1
rDt2 = rc
rKQ = 3
Stt = 1
Do
  Set Ten = Range(Cells(rDt1, 1), Cells(rDt2, 1))
  For cKQ = 1 To UBound(LisDt)
    [B]r1 = Ten.Find(What:=LisDt(cKQ), After:=Cells(rDt1, 1)).Row[/B]
    If cKQ < UBound(LisDt) Then
      r2 = Ten.Find(What:=LisDt(cKQ + 1), After:=Cells(rDt1, 1)).Row - 1
    Else
      r2 = Cells(r1, 2).End(xlDown).Row
    End If
    For r = r1 To r2
      KQ.Cells(rKQ + (r - r1), cKQ) = DT.Cells(r, 2)
    Next
  Next
  If Stt Mod 2 = 1 Then
    Range(KQ.Cells(rKQ, 1), KQ.Cells(rKQ + (r - r1) - 1, 22)).Font.ColorIndex = 3
  Else
    Range(KQ.Cells(rKQ, 1), KQ.Cells(rKQ + (r - r1) - 1, 22)).Font.ColorIndex = 11
  End If
  Stt = Stt + 1
  rKQ = rKQ + (r - r1)
  rDt1 = r2 + 1
  If rDt1 > rc Then Exit Do
Loop
Set DT = Nothing
Set DT = Nothing
End Sub
Để dùng find xác định dòng, nên bảng DATA tôi đã chỉnh lại: dòng 1 là tiên đề, từ dòng 2 trở đi là dữ liệu. Mỗi nhóm dữ liệu cách nhau 1 dòng.
|A|B|
1|Tên cột|Nội dung|
2|Name:|Mario Scozia|
3|Company Name:|A&A S.E ASIA TOURS.LTD|
4|Designation:|manager|
5|Telephone:|001 312 6290100|
6|Fax:|001 312 6290110|
7|Email:|sales@aaholidays.com|
8|Company Address:|39 South Lasalle Str,#1424,Chicago, Il 60603 USA|
9|Country:|USA|
10|Company Website:||
11|Company Details||
12|Inbound Business:|0|
13|Outbound Business:|90|
14|No. Consultants:|Under 20|
15|No. Tours:|Over 200|
16|No. People per Tour:|01/10/1940|
17|Average Length of Stay:|4-7 days|
18|Totle Air Tickets:|1,000-3,000|
19|Hotel Rooms Booked:|Under 20,000|
20|Business||
21|Corporate Travel:|Incentive Travel|
22||Specialised tours for corporate|
 

File đính kèm

  • Du Lieu_2.xls
    66 KB · Đọc: 24
PhamDuyLong cho em hỏi:
  1. Làm cách nào để chuyển tên Cột A thành Cột 1? Và mục đích anh chuyển trong file để làm gì vậy ah?
  2. Macro Ghep() để làm gì vậy anh?
Em đang Test thử File, có gì sẽ báo anh.
Thân!
 
1.Bạn vào Tools -> Options -> thẻ General -> bỏ/chọn mục R1C1 reference style -> OK
2.Macro Ghep chỉ để bác ấy thử nghiệm công thức thôi không có gì đâu bạn!
Thân.
 
Chắc phải dùng VBA thôi, Đã thử dùng công thức cho kết quả đẹp nhưng tốc độ chậm quá

Như đã nói ở trên (bài #2) Dùng công thức cho bài này là quá chậm​

Nhưng em mạnh dạn đưa lên không phải để áp dụng mà để các bác xem xét, tìm cách tăng tốc giúp hoặc chuyển thể thành VBA thì tính khả thi sẽ cao hơn
 

File đính kèm

  • Du Lieu.rar
    10.7 KB · Đọc: 22
PhamDuyLong cho em hỏi:
  1. Làm cách nào để chuyển tên Cột A thành Cột 1? Và mục đích anh chuyển trong file để làm gì vậy ah?
  2. Macro Ghep() để làm gì vậy anh?
Em đang Test thử File, có gì sẽ báo anh.
Thân!
1. Thường tôi dùng địa chỉ ô trong VBA là Cells(dòng, stt cột) nên chuyển cột A, B, C thành 1, 2, 3 cho dễ xác định stt cột.
2. Macro Ghep dùng để nối các tên cho mảng LisDt = Array("", "Name:", "Company Name:", "Designation", ...) cho nhanh. Các module 2, 3 chỉ dùng tạm. ZzNHCzZ có thể xóa đi (tôi quên xóa trước khi gởi)
Nhưng em mạnh dạn đưa lên không phải để áp dụng mà để các bác xem xét, tìm cách tăng tốc giúp hoặc chuyển thể thành VBA thì tính khả thi sẽ cao hơn
Viết bằng hàm Excel mà chuyển được như vậy thật bái phục. Trước đây không hề nghĩ công thức Excel mà làm được như vậy !
 
Web KT
Back
Top Bottom