cần người trợ giúp code vba xuất file theo mẫu

Liên hệ QC

Banotnt

Thành viên mới
Tham gia
9/6/22
Bài viết
16
Được thích
0
Mình có một file cần giúp đỡ, gồm mẫu cần xuất và các sheet nội dung, mong mọi người giúp đỡ
 

File đính kèm

  • Mẫu.xlsx
    2.9 MB · Đọc: 39
Giải pháp
Ví dụ kiểu này thì đúng là đâu cần giúp đỡ.
...
Cần chứ. Đã lên đây hỏi là cần. Vấn đề là có nhiều người chưa phân biệt được cái khác biệt giữa "muốn" và "cần".
Tiếng Việt có chỗ ngộ nghĩnh là từ "cần" (cần thiết) lại đồng âm với "cần" (cần cù).
Anh nhìn dữ liệu chắc cũng đoán được công việc chứ :D
Chắc gì cấp trên đã dám ra quyết định.
Đúng vậy. Chả có cấp trên nào dám quyết định cho nhân viên có khả năng quản lý cái file khủng bố này cả.

Nhưng đáng lẽ khi khoe hàng khủng, ăn lương "làm thủ công hằng trăm sheet", muốn đổi thành "bấm một phát xong công việc, nửa buổi uống cà phê" thì tự bản thân phải biết luật cầu cạnh. Đằng này lại quen thói thảy ra cho thiên hạ xúm xít hầu mình.
Ở trang tính 'Mau' có những nội dung xuất; Tuy nhiên những nội dung này không có ở những trang tính còn lại (của file)
Vậy là bạn chưa nghiêm túc trong công việc & làm khó người có nhã ý định giúp bạn!

Tạm biệt!
 
Upvote 0
Ở trang tính 'Mau' có những nội dung xuất; Tuy nhiên những nội dung này không có ở những trang tính còn lại (của file)
Vậy là bạn chưa nghiêm túc trong công việc & làm khó người có nhã ý định giúp bạn!

Tạm biệt!
Đó là cái mẫu mình làm thủ công bạn ạ, mình cần xuất hàng loạt những sheet còn lại giống mẫu thay vì làm thủ công hàng trăm sheet, nếu đã có những nội dung đó rồi thì mình đâu cần giúp đỡ
 
