Xoay chiều bảng DL dạng ma trận

Liên hệ QC

ducvudinh

Thành viên mới
Tham gia
19/9/14
Bài viết
4
Được thích
0
Chào các bậy tiền bối. Em giờ có một bảng dữ liệu dạng sau đây mà không biết phải giải quyết thế nào mong cac bác giup đỡ.
mã số \PTBPTEAEBEEEFEFAEV
2231
4341
3121
1121

bây giờ mình cần nó phải có dạng như sau
223AEBE
434BPTE
312EEFE
112FAEV

có nghĩa là số 1 chỉ để dánh dấu cái nào liên quan với cái nào thôi.

Xin cảm ơn cả nhà trước
 
Bạn xem trong file;

Có thể đây là điều bạn mong muốn:
 

File đính kèm

  • gpeThuThuat.rar
    7.4 KB · Đọc: 7
Dùng công thức lookup, khá đơn giản. Ví dụ:
=INDEX($B$1:$E$1,MATCH(1,$B2:$E2,0))
 
Chào các bậy tiền bối. Em giờ có một bảng dữ liệu dạng sau đây mà không biết phải giải quyết thế nào mong cac bác giup đỡ.
mã số \PT
BPTEAEBEEEFEFAEV
2231
4341
3121
1121

bây giờ mình cần nó phải có dạng như sau
223AEBE
434BPTE
312EEFE
112FAEV

có nghĩa là số 1 chỉ để dánh dấu cái nào liên quan với cái nào thôi.

Xin cảm ơn cả nhà trước
Bài này bạn cần phải nói rõ thêm: Có khi nào 1 mã số mà có 2 giá trị không? (2 số 1)
Dữ liệu thật có khi nào có trường hợp này không
mã số \PT
BPTEAEBEEEFEFAEV
2231
434
1
1
3121
1121
 
Bài này bạn cần phải nói rõ thêm: Có khi nào 1 mã số mà có 2 giá trị không? (2 số 1)
Dữ liệu thật có khi nào có trường hợp này không
mã số \PTBPTEAEBEEEFEFAEV
2231
43411
3121
1121

Dạ trường hợp đó có. (Ít nhưng có). Nếu trường hợp gặp phải hai hay nhiều hơn thi em cần liệt kê string vào cột bên cạnh. Liệu như thế có được không ạ?
 
Có thể đây là điều bạn mong muốn:

Dạ em cám ơn. Code VBA này hoạt động trên bảng ví dụ, tuy nhiên do em mới học VBA nên không hiểu nó cho lắm vậy nên cũng không biết thay đổi sao cho phù hợp. Em thử chạy trên bảng DL gốc (233 dòng và 54 cột) thì toàn không được. Mong anh chỉ giáo thêm.

// Mọi người có thể bỏ qua phần này vì em đã tìm ra lỗi.
 
Lần chỉnh sửa cuối:
Dạ trường hợp đó có. (Ít nhưng có). Nếu trường hợp gặp phải hai hay nhiều hơn thi em cần liệt kê string vào cột bên cạnh. Liệu như thế có được không ạ?

Nếu cố thì bạn phải đưa lên luôn cho nó tổng quát chứ. Nhớ ghi luôn kết quả mong muốn vào file nhé
 
Bạn thử với macro sau:

Dạ trường hợp đó có. (Ít nhưng có). Nếu trường hợp gặp phải hai hay nhiều hơn thi em cần liệt kê string vào cột bên cạnh. Liệu như thế có được không ạ?
PHP:
Option Explicit
Sub ChuyenVi()
 Dim Cls As Range, Rng As Range, Rg0 As Range, Cll As Range
 Dim Rws As Long, J As Long, Col As Byte, Dm As Byte
 
 Set Rng = [b3].CurrentRegion
 Rws = Rng.Rows.Count
 Col = Rng.Columns.Count
 ReDim Arr(1 To Rws, 1 To Col)
 For Each Cls In Range([A3], [A3].End(xlDown))
    J = 1 + J
    Arr(J, 1) = Cls.Value
    Set Rg0 = Cls.Offset(, 1).Resize(, Rng.Columns.Count - 1).SpecialCells(xlCellTypeConstants, 3)
    If Rg0.Cells.Count = 1 Then
        Arr(J, 2) = Cells(2, Rg0.Column).Value
    ElseIf Rg0.Cells.Count > 1 Then
        For Each Cll In Rg0
            Dm = Dm + 1
            Arr(J, 1 + Dm) = Cells(2, Cll.Column).Value
        Next Cll
    Else
    End If
 Next Cls
 [n3].Resize(J, Col).Value = Arr()
 Randomize
 [n2].Resize(, Col ).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End Sub
 
Web KT
Back
Top Bottom