Chuyển dữ liệu từ bảng ngang thành bảng dọc

Liên hệ QC

Excel my love_1

Thành viên thường trực
Tham gia
12/11/19
Bài viết
321
Được thích
179
Nhờ mọi người chuyển giúp dữ liệu ở bảng gốc (các học viên mà ở cột môn học có đánh số hoặc đánh dấu x ) đang dàn ngang, chuyển thành dạng danh sách (dọc)
Em đã làm ví dụ 1 vài học viên đầu, mong mọi giúp đỡ công thức cho các bạn còn lại
xin cảm ơn mọi người
 

File đính kèm

  • Chuyen ngang thanh doc.xlsb
    13 KB · Đọc: 22
Lần chỉnh sửa cuối:
Chính đạo
Mã:
K3=IF(COUNTIF(K$2:K2,K2)<COUNTA(INDEX($E$3:$H$24,MATCH(K2,$A$3:$A$24,),)),K2,INDEX($A$3:$A$24,IFERROR(MATCH(K2,$A$3:$A$24,0),0)+1))
Mã:
O3=INDEX($E$2:$H$2,SMALL(IF(OFFSET($E$2:$H$2,MATCH(K3,$A$3:$A$24,0),)="x",COLUMN($E$2:$H$2)-4),COUNTIF(K$3:K3,K3)))
Tà đạo
Mã:
K3=INDEX($A$3:$A$24,SMALL(IF($E$3:$H$24="x",ROW($E$3:$H$24)-2,""),ROW(A1)))
Mã:
O3=INDEX($E$2:$H$2,MOD(SMALL(IF($E$3:$H$24="x",ROW($A$3:$A$24)*10+COLUMN($E$2:$H$2)-4),ROW(A1)),10))
 
Chính đạo
Mã:
K3=IF(COUNTIF(K$2:K2,K2)<COUNTA(INDEX($E$3:$H$24,MATCH(K2,$A$3:$A$24,),)),K2,INDEX($A$3:$A$24,IFERROR(MATCH(K2,$A$3:$A$24,0),0)+1))
Mã:
O3=INDEX($E$2:$H$2,SMALL(IF(OFFSET($E$2:$H$2,MATCH(K3,$A$3:$A$24,0),)="x",COLUMN($E$2:$H$2)-4),COUNTIF(K$3:K3,K3)))
Tà đạo
Mã:
K3=INDEX($A$3:$A$24,SMALL(IF($E$3:$H$24="x",ROW($E$3:$H$24)-2,""),ROW(A1)))
Mã:
O3=INDEX($E$2:$H$2,MOD(SMALL(IF($E$3:$H$24="x",ROW($A$3:$A$24)*10+COLUMN($E$2:$H$2)-4),ROW(A1)),10))
Cảm ơn anh, mong anh sửa lại công thức giúp ạ
em vừa up lại file ở phần các môn học có cả số và đánh dấu "x" ạ
 
Không ra anh à.
Vì Ý em là trong vùng dữ liệu tra cứu nó có "x" và có cả số ạ
Anh xem file em up lại ạ
Cảm ơn anh
Thử với VBA xem sao.
PHP:
Option Explicit

Public Sub Gpe()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, n As Long, R As Long
With Sheet1
    sArr = .Range("A2", .Range("A100000").End(xlUp)).Resize(, 8).Value
    R = UBound(sArr)
    ReDim dArr(1 To R * 4, 1 To 5)
    If R > 1 Then
        For I = 2 To R
            For J = 5 To 8
                If sArr(I, J) <> Empty Then
                    K = K + 1
                    For n = 1 To 4
                        dArr(K, n) = sArr(I, n)
                    Next n
                    dArr(K, 5) = sArr(1, J)
                End If
            Next J
        Next I
    End If
    .Range("K3").Resize(100000, 5).ClearContents
    If K Then .Range("K3").Resize(K, 5) = dArr
End With
End Sub
 
Các công thức là công thức mảng.
Tôi rất dị ứng với các phản hồi "không được", "không ra" và không có gì thêm. Nếu không đúng thì hãy gửi file bạn đã nhập công thức nhưng kết quả không đúng.
 
Các công thức là công thức mảng.
Tôi rất dị ứng với các phản hồi "không được", "không ra" và không có gì thêm. Nếu không đúng thì hãy gửi file bạn đã nhập công thức nhưng kết quả không đúng.
Em gửi lại file đã lắp công thức với điều kiện "<>x"
Vì trong bản dữ liệu vừa có "x" vừa có số nên
trong bảng kết quả, những học viên nào mà có số thì ra lỗi #NUM!
Mong anh xem lại giúp ạ
Cảm ơn anh
Bài đã được tự động gộp:

Thử với VBA xem sao.
PHP:
Option Explicit

Public Sub Gpe()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, n As Long, R As Long
With Sheet1
    sArr = .Range("A2", .Range("A100000").End(xlUp)).Resize(, 8).Value
    R = UBound(sArr)
    ReDim dArr(1 To R * 4, 1 To 5)
    If R > 1 Then
        For I = 2 To R
            For J = 5 To 8
                If sArr(I, J) <> Empty Then
                    K = K + 1
                    For n = 1 To 4
                        dArr(K, n) = sArr(I, n)
                    Next n
                    dArr(K, 5) = sArr(1, J)
                End If
            Next J
        Next I
    End If
    .Range("K3").Resize(100000, 5).ClearContents
    If K Then .Range("K3").Resize(K, 5) = dArr
End With
End Sub
Cảm ơn anh nhiều ạ, điều kiện <> Empty là tổng quát cho "x" và số đúng không ạ
Bài đã được tự động gộp:

Vậy đâu ra được bảng kết quả mong muốn của bạn đã làm.

Phải là cột E:H trong 1 dòng có "x' HOẶC có số chứ.
Vâng đúng là vậy ạ
 

File đính kèm

  • Chuyen ngang thanh doc - Copy.xlsb
    16.8 KB · Đọc: 14
Em gửi lại file đã lắp công thức với điều kiện "<>x"
Vì trong bản dữ liệu vừa có "x" vừa có số nên
trong bảng kết quả, những học viên nào mà có số thì ra lỗi #NUM!
Mong anh xem lại giúp ạ
Bạn cố gắng đọc kỹ lại bài #4 nha. Có mấy chữ thôi.
 
Web KT
Back
Top Bottom