tổng kết dữ liệu từ hàng ngang sang cột dọc

Liên hệ QC

nthxe

Trình còi
Tham gia
14/6/08
Bài viết
259
Được thích
112
Kính chào các bác,
em có 1 sheet gốc gồm 1 cột: Nhà cung cấp và sản phẩm trong đó 1 sản phẩm có nhiều nhà cung cấp khác nhau (sheet: Goc)
Em muốn có 1 sheet báo cáo trong đó mỗi cột là 1 loại sản phẩm, các dòng trong đó là tên các nhà cung cấp (sheet: Bao cao)
Cụ thể trong file đính kèm.
Kính nhờ các bác dùng hàm giúp em.

cảm ơn các bác
 

File đính kèm

  • gpe_help.xlsx
    9.5 KB · Đọc: 13
Kính chào các bác,
em có 1 sheet gốc gồm 1 cột: Nhà cung cấp và sản phẩm trong đó 1 sản phẩm có nhiều nhà cung cấp khác nhau (sheet: Goc)
Em muốn có 1 sheet báo cáo trong đó mỗi cột là 1 loại sản phẩm, các dòng trong đó là tên các nhà cung cấp (sheet: Bao cao)
Cụ thể trong file đính kèm.
Kính nhờ các bác dùng hàm giúp em.

cảm ơn các bác
Sử dụng PivotTable cho nhanh lẹ.
 

File đính kèm

  • gpe_help.xlsx
    15.4 KB · Đọc: 4
Cảm ơn bác rất nhiều, em chỉ cần list nhà cung cấp theo từng loại sản phẩm thôi bác ạ. Bên sheet báo cáo, cột 1 là ví dụ em mong muốn có bác ạ
 
Lần chỉnh sửa cuối:
Kính chào các bác,
em có 1 sheet gốc gồm 1 cột: Nhà cung cấp và sản phẩm trong đó 1 sản phẩm có nhiều nhà cung cấp khác nhau (sheet: Goc)
Em muốn có 1 sheet báo cáo trong đó mỗi cột là 1 loại sản phẩm, các dòng trong đó là tên các nhà cung cấp (sheet: Bao cao)
Cụ thể trong file đính kèm.
Kính nhờ các bác dùng hàm giúp em.

cảm ơn các bác
Bạn xem nhé
Mã:
Sub chuyenhang()
Dim arr, arr1
Dim i As Long, a As Long, b As Long, j As Long, c As Long
Dim dic As Object
Set dic = CreateObject("scripting.dictionary")
arr = Sheet1.Range("A2:B" & Sheet1.Range("a" & Rows.Count).End(xlUp).Row).Value
a = UBound(arr, 1)
ReDim arr1(1 To a, 1 To a)
     For i = 1 To a
       If dic.exists(arr(i, 2)) = 0 Then
           dic.Item(arr(i, 2)) = Array(arr, i)
           b = b + 1
           arr1(1, b) = arr(i, 2)
       End If
      Next i
      For i = 1 To b
          For j = 1 To a
               If arr1(1, i) = arr(j, 2) Then
                   c = c + 1
                   arr1(c + 1, i) = arr(j, 1)
               End If
           Next j
           c = 0
       Next i
       Sheet2.Range("e1:G1000").ClearContents
     Sheet2.Range("e1").Resize(UBound(arr1, 1), b).Value = arr1
End Sub
 

File đính kèm

  • gpe_help.xlsm
    17.6 KB · Đọc: 6
Cảm ơn bác đã viết code cho em, tuy nhiên, do đây là 1 phần việc trong 1 file chung nữa nên dùng code thì các việc khác cũng cần chuyển sang code cho tiện.

Nếu bác có giải pháp dùng hàm thì cho em xin ạ
mình không biết hàm đâu.bạn xem ai trợ giúp đi :D
 
Cảm ơn bác rất nhiều, em chỉ cần list nhà cung cấp theo từng loại sản phẩm thôi bác ạ. Bên sheet báo cáo, cột 1 là ví dụ em mong muốn có bác ạ
Thì cũng sử dụng PivotTable trở nó lại 1 tí, vào B1 chọn 1 nhà cung cấp và xem kết quả.
 

File đính kèm

  • gpe_help.xlsx
    15.1 KB · Đọc: 4
Cảm ơn bác đã viết code cho em, tuy nhiên, do đây là 1 phần việc trong 1 file chung nữa nên dùng code thì các việc khác cũng cần chuyển sang code cho tiện.

Nếu bác có giải pháp dùng hàm thì cho em xin ạ
Công thức cho ô A2 ở sheet bao cao
PHP:
A2=IFERROR(OFFSET(Goc!$A$1,AGGREGATE(15,6,ROW(Goc!$A$1:$A$16)/(Goc!$B$2:$B$17='bao cao'!A$1),ROW('bao cao'!$A1)),),"")
Enter, Fill xuống, Fill sang phải
 
Web KT
Back
Top Bottom