Trích tự động dữ liệu từ sheet Nhập sang sheet Báo cáo (1 người xem)

  • Thread starter Thread starter anhk5c
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Mình thấy có dòng tổng cộng rồi đấy thay!
Bạn thay macro macro TinhSh cũ bằng 2 macro này & chạy thử xem nó có kể ô dữ liệu & ghi tiếng Việt cho bạn không?!
Nhưng để ghi được tiếng Việt, bạn fải gán 2 names mới
(1) Có tên là 'NgLB' & (2) có tên là 'ThuTruong' tương ứng với các dòng lệnh được đánh số trong macra dưới đây
Trong ngăn Refers to tương ứng fải là ="Người Lập Biểu:" & ="Thủ Trưởng Đơn Vị:"
Việc làm này để chúng ta có dòng tiếng Việt 1 cách đầy đủ trên trang tính báo cáo
PHP:
Sub tinhsh()
 Dim Rng1 As Range:              Dim eR As Long, jJ As Integer
 Sheet2.Select
 For Each Rng1 In ActiveSheet.Range("b11", [b65536].End(xlUp))
   Rng1.Offset(, 14).Value = Rng1.Offset(, 4).Value + Rng1.Offset(, 6).Value - _
      Rng1.Offset(, 8).Value - Rng1.Offset(, 10).Value - Rng1.Offset(, 12).Value
   For jJ = 5 To 15 Step 2
      Rng1.Offset(, jJ).Value = Rng1.Offset(, 3).Value * Rng1.Offset(, jJ - 1).Value
      Rng1.Offset(1, jJ - 1).Value = Application.WorksheetFunction.Sum(Range([b11], _
         [b11].End(xlDown)).Offset(0, jJ - 1))
      Rng1.Offset(1, jJ).Value = WorksheetFunction.Sum(Range([b11], [b11].End(xlDown)).Offset(0, jJ))
   Next jJ
 Next
 eR = Range("b65536").End(xlUp).Row
1 Cells(eR + 6, 3).FormulaR1C1 = "=NgLB"
2 Cells(eR + 6, 14).FormulaR1C1 = "=ThuTruong"
 For jJ = 11 To eR + 1
   FormatBorders Cells(jJ, "A").Resize(, 17)
 Next jJ
End Sub
Mã:
Sub FormatBorders(Rng As Range)
 Dim jJ As Long
 For jJ = 7 To 12
   Rng.Select
   With Selection.Borders(jJ)
      .Weight = 2 'xlContinuous'
   End With
 Next jJ
End Sub
Chúc bạn thành công & rất mong là khỏi gởi file lên!
¸
Cám ơn bạn đã giúp mình, việc tạo Name cho "người lập biểu, thủ trưởng" và tạo dòng kẻ cho dòng tính tổng. Nhưng bây giờ mình phải thêm 4 người nữa để ký trong báo cáo nhưng những người này lại ở phía dưới " người lập biểu và thủ trưởng" và mình đã tạo được thêm cell ở phía dưới cho những người này nhưng khi ấn vào nút "tạo báo cáo mới" thì những người mình tạo thêm thì nó không xoá đi mà vẫn còn ở đó, thứ 2 là dòng kẻ bạn tạo cho mình ở dòng tổng cộng cũng không xoá đi. Và mình muốn dòng tổng cộng mà bạn tạo thêm dòng kẻ cho mình cũng có chữ "Tổng Cộng" ở cùng dòng tính tổng để cho mọi người biết đấy là dòng tính tổng và mình chỉ muốn tính tổng các cột thành tiền thôi còn các cột SL (số lượng ) mình không tính tổng. Mong bạn sửa giúp cho mình !$@!!
 

File đính kèm

Bạn thay macro TinhSh cũ bằng cái ni, nha (Chú í các dòng lệnh đã đánh số)

PHP:
Sub tinhsh()
 Dim Rng1 As Range:              Dim eR As Long, jJ As Integer

 Sheet2.Select
 For Each Rng1 In ActiveSheet.Range("b11", [b65536].End(xlUp))
   Rng1.Offset(, 14).Value = Rng1.Offset(, 4).Value + Rng1.Offset(, 6).Value - _
      Rng1.Offset(, 8).Value - Rng1.Offset(, 10).Value - Rng1.Offset(, 12).Value
   For jJ = 5 To 15 Step 2
      Rng1.Offset(, jJ).Value = Rng1.Offset(, 3).Value * Rng1.Offset(, jJ - 1).Value
      Rng1.Offset(1, jJ - 1).Value = Application.WorksheetFunction.Sum(Range([b11], _
         [b11].End(xlDown)).Offset(0, jJ - 1))
      Rng1.Offset(1, jJ).Value = WorksheetFunction.Sum(Range([b11], [b11].End(xlDown)).Offset(0, jJ))
   Next jJ
 Next
 eR = Range("b65536").End(xlUp).Row
1 Cells(eR + 1, "D").Value = [IA1].Value
 Set Rng1 = Cells(eR + 1, "F")
 With Rng1
3   Union(.Offset(0), .Offset(, 2), .Offset(, 4), .Offset(, 6), .Offset(, 8), .Offset(, 10)).Value = ""
 End With
5 Cells(2 + eR, "B").Resize(50, 16).Clear
 Cells(eR + 6, 3).FormulaR1C1 = "=NgLB"
 Cells(eR + 6, 14).FormulaR1C1 = "=ThuTruong"
7 Cells(eR + 15, 3).Value = [IA2].Value   'Ngùoi Ký 1'
 Cells(eR + 15, 6).Value = [IA3].Value   'Ngùoi Ký 2'
