Một bài toán tham chiếu (1 người xem)

Liên hệ QC

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

keke355992

Thành viên thường trực
Tham gia
19/1/08
Bài viết
310
Được thích
20
Nghề nghiệp
KẾ TOÁN THUẾ, TƯ VẪN THUẾ
mình có 1 bài toán tham chiếu thế này, mong các bro giúp đỡ,( chuyển dữ liệu từ một cột thành nhiều cột )
 

File đính kèm

Mình chỉ làm được bằng VBA thôi, tham khảo nha

PHP:
Sub ChuyenVi()
 Dim WF, Rg0 As Range, Rg1 As Range, Rbd As Range
 Dim D0 As Integer, jJ As Integer, Ww As Byte, Rw0 As Long, Solg As Byte
  
 Set WF = Application.WorksheetFunction
 Set Rg0 = Range([A1], [A65500].End(xlUp))
 D0 = WF.Count(Rg0):                   Set Rg0 = [A1]
 For jJ = 1 To D0
   Set Rg1 = Rg0.Offset(, 1)                 'Sang Cot B'
   Cells(jJ * 7 - 5, "e").Value = Rg0.End(xlDown).Value
   Rw0 = Cells(jJ * 7 - 5, "D").Row          'Dòng Ghi'
   
   Set Rg0 = Rg0.End(xlDown)
   Set Rg1 = Range(Rg1, Rg0.Offset(, 1))     'Cot B: Các Giai Cua Ngày'
   If Rg1.Cells(1).Row = 1 Then
      Set Rbd = [c1]
   Else
      Set Rbd = Rg1.Cells(2, 2)
   End If
   For Ww = 1 To 8
      Solg = Switch(Ww = 1, 4, Ww = 2, 3, Ww = 3, 6, Ww = 4, 4, Ww = 5, 6, Ww = 6, 2, Ww > 6, 1)
      Cells(Rw0, 5 + Ww).Resize(Solg).Value = Rbd.Resize(Solg).Value
   Next Ww
 Next jJ
End Sub
 

File đính kèm

mình có 1 bài toán tham chiếu thế này, mong các bro giúp đỡ,( chuyển dữ liệu từ một cột thành nhiều cột )

Góp 1 cách dùng công thức (mong nhận được sự góp ý)

Chỉ cần chọn 1 dòng (có thể chọn nhiều dòng) từ cột [G] đến cột [O] copy công thức bằng cách kéo Fill xuống

Dùng 2 name duy nhất trong Insert\Name\Define...
HTML:
Giai =INDIRECT("E"&IF(MATCH(Sheet1!L$1,Sheet1!$H$1:$O$1,0)=1,ROW(Ngay),MATCH(Sheet1!K$1,OFFSET(Ngay,,-1),0)+ROW(Ngay))&":E"&MATCH(Sheet1!L$1,OFFSET(Ngay,,-1),0)+ROW(Ngay)-1)

Ngay =OFFSET(Sheet1!$E$2,INT((ROWS(Sheet1!$1:3)-1)/6)*27,,27)
Với công thức tại cột [G] kéo Fill xuống
HTML:
G2 =IF(ROWS($1:1)-INT(ROW(Ngay)/27)*6>1,"",INDEX(OFFSET(Ngay,,-2),27))
Với công thức tại cột [H]:
Kéo Fill xuống rồi kéo Fill sang đến cột [O] hoặc Kéo Fill sang đến cột [O] rồi rồi kéo xuống
HTML:
H2 =IF(ISNA(Giai),"",IF(ROWS($1:1)-INT(ROW(Ngay)/27)*6>COUNTA(Giai),"",INDEX(Giai,ROWS($1:1)-INT(ROW(Ngay)/27)*6)))
 

File đính kèm

File đính kèm

Một cách nữa cho bạn tham khảo, chỉ một bảng - bạn muốn ngày nào thì chọn ngày đó:

Name trong file đính kèm Chọn ô I5 và vào Insert\Name\Define...
Mã:
kq =OFFSET(Sheet1!$F$3,[COLOR=Red][B]MATCH(Sheet1!$G$4,Sheet1!$D$4:$D$84,0)-27[/B][/COLOR]+MIN(MATCH(Sheet1!I$4,dat,0),ROWS(Sheet1!$1:1)+IF([COLOR=Red][B]ISNA(MATCH(Sheet1!H$4,dat,0))[/B][/COLOR],0,MATCH(Sheet1!H$4,dat,0))),)
có thể sửa thành (sẽ ngắn gọn hơn)
Mã:
kq =OFFSET(Sheet1!$F$3,[SIZE=3][COLOR=Blue][B]row(dat)-4[/B][/COLOR][/SIZE]+MIN(MATCH(Sheet1!I$4,dat,0),ROWS(Sheet1!$1:1)+IF([SIZE=3][COLOR=Blue][B]H$4=""[/B][/COLOR][/SIZE],0,MATCH(Sheet1!H$4,dat,0))),)
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom