Nhờ viết code tự động ghi công thức vào bảng tính

Liên hệ QC

Cerise

Thành viên mới
Tham gia
23/11/09
Bài viết
38
Được thích
4
Gửi các anh chị Diễn đàn GPE,
Tôi có một bảng tính quản lý điểm học sinh (đã được xóa bớt cho nhẹ). Nay trong sheet Phiếu liên lạc lần 1 'PLL1' tôi muốn thêm vào dòng chữ chữ "Tổng điểm khảo sát:" tại ô G15, công thức Sum tại ô H15 và tương tự cho tất cả 60 phiếu trong sheet.
Nhờ anh chị giúp đoạn code để có thể tự động thêm chữ và công thức vào bảng tính vì nếu làm thủ công sẽ tốn nhiều thời gian và dễ sai sót.
Chân thành cảm ơn anh chị.
 

File đính kèm

  • Phieu Bao Diem.xls
    235.5 KB · Đọc: 13
Gửi các anh chị Diễn đàn GPE,
Tôi có một bảng tính quản lý điểm học sinh (đã được xóa bớt cho nhẹ). Nay trong sheet Phiếu liên lạc lần 1 'PLL1' tôi muốn thêm vào dòng chữ chữ "Tổng điểm khảo sát:" tại ô G15, công thức Sum tại ô H15 và tương tự cho tất cả 60 phiếu trong sheet.
Nhờ anh chị giúp đoạn code để có thể tự động thêm chữ và công thức vào bảng tính vì nếu làm thủ công sẽ tốn nhiều thời gian và dễ sai sót.
Chân thành cảm ơn anh chị.

code thì đợi các thầy cao tay ấn xíu nha, làm tay bạn có thể làm như vậy
1- chọn cell G15, nhấn Ctrl G42, nhấn Ctl chọn tiếp các cell mà bạn muốn ghi dữ liệu vào: gõ dòng chữ của bạn vào xong nhấn Ctrl enter
bạn được một dòng chữ xuất hiện trên tất cả các cell bạn đã chọn
2- tương tự như vậy bạn có thể làm hàm sum
 
Gửi các anh chị Diễn đàn GPE,
Tôi có một bảng tính quản lý điểm học sinh (đã được xóa bớt cho nhẹ). Nay trong sheet Phiếu liên lạc lần 1 'PLL1' tôi muốn thêm vào dòng chữ chữ "Tổng điểm khảo sát:" tại ô G15, công thức Sum tại ô H15 và tương tự cho tất cả 60 phiếu trong sheet.
Nhờ anh chị giúp đoạn code để có thể tự động thêm chữ và công thức vào bảng tính vì nếu làm thủ công sẽ tốn nhiều thời gian và dễ sai sót.
Chân thành cảm ơn anh chị.

Lúc đầu định viết code cho bạn nhưng thấy câu "đã được xóa bớt" nên sợ code chạy không đúng. Vì vậy hướng dẫn bạn làm thủ công nhưng nhanh không kém gì code. Cách làm như sau:

1. Chọn toàn bộ cột N và Autofilter
2. Lọc "Điểm TBCM:"
3. Chọn toàn bộ dòng chứa "Tổng điểm khảo sát:" (trong ví dụ là dòng 15). Copy
4. Quyét chọn toàn bộ các dòng có dữ liệu "Điểm TBCM:" rồi Paste (Ctrl+V)
 
Gửi bác TrungChinhs,
Viết code để gán dòng "Tổng điểm khảo sát:" vào các ô thì em làm được nhưng gán công thức thì không. Mong bác dành ít thời gian giúp em. Cảm ơn bác nhiều nhiều!
 
Gửi bác TrungChinhs,
Viết code để gán dòng "Tổng điểm khảo sát:" vào các ô thì em làm được nhưng gán công thức thì không. Mong bác dành ít thời gian giúp em. Cảm ơn bác nhiều nhiều!


Code này viết cho trường hợp phiếu đầu tiên đã có sẵn chữ và công thức như ví dụ của bạn.

Mã:
Sub BangDiem()
    Application.ScreenUpdating = False
    On Error Resume Next
    tmp1 = Cells.Find("tbcm", , , 2).Address
    tmp2 = Cells.Find("tbcm", , , 2, , 2).Address
    With Range(tmp1, tmp2)
        .AutoFilter 1, Cells.Find("tbcm", , , 2)
        Range(tmp1).Offset(, -7).Resize(, 2).Copy .Offset(, -7)
        .AutoFilter
    End With
End Sub
 

File đính kèm

  • Phieu Bao Diem.rar
    43.2 KB · Đọc: 19
Lần chỉnh sửa cuối:
Gửi bác TrungChinhs,
Nhờ bài của bác từ đây tôi có thể viết code cho các trường hợp tương tự. Chân thành biết ơn!
Trước khi có bài của TrungChinhs tôi đã sử dụng đoạn code sau để thêm nội dung nhưng không biết cách gán thêm công thức sum, nếu có thể các bác chỉ giáo giúp.
Private Sub Tong_Diem_Khao_Sat()
For i = 0 To 59
Cells(i * 27 + 15, 7) = "Tong diem khao sat:"
Cells(i * 27 + 15, 7).HorizontalAlignment = xlRight
Next i
End Sub
 
Lần chỉnh sửa cuối:
Gửi bác TrungChinhs,
Nhờ bài của bác từ đây tôi có thể viết code cho các trường hợp tương tự. Chân thành biết ơn!
Trước khi có bài của TrungChinhs tôi đã sử dụng đoạn code sau để thêm nội dung nhưng không biết cách gán thêm công thức sum, nếu có thể các bác chỉ giáo giúp.
Private Sub Tong_Diem_Khao_Sat()
For i = 0 To 59
Cells(i * 27 + 15, 7) = "Tong diem khao sat:"
Cells(i * 27 + 15, 7).HorizontalAlignment = xlRight
Next i
End Sub

Code tôi viết trên cơ sở lợi dụng dữ liệu có sẵn trên bảng tính (chữ có dấu, công thức) nhằm:
- Không dùng vòng lặp (đây là thuật giải khó nhất)
- Không phụ thuộc vào vị trí bạn đặt bảng tính (bạn có thể đặt khu vực bảng tính ở bất kỳ dòng nào, cột nào)
- Không phụ thuộc vào số lượng phiếu (code có thể làm việc với số lượng < 60 hoặc > 60)

Với code của bạn, muốn gán công thức thì phải thêm dòng lệnh thứ 3 và đặc biệt là những ký tự màu đỏ.

Mã:
For i = 0 To 59
Cells(i * 27 + 15, 7) = "Tong diem khao sat:"
Cells(i * 27 + 15, 7).HorizontalAlignment = xlRight
Cells(i * 27 + 15, [SIZE=3][B][COLOR=#ff0000]8[/COLOR][/B][/SIZE])=[SIZE=3][COLOR=#ff0000][B]"=SUM(R[-9]C:R[-1]C[1])"[/B][/COLOR][/SIZE]
Next i

Tuy nhiên với vùng cộng khác ví dụ này thì bạn phải chỉnh lại công thức.

Nhân tiện tôi xin nói rằng: Đây là công thức đơn giản nhất nhưng không dễ nếu như nhập bằng tay.

Vì vậy tôi xin hướng dẫn bạn cách nhập công thức bằng VBA rất đơn giản, không cần bận tâm đến độ phức tạp của công thức.

Bước 1. Trên bảng tính bạn nhập công thức theo đúng ý của bạn. Ví dụ tại ô H15 bạn nhập =SUM(H6:I14)

Bước 2. Bạn đặt con trỏ vào ô có công thức (Vd H15) -> bật Recode Macro -> OK -> nhấn phím F2 -> Enter -> Stop Macro.

Bước 3. Alt + F11 vào VBE mở Macro vừa ghi Copy công thức dán vào code. Ví dụ: công thức tại H15 =SUM(H6:I14) nhưng trong Macro là ="=SUM(R[-9]C:R[-1]C[1])"

Bạn xem thêm bài này
http://www.giaiphapexcel.com/forum/showthread.php?22569-Hạn-chế-lệnh-rác-trong-Macro
 
Lần chỉnh sửa cuối:
Gửi bác TrungChinhs,
Những điều bác vừa dạy không thấy sách vở nào ghi. Tuyệt!
Mong có điều kiện được học hỏi bác nhiều hơn.
 
mình rất khâm phục bạn
bạn đã đọc hết tất cả các sách
}}}}}}}}}}}}}}}}}}}}}}}}}
câu từ trong bài của bạn thì không có gì sai nhưng ai cũng nhận thấy lời khen đó không chân thành. Tôi không biết bạn Cerise bao nhiêu tuổi nhưng thấy thời gian post bài đã gần 12 giơ đêm là tôi trân trọng tinh thần, thái độ học tập của bạn ấy. Tôi đảm bảo chắc chắn rằng kiến thức mà ta có được là do cả học hỏi và sáng tạo. Vì vậy không phải cái gì có ta đều biết và cũng không phải cái gì ta biết đều đã có nên câu không thấy hoặc chưa thấy chỉ là ý chủ quan của người viết thôi có thể hiểu là: đã đọc hết nhưng không thấy (trường hợp này it xảy ra); đọc ít nên không thấy (trường này là phổ biến). Vì vậy tùy từng trường hợp mà khen chê Sao cho có tác dụng động viên khích lệ nhau học tập.
 
Lần chỉnh sửa cuối:
@ Let'GâuGâu Thấy bạn nhấn nút cảm ơn tôi mới hiểu tâm ý trong chữ ký của Bạn "
Tri thức là sức mạnh. Sòng phẳng là tri kỹ"​
. Gửi tới bạn lời cảm ơn chân thành.
 
Let'GâuGâu đừng hiểu nhầm ý tôi. Tôi đọc sách ít thôi. Ý tôi là, để cô đọng thành 3 bước như thế nếu không có người có kinh nghiệm chia sẻ thì không dễ biết được. Thân!
 
Web KT

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

Back
Top Bottom