Upvote 0
(/ấn đề là thông tin ở mẫu được lấy từ đâu, cụ thể lấy từ trang tính nào của những trang còn lại;
Không thể người (có nhã ý giúp bạn) khơi khơi nghĩ ra 1 đống rác thông tin để giúp bạn?
Thứ nữa: Việc tìm các thông tin cần xuất sẽ như thế nào:
Các trang tính (chứa dữ liệu cần) được thiết kế theo ngày- tháng hay năm ra văn bản? Ngó vô rất lượm thượm;
Xin lỗi, nếu mình là cấp trên của bạn thì báo cấp cao hơn ra quyết định nhân sự cho bạn ngay tấp lự!
 
Upvote 0
(/ấn đề là thông tin ở mẫu được lấy từ đâu, cụ thể lấy từ trang tính nào của những trang còn lại;
Không thể người (có nhã ý giúp bạn) khơi khơi nghĩ ra 1 đống rác thông tin để giúp bạn?
Thứ nữa: Việc tìm các thông tin cần xuất sẽ như thế nào:
Các trang tính (chứa dữ liệu cần) được thiết kế theo ngày- tháng hay năm ra văn bản? Ngó vô rất lượm thượm;
Xin lỗi, nếu mình là cấp trên của bạn thì báo cấp cao hơn ra quyết định nhân sự cho bạn ngay tấp lự!
Anh nhìn dữ liệu chắc cũng đoán được công việc chứ :D
Chắc gì cấp trên đã dám ra quyết định.
 
Upvote 0
@All cần giúp nhưng nhận toàn chỉ trích, chịu cuộc sống :(
 
Upvote 0
@All cần giúp nhưng nhận toàn chỉ trích, chịu cuộc sống :(
Chịu là đúng rồi Bác Sa hỏi vậy là đúng.Ban gửi file đã được tách với mẫu được tách.Mà không có Data cần tách.Tách theo điều kiện nào.Vậy bạn có tiền đi thuê người khác làm,khác được làm chủ.Người ta đã bỏ công ra giúp đỡ bạn không cần bạn hồi báo cái gì mà kiểu như là phải đi cầu bạn để làm cho bạn ấy.
 
Upvote 0
@All cần giúp nhưng nhận toàn chỉ trích, chịu cuộc sống :(
@All cần giúp nhưng nhận toàn chỉ trích, chịu cuộc sống :(
Góp ý nhỏ bạn đừng tự ái, mình đi nhờ ACE thì đừng than thở, mình cũng đã từng vậy thôi cố gắng đạt mục đích, cô gắng thông đạt cho mọi ngươi hiểu, tìm từ mềm mại dễ đi vào lòng người. Với file của bạn sao bạn ko gộp các sheet vào 1 sheet làm database, rồi 1 sheet làm mẫu và chỉ ra cách lấy qua sheet mẫu = tiêu thức gì thì trên GPE các ACE chỉ làm tý là xong thôi, vừa gọn vừa nhanh phải không nào
 
Upvote 0
@All Cầu mong mọi người

Góp ý nhỏ bạn đừng tự ái, mình đi nhờ ACE thì đừng than thở, mình cũng đã từng vậy thôi cố gắng đạt mục đích, cô gắng thông đạt cho mọi ngươi hiểu, tìm từ mềm mại dễ đi vào lòng người. Với file của bạn sao bạn ko gộp các sheet vào 1 sheet làm database, rồi 1 sheet làm mẫu và chỉ ra cách lấy qua sheet mẫu = tiêu thức gì thì trên GPE các ACE chỉ làm tý là xong thôi, vừa gọn vừa nhanh phải không nào
 

File đính kèm

  • Mẫu.xlsx
    3.2 MB · Đọc: 17
Upvote 0
Ví dụ kiểu này thì đúng là đâu cần giúp đỡ.
...
Cần chứ. Đã lên đây hỏi là cần. Vấn đề là có nhiều người chưa phân biệt được cái khác biệt giữa "muốn" và "cần".
Tiếng Việt có chỗ ngộ nghĩnh là từ "cần" (cần thiết) lại đồng âm với "cần" (cần cù).
Anh nhìn dữ liệu chắc cũng đoán được công việc chứ :D
Chắc gì cấp trên đã dám ra quyết định.
Đúng vậy. Chả có cấp trên nào dám quyết định cho nhân viên có khả năng quản lý cái file khủng bố này cả.

Nhưng đáng lẽ khi khoe hàng khủng, ăn lương "làm thủ công hằng trăm sheet", muốn đổi thành "bấm một phát xong công việc, nửa buổi uống cà phê" thì tự bản thân phải biết luật cầu cạnh. Đằng này lại quen thói thảy ra cho thiên hạ xúm xít hầu mình.
 
Upvote 1
Giải pháp
@All[/USER] Cầu mong mọi người
File #10 có khá hơn file ở #1 chút đĩnh: Đã có trang tính liệt kê toàn bộ các loại công văn từ các trang tính khác;
Nhưng kiểu bạn lưu trữ công văn như vậy thỉ chỉ có cách lục tung lần lượt từng công văn (từ 2008 cho đến nay) mà thôi:
a./ Công văn bao giờ cũng có ngày-tháng-năm ban hành;
Ở file của bạn lúc thì chỉ ghi tháng & năm ban hành, lúc thì ghi đủ ngày-tháng-năm.
Vậy thì sẽ chỉ lật tung từng công văn lên mà thôi; Phương pháp tìm kiếm hay lọc theo loại công văn hay theo thời gian làm sao thực hiện được đây?
Thêm nữa Ngày-tháng-năm của công văn lại đang định dạng kiểu chuỗi nên ► Chỉ ăn cám mới tìm được nhanh hơn lục tung từ đầu chí cuối mà thôi!
b./ . . . . . (cạn lời)
. . . . . .
 
Upvote 0
File #10 có khá hơn file ở #1 chút đĩnh: Đã có trang tính liệt kê toàn bộ các loại công văn từ các trang tính khác;
Nhưng kiểu bạn lưu trữ công văn như vậy thỉ chỉ có cách lục tung lần lượt từng công văn (từ 2008 cho đến nay) mà thôi:
a./ Công văn bao giờ cũng có ngày-tháng-năm ban hành;
Ở file của bạn lúc thì chỉ ghi tháng & năm ban hành, lúc thì ghi đủ ngày-tháng-năm.
Vậy thì sẽ chỉ lật tung từng công văn lên mà thôi; Phương pháp tìm kiếm hay lọc theo loại công văn hay theo thời gian làm sao thực hiện được đây?
Thêm nữa Ngày-tháng-năm của công văn lại đang định dạng kiểu chuỗi nên ► Chỉ ăn cám mới tìm được nhanh hơn lục tung từ đầu chí cuối mà thôi!
b./ . . . . . (cạn lời)
. . . . . .
Ý của ông là như thế nào, tại sao phải lật tung từng công văn, tui chỉ muốn xuất chứng từ theo dữ liệu có sẵn thôi
 
Upvote 0
Thôi, nhưng xin hỏi ngoài lề 1 chút: Nơi bạn có thực hiện IZO không?
Đừng viết ra đây rằng thì là mà: IZO là cái cốc khô gì đó nha!

Cái nào là chứng từ; Chúng là những văn bản pháp qui hay là tài liệu hành chính mà?
Xuất là xuất đi đâu?
Xuất theo dữ liệu có sẵn là xuất theo trình tự từ đầu chí cuối hay xuất theo chu kỳ văn bản như thế nào?
Lên GPE thì nên bỏ thói quen nói sao cũng được, ai muốn hiểu thế nào thì hiểu là không đặng nha bạn!
 
Upvote 0
Thôi, hôm nay mát trời nên cũng chịu khó chút vậy.
Bài này không khó, nhưng vì số sheets của bạn nhiều (hơn 100 sheet) nên tốc độ của code sẽ bị chậm.
Nếu chỉ căn cứ vào "số hộp" (từ 1-112) để tạo 112 sheet từ sheet "mẫu" thì mất 1 vài giây.
Tuy nhiên trong từng sheet lại phải lọc, trích xuất các dòng của số hộp đó, dán vào từng sheet.
Nếu chạy lần đầu (hoặc bạn muốn refresh lại từ đầu), mất khoảng 10 phút (nhấn vào nút "CẬP NHẬT TỪ ĐẦU")
Nếu bạn bổ sung vào cuối bảng, sau đó nhấn nút "CẬP NHẬT DÒNG CUỐI", thì code chỉ cập nhật và tạo sheet cho số hộp đó thôi, mất khoảng vài giây.
Trong file đính kèm, tôi đã chỉnh lại format của sheet "mẫu", insert thêm 1000 dòng nội dung trống.
PHP:
Option Explicit
Sub capnhattudau()
Dim lr&, i&, j&, k&, rng, ws As Worksheet, arr(), t
t = Timer
Application.ScreenUpdating = False
For Each ws In Sheets
    If ws.Name <> "DM-VV-PM" And ws.Name <> "mau" Then
        ws.Delete
    End If
Next
Sheets("DM-VV-PM").Activate
lr = Cells(Rows.Count, "D").End(xlUp).Row
rng = Range("A1:K" & lr).Value
For i = 1 To UBound(rng)
    ReDim arr(1 To 1000000, 1 To 7)
    k = 0
    If IsNumeric(rng(i, 1)) And rng(i, 1) <> "" Then
        k = k + 1: arr(k, 5) = rng(i, 6): arr(k, 1) = "x"
        For j = i + 1 To 10000
            If (rng(j, 3) <> "" Or rng(j, 4) <> "" Or rng(j, 5) <> "") And j < lr Then
                k = k + 1
                arr(k, 1) = k - 1: arr(k, 2) = rng(j, 5): arr(k, 3) = rng(j, 8): arr(k, 4) = rng(j, 4)
                arr(k, 5) = rng(j, 6): arr(k, 6) = rng(j, 8): arr(k, 7) = rng(j, 10)
            Else: Exit For
            End If
        Next
    End If
    If k > 0 Then
        Sheets("mau").Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = Format(rng(i, 1), "00")
        Range("A3").Resize(k, 7).Value = arr
        Range("A1").Value = Range("A1").Value & "" & rng(i, 2)
        Range("B2:G2").EntireColumn.AutoFit
        Range("A2:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Range("A3").ClearContents
    End If
Next
Application.ScreenUpdating = True
Sheets("DM-VV-PM").Activate
MsgBox Timer - t ' bo dong nay neu ban khong muon hien thong bao
End Sub
PHP:
Option Explicit
Sub capnhatdongcuoi()
Dim lr&, i&, k&, rng, arr(), t, sh
t = Timer
Application.ScreenUpdating = False
lr = Cells(Rows.Count, "D").End(xlUp).Row
sh = Evaluate("=LOOKUP(2,1/(A2:A" & lr & "<>""""),ROW(A2:A" & lr & "))")
rng = Range("A" & sh, Cells(lr, "K")).Value
    ReDim arr(1 To 1000000, 1 To 7)
    k = 0
    If IsNumeric(rng(1, 1)) And rng(1, 1) <> "" Then
        k = k + 1: arr(k, 5) = rng(1, 6): arr(k, 1) = "x"
        For i = 2 To UBound(rng)
            If (rng(i, 3) <> "" Or rng(i, 4) <> "" Or rng(i, 5) <> "") And i < lr Then
                k = k + 1
                arr(k, 1) = k - 1: arr(k, 2) = rng(i, 5): arr(k, 3) = rng(i, 8): arr(k, 4) = rng(i, 4)
                arr(k, 5) = rng(i, 6): arr(k, 6) = rng(i, 8): arr(k, 7) = rng(i, 10)
            Else: Exit For
            End If
        Next
    End If
    If k > 0 Then
        sh = Format(rng(1, 1), "00")
        If Not Evaluate("=ISREF(" & sh & "!A1)") Then
            Sheets("mau").Copy after:=Sheets(Sheets.Count)
            ActiveSheet.Name = sh
        End If
        Sheets(sh).Activate
        Range("A3").Resize(k, 7).Value = arr
        Range("A1").Value = Range("A1").Value & "" & rng(1, 2)
        Range("B2:G2").EntireColumn.AutoFit
        Range("A2:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        Range("A3").ClearContents
    End If
Application.ScreenUpdating = True
MsgBox Timer - t ' bo dong nay neu khong muon hien thong bao
End Sub
 

File đính kèm

  • Mẫu.xlsm
    634.2 KB · Đọc: 11
Upvote 0
@All cần giúp nhưng nhận toàn chỉ trích, chịu cuộc sống :(
Muốn người ta giúp thì phải nói sao cho người ta hiểu. Không hiểu thì giúp như thế nào?

Phải mô tả kỹ đâu là dữ liệu đầu vào, cần làm những thao tác gì ở đâu, kết quả những thao tác đó đập vào đâu ... Vân vân và mây mây. Tung tập tin lên không một lời giải thích mà lại không hiểu người ta trả lời gì thì chỉ còn nước ký biên bản những điểm không hiểu nhau rồi kết thúc thôi. Bạn đọc những bài của tôi thì thấy tôi không phải là người tiếc thời gian. Nhưng tôi chỉ giúp khi tôi hiểu được vấn đề. Không hiểu thì có muốn giúp cũng bó tay.
 
Upvote 0
Wow!
Mình công cốc rồi.
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    37.3 KB · Đọc: 37
Upvote 0
Web KT
Back
Top Bottom