trợ giúp xuất sắc
Xin chào,
Tôi cần chuyển đổi bảng
Giả vờ có cái này
1 | 50 | 100 | 156 | 200 |
2 | 12 | 20 | 30 | 40 |
3 | 30 | 60 | 80 | 300 |
4 | 15 | 25 | 35 | 85 |
Tôi phải biến đổi như thế này
1 | 50 |
1 | 100 |
1 | 156 |
1 | 200 |
2 | 12 |
2 | 20 |
2 | 30 |
2 | 40 |
3 | 30 |
3 | 60 |
3 | 80 |
3 | 300 |
4 | 15 |
4 | 25 |
4 | 35 |
4 | 85 |
Sử dụng chức năng gì?
Cảm ơn
Trả lời:
Tham khảo hình ảnh bên dưới:
Nhập công thức dưới đây vào ô A9 và sao chép:
=IFERROR(IF(COUNTIF(A$8:A8,A8)<IFERROR(MAX(MATCH(A8,$A$2:$A$5,0),4),0),A8,INDEX($A$2:$A $5,MATCH(0,INDEX(COUNTIF(A$8:A8,$A$2:$A$5),0,0),0))),"")
Nhập công thức dưới đây vào ô B9 và sao chép:
=IF($A9="","",OFFSET(INDEX($B$2:$E$2,MOD(ROW()-ROW($A$9),4)+1),ROUNDUP((ROW()- HÀNG($A$9)+1)/4,0)-1,))
LUÂN PHIÊN:
Tham khảo hình ảnh bên dưới - thay thế nếu bạn muốn kết quả của mình trong một trang tính riêng:
Nhập công thức dưới đây vào ô A2 và sao chép:
=IFERROR(IF(COUNTIF(A$1:A1,A1)<IFERROR(MAX(MATCH(A1,Sheet1!$A$2:$A$5,0),4),0),A1,INDEX(Sheet1!$A $2:$A$5,MATCH(0,INDEX(COUNTIF(A$1:A1,Sheet1!$A$2:$A$5),0,0),0))),"")
Nhập công thức dưới đây vào ô B2 và sao chép:
=IF($A2="","",OFFSET(INDEX(Sheet1!$B$2:$E$2,MOD(ROW()-ROW($A$2),4)+1),ROUNDUP((ROW( )-ROW($A$2)+1)/4,0)-1,))
Bạn có thể tải xuống tệp excel từ liên kết bên dưới trong đó điều này đã được minh họa:
http://globaliconnect.com/excel/Microsoft/DownloadFiles/Repeat_Transpose_SpecificTimes_1.xlsx
Trân trọng,
Amit tandon
www.globaliconnect.com
Trả lời:
Cảm ơn bạn đã phát lại của bạn.
Nó hoạt động tốt. Nhưng, cụ thể hơn, tình hình thực tế là như thế này
HF102 | D69.3 | E06.1 | E27.1 | G35 | H16.0 | H16.1 |
HF098 | D69.3 | E06.1 | E27.1 | G35 | ||
HF131 | D69.3 | E06.1 | E27.1 | G35 | H16.0 | H16.1 |
HF104 | D69.3 | E06.1 | E27.1 | |||
HF105 | D69.3 | E06.1 | E27.1 | G35 | G70.0 | J45.0 |
JF517 | D80.1 | D80.2 | D80.3 | D80.4 | ||
JF518 | D80.1 | D80.2 | ||||
JF519 | D80.1 | D80.2 | D80.3 | D80.4 | D80.5 | D80.6 |
JF520 | D80.1 | D80.2 | D80.3 | D80.4 | D80.5 | D80.6 |
JF521 | D80.1 | D80.2 | D80.3 | D80.4 | D80.5 | D80.6 |
JF522 | D80.1 | D80.2 | D80.3 | D80.4 | D80.5 | D80.6 |
Tôi có khoảng 1600 hàng, các hàng này phải được nhân lên theo số cột mà tôi có các giá trị. Một số hàng có một hoặc hai cột, một số có tới 60 cột.
Đối với hàng đầu tiên ở trên, tôi phải thực hiện 6 hàng bắt đầu bằng HF102 và đối với mỗi hàng trong cột thứ hai D69.3, E06.1, v.v.
Đối với hàng bắt đầu bằng JF518, tôi phải thực hiện 2 hàng bắt đầu bằng JF518 và cho mỗi hàng trong cột thứ hai D80.1, D80.2
Trả lời:
Sử dụng các công thức bên dưới trong Trang tính 2 (giả sử dữ liệu của bạn nằm trong Trang tính 1, "A2:AZ1000"):
Nhập công thức dưới đây vào ô A2 và sao chép:
=IFERROR(IF(COUNTIF(A$1:A1,A1)<IFERROR(SUMPRODUCT(--((LEN(Sheet1!$B$2:$AZ$1000)>0)*(ROW(Sheet1!$B$2:$AZ $1000)-ROW(Sheet1!$B$2)+1)=MATCH(A1,Sheet1!$A$2:$A$1000,0))),0),A1,INDEX(Sheet1!$A$2:$A$1000 ,MATCH(0,INDEX(COUNTIF(A$1:A1,Sheet1!$A$2:$A$1000&""),0,0),0))&""),"")
Nhập công thức dưới đây vào ô B2 và sao chép:
=IF(A2="","",OFFSET(Sheet1!$B$2,MATCH($A2,Sheet1!$A$2:$A$1000,0)-1,COUNTIF(A$2:A2,A2)-1 ))
Bạn có thể tải xuống tệp excel từ liên kết bên dưới trong đó điều này đã được minh họa:
http://globaliconnect.com/excel/Microsoft/DownloadFiles/Repeat_Transpose_SpecificTimes_2.xlsx
Điều này sẽ tự động tính toán số lượng cột đối với ô đầu tiên của mỗi hàng sao cho một số hàng có thể có 1 hoặc 2 cột trong khi một số có thể có 25. Tuy nhiên, do có nhiều phép tính nên quá trình xử lý có thể trở nên phức tạp đối với một số lượng lớn bản ghi. chậm. Trong trường hợp đó, bạn có thể sử dụng mã vba như sau:
Nhập mã bên dưới vào một mô-đun tiêu chuẩn:
Sub RowsToColumn()
'Các giá trị trong mỗi hàng của Sheet1 (B2 cho đến giá trị cuối cùng của hàng 2) sẽ được hiển thị trong cột B _
của Sheet2 trong mỗi hàng liên tiếp
'Các giá trị của Cột A (Trang tính 1) sẽ hiển thị trong cột A (Trang tính 2), chỉ khi bất kỳ giá trị Nhóm nào là _
có mặt trong cùng một hàng
Dim wsSource dưới dạng trang tính, wsDest dưới dạng trang tính
Dim lastRow As Long, lastCol As Long, rSource As Long, rDest As Long, c As Long
Đặt wsSource = Sheets("Sheet1")
Đặt wsDest = Sheets("Sheet2")
'nhập tiêu đề vào hàng đầu tiên của Sheet2, sau khi xóa tất cả nội dung của trang tính
Với wsDest
.Cells.ClearContents
.Range("A1") = "Tên"
.Range("B1") = "Nhóm"
.Range("A1:B1").Font.Bold = True
Kết thúc với
'xác định hàng cuối cùng trong cột A của Sheet1
lastRow = wsSource.Range("A" & Rows.Count).End(xlUp).Row
rDest = 2
Đối với rSource = 2 Đến hàng cuối cùng
'xác định cột cuối cùng trong mỗi hàng của Sheet1
lastCol = wsSource.Cells(rSource, Columns.Count).End(xlToLeft).Column
Nếu lastCol > 1 Thì
Với c = 2 Đến lastCol
wsDest.Cells(rDest, 1) = wsSource.Cells(rSource, 1)
wsDest.Cells(rDest, 2) = wsSource.Cells(rSource, c)
'tăng hàng trong Sheet2 cho mục nhập tiếp theo
rDest = rDest + 1
Tiếp theo c
kết thúc nếu
rSource tiếp theo
'tự động khớp các cột của Sheet2
wsDest.Columns.AutoFit
kết thúc phụ
Bạn có thể tải xuống tệp excel từ liên kết bên dưới trong đó điều này đã được minh họa:
http://globaliconnect.com/excel/Microsoft/DownloadFiles/Repeat_Transpose_SpecificTimes_2.xlsm
Trân trọng,
Amit tandon
www.globaliconnect.com
Trả lời:
CHÀO
Có một cách dễ dàng hơn và nhanh hơn để làm điều này:
Sử dụng Get & Transform (đối với Excel 2016) hoặc Power Query (đối với Excel 2010/2013).
Tải bảng bằng cách sử dụng tùy chọn nhập 'từ bảng' (trong cùng một sổ làm việc), trình soạn thảo truy vấn sẽ mở ra và trong đó, hãy chọn cột đầu tiên, chuyển đến dải băng Chuyển đổi và trên nút tách 'Unpivot Column', chọn ' Unpivot Other Columns ', điều này sẽ tạo cho bạn bảng bạn cần (bạn có thể xóa thêm một cột).
Việc chọn 'Tải vào' ở giai đoạn này sẽ đóng trình soạn thảo truy vấn và sẽ tạo một bảng như vậy trong sổ làm việc của bạn.
Bạn có thể tìm thấy chức năng này trong Excel 2016 trong dải băng Dữ liệu -> Nhận & Chuyển đổi hoặc trong Excel 2010/2013 trong dải băng Power Query (để tải xuống và cài đặt Phần bổ sung Power Query cho Excel 2010/2013, hãy truy cập tại đây: https:// www.microsoft.com/en-us/download/details.aspx?id=39379&CorrelationId=39021b6b-dd98-41f8-bfc3-6bffe8d96e2e.
Tốt nhất
Hê-li
Trả lời:
CHÀO,
Giải pháp đơn giản nhất (cách 2 lần nhấp chuột) là sử dụng "Unpivot Other column" của Power Query - phần bổ trợ này miễn phí để tải xuống và sử dụng từ Microsoft). Trong trường hợp bạn không thể tải xuống phần bổ trợ, bạn có thể tham khảo giải pháp của tôi tại đây .
Hi vọng điêu nay co ich.
Trả lời:
Rất dễ dàng, và hoạt động tốt.
Cảm ơn
Comments
Post a Comment