Công thức chuyển từ cột thành hàng

Thư Tín

Thành viên mới
Tham gia ngày
3 Tháng năm 2019
Bài viết
28
Được thích
1
Điểm
165
Tuổi
25
Người ta gởi cho em 1 file theo dõi nhưng lại sắp theo cột (sheet1) giờ em muốn đưa nó theo dòng cho dể hình dung sang sheet 2, với kết quả như sheet2 đính kèm. Nhờ mọi người giúp em công thức, em cảm ơn nhiều.
 

File đính kèm

Thư Tín

Thành viên mới
Tham gia ngày
3 Tháng năm 2019
Bài viết
28
Được thích
1
Điểm
165
Tuổi
25
Hic em diễn đạt không rõ hay cách bố trí file của em chưa hợp lý mà không có ai giúp em hết vậy?
 

leonguyenz

Thành viên mới
Thành viên BQT
Moderator
Tham gia ngày
2 Tháng tám 2010
Bài viết
4,598
Được thích
8,099
Điểm
910
Nơi ở
Bình Dương

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,648
Được thích
16,660
Điểm
1,860
Tuổi
61
Nơi ở
An Giang

Thư Tín

Thành viên mới
Tham gia ngày
3 Tháng năm 2019
Bài viết
28
Được thích
1
Điểm
165
Tuổi
25
Ngày 24/6, Máy mài cầm tay D100, Ngô Việt Hoài cũng mượn 2 cái (Sheet1), sao bên Sheet2 không thấy vậy bạn?
[/QUOT
Mình để 1 dòng mẫu ấy bạn, nếu bên sheet1 có thì lấy hết qua sheet2
Ngày 24/6, Máy mài cầm tay D100, Ngô Việt Hoài cũng mượn 2 cái (Sheet1), sao bên Sheet2 không thấy vậy bạn?
Mình để 1 dòng mẫu thôi ấy bạn, nếu bên sheet1 có thì đưa hết qua sheet2 bạn à. Bạn giúp mình với cảm ơn bạn nhiều
Bài đã được tự động gộp:

Có lẽ dùng Công thức quá phức tạp nên mọi người "né" thôi.
Dùng VBA thì nhanh hơn là suy nghĩ phối hợp các hàm.
Dùng VBA cũng được bác ạ chủ yếu ra kết quả đúng là được, bác giúp con với cảm ơn bác
 

Thư Tín

Thành viên mới
Tham gia ngày
3 Tháng năm 2019
Bài viết
28
Được thích
1
Điểm
165
Tuổi
25
Bác giúp giùm con đi mà, nếu có gì không phải mong bác lượng thứ
 

n0thing1988

Thành viên tích cực
Tham gia ngày
30 Tháng chín 2013
Bài viết
1,450
Được thích
1,003
Điểm
560
Bác giúp giùm con đi mà, nếu có gì không phải mong bác lượng thứ
Thầy ấy lười viết đó.
Bạn thử công thức sau tại
D5=LOOKUP(2,1/($B5=Sheet2!$B$5:$B$11)*(Sheet2!$D$5:$D$11=Sheet1!D$2),OFFSET(Sheet2!$D$2,3,MATCH(Sheet1!D$3,Sheet2!$E$2:$G$2,0),6,))
À công thức không dùng được, nếu như cùng 1 ngày có 2 người lấy 1 thiết bị giống nhau.
Chẳng hiểu sao lại có người thiết kế cái bảng khoa học như vậy để nhập liệu
 

hocexcel_1991

Bắt đầu học Excel
Tham gia ngày
9 Tháng bảy 2018
Bài viết
465
Được thích
848
Điểm
335
Nơi ở
Từ Sơn, Bắc Ninh
Người ta gởi cho em 1 file theo dõi nhưng lại sắp theo cột (sheet1) giờ em muốn đưa nó theo dòng cho dể hình dung sang sheet 2, với kết quả như sheet2 đính kèm. Nhờ mọi người giúp em công thức, em cảm ơn nhiều.
Thử dùng PowerQuery
1596188382053.png
 

File đính kèm

Thư Tín

Thành viên mới
Tham gia ngày
3 Tháng năm 2019
Bài viết
28
Được thích
1
Điểm
165
Tuổi
25

File đính kèm

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
6,981
Được thích
13,618
Điểm
1,560
Bạn ơi giờ mình muốn làm ngược lại là từ sheet2 mình chuyển ngược lại như sheet1 thì làm như thế nào vậy bạn?
Chạy code
Mã:
Option Explicit
Sub XYZ()
  Dim sArr(), tArr(), Res(), Dic As Object, iKey$
  Dim sRow&, eRow&, i&, iR&, j&, c&, jC&, tCol&, tmp

  With Sheets("Sheet1")
    j = .Cells(2, 16383).End(xlToLeft).Column
    eRow = .Range("A" & Rows.Count).End(xlUp).Row
    If j > 6 Then .Range("G2", .Cells(eRow, j)).Clear
    Res = .Range("A2", .Cells(eRow, 1200)).Value
    tArr = .Range("D3:F3").Value
  End With
  With Sheets("Sheet2")
    sArr = .Range("A5:G" & .Range("A" & Rows.Count).End(xlUp).Row).Value
  End With

  Set Dic = CreateObject("scripting.dictionary")
  sRow = UBound(Res)
  For i = 4 To sRow
    Dic.Item(Res(i, 2)) = i
  Next i

  c = 1
  sRow = UBound(sArr)
  For i = 1 To sRow
    iR = Dic.Item(sArr(i, 2))
    iKey = sArr(i, 2) & sArr(i, 4)
    If tmp <> sArr(i, 4) Then
      c = c + 3
      tmp = sArr(i, 4)
      jC = c
      Dic.Item(iKey) = c
      tCol = c
    Else
      If Dic.exists(iKey) = False Then
        Dic.Item(iKey) = jC
        tCol = jC
      Else
        tCol = Dic.Item(iKey) + 3
        Dic.Item(iKey) = tCol
        If c < tCol Then c = tCol
      End If
    End If
    If tCol > UBound(Res, 2) Then
      ReDim Preserve Res(1 To sRow, 1 To tCol + 30)
    End If
    For j = 0 To 2
      Res(1, tCol + j) = tmp
      Res(2, tCol + j) = tArr(1, j + 1)
      Res(iR, tCol + j) = sArr(i, j + 5)
    Next j
  Next i
  With Sheets("Sheet1")
    .Range("A2:A" & eRow).Resize(, c + 2) = Res
    .Range("F2:F" & eRow).Copy
    .Range("G2", .Cells(eRow, c + 2)).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
  End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Top Bottom