9 Cells(eR + 15, 9).Value = [IA4].Value   'Ngùoi Ký 3'
 Cells(eR + 15, 13).Value = [IA5].Value   'Ngùoi Ký 4'
 For jJ = 11 To eR + 1
   FormatBorders Cells(jJ, "A").Resize(, 17)
 Next jJ
End Sub

Vì thụ lý vụ án này giữa chừng nên mình fải bổ sung thôi . . . . (Nếu ngay từ đầu mình có fương án khác) & cũng chưa khắc fục hết nhược điểm xóa định dạng dư thừa lần trước.
Như trong macro, bạn cần nhập tại ô iA1 chuỗi 'Tổng Cộng:' & dưới nó là 4 chức danh fải ký trong hóa đơn mà bạn đã nêu

Thân ái
 
PHP:
Sub tinhsh()
 Dim Rng1 As Range:              Dim eR As Long, jJ As Integer

 Sheet2.Select
 For Each Rng1 In ActiveSheet.Range("b11", [b65536].End(xlUp))
   Rng1.Offset(, 14).Value = Rng1.Offset(, 4).Value + Rng1.Offset(, 6).Value - _
      Rng1.Offset(, 8).Value - Rng1.Offset(, 10).Value - Rng1.Offset(, 12).Value
   For jJ = 5 To 15 Step 2
      Rng1.Offset(, jJ).Value = Rng1.Offset(, 3).Value * Rng1.Offset(, jJ - 1).Value
      Rng1.Offset(1, jJ - 1).Value = Application.WorksheetFunction.Sum(Range([b11], _
         [b11].End(xlDown)).Offset(0, jJ - 1))
      Rng1.Offset(1, jJ).Value = WorksheetFunction.Sum(Range([b11], [b11].End(xlDown)).Offset(0, jJ))
   Next jJ
 Next
 eR = Range("b65536").End(xlUp).Row
1 Cells(eR + 1, "D").Value = [IA1].Value
 Set Rng1 = Cells(eR + 1, "F")
 With Rng1
3   Union(.Offset(0), .Offset(, 2), .Offset(, 4), .Offset(, 6), .Offset(, 8), .Offset(, 10)).Value = ""
 End With
5 Cells(2 + eR, "B").Resize(50, 16).Clear
 Cells(eR + 6, 3).FormulaR1C1 = "=NgLB"
 Cells(eR + 6, 14).FormulaR1C1 = "=ThuTruong"
7 Cells(eR + 15, 3).Value = [IA2].Value   'Ngùoi Ký 1'
 Cells(eR + 15, 6).Value = [IA3].Value   'Ngùoi Ký 2'
9 Cells(eR + 15, 9).Value = [IA4].Value   'Ngùoi Ký 3'
 Cells(eR + 15, 13).Value = [IA5].Value   'Ngùoi Ký 4'
 For jJ = 11 To eR + 1
   FormatBorders Cells(jJ, "A").Resize(, 17)
 Next jJ
End Sub
Vì thụ lý vụ án này giữa chừng nên mình fải bổ sung thôi . . . . (Nếu ngay từ đầu mình có fương án khác) & cũng chưa khắc fục hết nhược điểm xóa định dạng dư thừa lần trước.
Như trong macro, bạn cần nhập tại ô iA1 chuỗi 'Tổng Cộng:' & dưới nó là 4 chức danh fải ký trong hóa đơn mà bạn đã nêu

Thân ái
Cám ơn tất cả các bạn đã nhiệt tình giúp đỡ mình, đến đây mình đã có thể tạo chữ tổng cộng ở cột "D" dòng cuối báo cáo rồi và thêm người ký ở các dòng (Còn về nhược điểm xoá định dạng dư thừa lần trước vẫn chưa khắc phục được).
- "(Nếu ngay từ đầu mình có fương án khác)" Phần này cũng do mình ngay từ đầu chưa tạo bảng rõ ràng và yêu cầu chưa cụ thể nên trong quá trình các bạn giúp đỡ mình sinh ra một số nhược điểm và không khả thi. Nếu mình tạo ngay bảng báo cáo bên Sheet báo cáo có dòng tổng cộng và các chức danh ký trong báo cáo và dữ liệu nhập sẽ chèn vào trước dòng tổng cộng thì tốt quá và dữ liệu nhập sẽ chuyển sang 2 sheet còn lại ( 1 sheet là báo cáo tháng và khi ấn vào tạo báo cáo mới thì dữ liệu báo cáo tháng sẽ xoá hết nhưng bên Sheet còn lại mình có thể gọi là báo cáo năm sẽ không xoá và khi nhập 1 dữ liệu cũng sẽ tự động chèn thêm hàng vào trước dòng tổng cộng và dữ liệu không bị xoá vì 2 Sheet báo cáo tháng cùng chung 1 mẫu báo cáo ) và như vậy mình có thể giải quyết được vấn đề dữ liệu báo cáo cả năm. Nếu được các bạn đóng góp và giúp mình với ý tưởng như vậy mình thấy báo cáo của mình sẽ khả thi và ít nhược điểm hơn. Một lần nữa mình cảm ơn các bạn rất nhiều ! -\\/.
 
Lần chỉnh sửa cuối:
Mà sao bạn không tạo 1 topic mới với fương àn mới, nhỉ?

Nhưng cần ngâm cứu thật kỹ cấu trúc CSDL đó nha!
 
Web KT

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

Back
Top Bottom