tổng kết dữ liệu từ hàng ngang sang cột dọc (3 người xem)

  • Thread starter Thread starter nthxe
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

nthxe

Trình còi
Tham gia
14/6/08
Bài viết
260
Đượ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

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

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

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

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

Bài viết mới nhất

Back
Top Bottom