Đếm số dòng của bảng để chèn số dòng tương ứng vào giữa khu vực khác (1 người xem)

Liên hệ QC

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

Tham gia
14/9/12
Bài viết
312
Được thích
68
Nghề nghiệp
VT
Em có file với 2 Sheet. Sheet1 có tiêu đề báo cáo và chân báo cáo. Sheet2 có 1 bảng dữ liệu.
Hãy đếm số dòng của bảng trong Sheet2 rồi chèn số dòng tương ứng vào giữa phần báo cáo của Sheet1 để Copy bảng của Sheet2 vào đó. Nhờ các a/c giúp đỡ.
 

File đính kèm

Mình xin gợi cho bạn 1 cách khác hơn để thực hiện bước 5, đó là:

(Tại trang tính Sheet1)

(*) Dòng thứ 10 sẽ là dòng tiêu đề (giống như Sheet3)
Bạn dùng chuột tô chọn các dòng từ 11 cho đến dòng 749 & thêm dòng mới; Khi đó dòng 12 cũ sẽ chuyển xuống dòng 750

(*) Tiếp theo bạn có thể chọn 1 trong 2 cách sau:

1./ "Rùa nhưng chắc": Tạo vòng lặp duyệt toàn bột các hàng dữ liệu của Sheet2 & chép sang nơi vừa thêm dòng kể từ dòng 11

2./ Sai đó ẩn những dòng từ dòng có dữ liệu vừa chép cuối cùng cho đến dòng 749

Chú í: Những lần chạy macro lần sau, ta cần:
* Xóa dữ liệu mà macro chạy lần trước đã chép sang Sheet1
* Cho hiện toàn bộ các dòng từ [11:749]

(*) Muốn nhanh thì đưa dữ liệu vô mảng & duyệt trong mảng.
Chuyện này bạn cần có kiến thức nhiều hơn cách trước, ngõ hầu tự bảo trì & sửa chữa macro theo í thích.

Chờ í của bạn!
 
Upvote 0
Em có file với 2 Sheet. Sheet1 có tiêu đề báo cáo và chân báo cáo. Sheet2 có 1 bảng dữ liệu.
Hãy đếm số dòng của bảng trong Sheet2 rồi chèn số dòng tương ứng vào giữa phần báo cáo của Sheet1 để Copy bảng của Sheet2 vào đó. Nhờ các a/c giúp đỡ.

