Căn cứ vào số lượng ở sheet 1 để copy thành nhiều dòng sang sheet 2. (1 người xem)

Liên hệ QC

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

havietchuong

Thành viên tiêu biểu
Tham gia
16/6/09
Bài viết
490
Được thích
570
Giới tính
Nam
Nghề nghiệp
Giáo viên tiểu học.
Nhờ các bạn chỉ giúp cách tạo công thức để khi nhập liệu ở sheet1 tự động được copy thành nhiều dòng sang sheet2, như file đính kèm. Cám ơn các bạn.
 

File đính kèm

Bạn có thể tham khảo cách thực hiện bỡi VBA, như sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [c4:C99]) Is Nothing Then
    Dim J As Long

    For J = 1 To Target.Value
        With Sheet2.[A65500].End(xlUp).Offset(1)
            .Resize(, 2).Value = Target.Offset(, -2).Resize(, 2).Value
        End With
    Next J
 End If
End Sub
 
Công thức tại A2 của Sheet2:
Mã:
=IF(A1="tên ",Sheet1!A2,IF(COUNTIF($A$1:A1,A1)<VLOOKUP(A1,Sheet1!$A$2:$C$5,3,0),A1,INDEX(Sheet1!$A$2:$A$5,MATCH(Sheet2!A1,Sheet1!$A$2:$A$5,0)+1,1)))
Kéo fill xuống.
Công thức tại B2 của Sheet2:
Mã:
=VLOOKUP(A2,Sheet1!$A$2:$C$5,2,0)
Kéo fill xuống.
 
Lần chỉnh sửa cuối:
Nhờ các bạn chỉ giúp cách tạo công thức để khi nhập liệu ở sheet1 tự động được copy thành nhiều dòng sang sheet2, như file đính kèm. Cám ơn các bạn.



Bạn có thể dùng cột phụ D bên sheet 1
D2=IFERROR(D1+C1,0) Fill CT xuống "Vút chỉ"
CT bên sheet 2 như sau:
A2=OFFSET(Sheet1!A$1,MATCH(ROW(1:1)-1,Sheet1!$D$2:$D$5,1),) Fill CT sang phải ,xuống dưới
 

File đính kèm

Bạn có thể dùng cột phụ D bên sheet 1
D2=IFERROR(D1+C1,0) Fill CT xuống "Vút chỉ"
CT bên sheet 2 như sau:
A2=OFFSET(Sheet1!A$1,MATCH(ROW(1:1)-1,Sheet1!$D$2:$D$5,1),) Fill CT sang phải ,xuống dưới
Có phải với phiên bản 2003 không sử dụng được IFERROR nên máy tính báo #NAME?
 
Nếu còn 2003 thì tại [D2] bạn thử công thức này:

=IF(TYPE(D1+C1)=16,0,D1+C1)

 
Web KT

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

Back
Top Bottom