cứ thấy trong file ghi sao thì code làm vậy
Mã:
Public Sub hello()
Dim lr As Long, ws As Worksheet
Set ws = Worksheets("Sheet2")
If ws.Range("A1:B1").MergeCells Then
    With ws
        .UsedRange.UnMerge
        .[B1].Value = .[A1].Value
        .Columns(1).Delete
        .Rows(.[H65000].End(xlUp).Row).Delete
        .Range(.[H1], .[H65000].End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Sheet1.Range("A1:H1").Copy
        .Range("A1").PasteSpecial xlPasteColumnWidths
        lr = .[H65000].End(xlUp).Row
    End With
    Sheet1.Copy , Worksheets(Worksheets.Count)
    With ActiveSheet
        .Rows("10:" & 10 + lr - 2).Insert
        ws.Range("A1:J" & lr).Copy .[A10]
        lr = .[H10].End(xlDown).Row
        .Range("H" & lr + 2).Formula = "=SUMIF(F11:F" & lr & ","">0"",H11:H" & lr & ")"
        .Range("H" & lr + 4).Value = "=R[-2]C/1.1"
        .Range("H" & lr + 5).Value = "=R[-3]C-R[-1]C"
        .Range("H" & lr + 6).Value = "=R[-1]C+R[-2]C"
    End With
End If
End Sub
 
Upvote 0
Em có file với 2 Sheet. Sheet1 có tiêu đề báo cáo và chân báo cáo. Sheet2 có 1 bảng dữ liệu.
Hãy đếm số dòng của bảng trong Sheet2 rồi chèn số dòng tương ứng vào giữa phần báo cáo của Sheet1 để Copy bảng của Sheet2 vào đó. Nhờ các a/c giúp đỡ.
Bạn có thể làm theo cách
1.Xử lý sheet2 theo yêu cầu của bạn
2.Insert thêm sheet mới (sheet4)
3.Copy phần đầu của báo cáo (từ sheet1) vào sheet4
4.Copy phần thân của báo cáo (từ sheet2) vào sheet4
3.Copy phần cuối của báo cáo (từ sheet1) vào sheet4

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
cứ thấy trong file ghi sao thì code làm vậy
[/CODE]
Đúng ý em rồi, nhưng nếu muốn không sinh thêm Sheet tức là chỉ chuyển bảng trong Sheet2 chèn vào đoạn cần chèn trong Sheet1 thì cần thay đổi thế nào. Anh chỉ bảo em thêm.
Hai là em muốn khi copy 1 đơn hàng thứ nhất, chạy code - in xong. Copy đơn hàng thứ 2, chạy code - in tiếp, ... thì .... nó không chạy code. Muốn làm được điều này cần thay đổi chỗ nào anh chỉ giúp em.
Xin cảm ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng ý em rồi, nhưng nếu muốn không sinh thêm Sheet tức là chỉ chuyển bảng trong Sheet2 chèn vào đoạn cần chèn trong Sheet1 thì cần thay đổi thế nào. Anh chỉ bảo em thêm.
Hai là em muốn khi copy 1 đơn hàng thứ nhất, chạy code - in xong. Copy đơn hàng thứ 2, chạy code - in tiếp, ... thì .... nó không chạy code. Muốn làm được điều này cần thay đổi chỗ nào anh chỉ giúp em.
Xin cảm ơn anh.

sheet1 làm mẫu thôi chứ ghi gì vào đó nữa các lần chạy sau lại tốn 1 đống code lựa ra dòng nào là dữ liệu cũ cần xóa , dòng nào là trang trí cần giữ lại , tôi không đi theo hướng đó
code căn cứ vào việc 2 ô A1:B1 của sheet2 có đang merge hay không để chạy code , vậy cứ đang merge thì code làm , không merge thì không làm gì cả , bạn cứ căn cứ vào đó mà tính
 
Upvote 0
Mã:
Public Sub hello()
Dim lr As Long, ws As Worksheet

    With ws
        .
End Sub

Các a/c giúp em chỗ này với.
1/ Sau khi code #3 chạy xong, sẽ tạo ra 1 sheet mới. Em đã record macro thêm cho phần định dạng trên sheet mới cột D,E là định dạng kiểu số không có phần thập phân, cột F,G,H định dạng kiểu phân nhóm không có phần thập phân. Nhưng khi chạy xong cột F,G,H thì OK, còn cột D,E cũng định dạng luôn như 3 cột kia. Không hiểu vì sao nữa.
2/ Em muốn ghi macro viền bảng nhưng không xác định được bảng dài thế nào (tùy thuộc vào số liệu đầu vào của sheet nguồn)
Xin nhờ các a/c.
 
Upvote 0
Các a/c giúp em chỗ này với.
1/ Sau khi code #3 chạy xong, sẽ tạo ra 1 sheet mới. Em đã record macro thêm cho phần định dạng trên sheet mới cột D,E là định dạng kiểu số không có phần thập phân, cột F,G,H định dạng kiểu phân nhóm không có phần thập phân. Nhưng khi chạy xong cột F,G,H thì OK, còn cột D,E cũng định dạng luôn như 3 cột kia. Không hiểu vì sao nữa.
2/ Em muốn ghi macro viền bảng nhưng không xác định được bảng dài thế nào (tùy thuộc vào số liệu đầu vào của sheet nguồn)
Xin nhờ các a/c.

Xem thử File này, Muốn định dạng sao thì làm 1 lần cho sheet GPE, sheet nguồn là DATA không đụng gì đến nó cả.
Nếu sheet DATA hơn 500 dòng thì tự "chế" lại sheet GPE và Code.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em làm được rồi. Cảm ơn anh ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom