Có thể dùng code làm công thức cho một cột được không?

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,720
Giới tính
Nam
Nếu như phải nhập dữ liệu rất nhiều, đòi hỏi phải chép công thức rất dài, thậm chí chép đến hàng cuối cùng của bảng tính, vậy có giải pháp nào (code) cho cột xử lý không?
Xin được Anh Chị hướng dẫn giúp mình.
Cảm ơn rất nhiều!
 
Lần chỉnh sửa cuối:
Khỏi cần công thức luôn. Mình đã làm cho nó tự động rồi (Bạn nhấn Alt + F11, sẽ thấy công thức). Bạn chỉ cần nhập đầy đủ các số vào 4 cột đầu tiên thì nó sẽ có kết quả ở 3 cột còn lại. Bạn xem file nha! Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thế này cũng được này

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
 
 If Not Intersect(Target, Columns("D:D")) Is Nothing Then
   With Target
      .Offset(, 1) = WorksheetFunction.Sum(Range(.Offset(, -3), .Offset()))
      .Offset(, 2) = .Offset(, -3) + .Offset(, -2)
      .Offset(, 3) = .Offset(, -1) * .Offset()
   End With
 End If
End Sub
 
Upvote 0
Phát triển công thức làm excel treo luôn... huhu

Em dùng đoạn code của bác Po_Pikachu để áp dụng cho file của em như sau:

Private Sub worksheet_change(ByVal Target As Range)
'tinh ngay den han
If Cells(Target.Row, 1) <> "" And Cells(Target.Row, 2) <> "" And Cells(Target.Row, 4) <> "" Then
If Target.Row <= 3 Then Exit Sub
Cells(Target.Row, 5) = Application.WorksheetFunction.EDate(Cells(Target.Row, 1), Cells(Target.Row, 4))
End If

'Tinh du no ngan han
If Cells(Target.Row, 1) <> "" And Cells(Target.Row, 7) <> "" Or Cells(Target.Row, 8) <> "" Or Cells(Target.Row, 10) <> "" Or Cells(Target.Row, 11) <> "" Then
If Target.Row <= 4 Then Exit Sub
Cells(Target.Row, 12) = Cells(Target.Row - 1, 12) + Cells(Target.Row, 7) - Cells(Target.Row, 10)
Cells(Target.Row, 13) = Cells(Target.Row - 1, 13) + Cells(Target.Row, 8) - Cells(Target.Row, 11)
End If

End Sub


Nhưng khi em điền các số liệu liên quan để excel tính toán thì chương trình treo luôn,
nhấp nháy liên hồi
Em đoán là code đã được thực thi liên tục, không dừng lại. Tuy nhiên, em vẫn chưa biết nguyên nhân ở đâu (có phải thiếu lệnh dừng tính toán?)
Nhờ các bác chỉnh lại giúp!
 
Upvote 0
Nếu như phải nhập dữ liệu rất nhiều, đòi hỏi phải chép công thức rất dài, thậm chí chép đến hàng cuối cùng của bảng tính, vậy có giải pháp nào (code) cho cột xử lý không?
Xin được Anh Chị hướng dẫn giúp mình.
Cảm ơn rất nhiều!
Có một cách không cần dùng code đâu bạn à. Đó là dùng List.
Chức năng này có sẵn trong menu Data của Excel2003. Nếu dùng Excel2007, thì nó có tên là Table.

Ví dụ, với bảng tính của bạn, bạn chỉ cần làm dòng tiêu đề, và cung cấp cho nó một hàng làm mẫu:
000-44.png
Bạn chọn khối ô A1:G2, rồi gọi menu Data, List, Create List...
000-45.png
Excel sẽ mở một hộp thoại và hỏi bạn:
000-46.png
Nếu như bạn đã chọn A1:G2 trước rồi, thì chỉ việc nhấn OK.

Trong ô E2, F2 và G2, bạn nhập vào công thức bạn muốn.
Sau đó đứng tại G2, bạn nhấn phím Tab, Excel sẽ tự động đưa bạn tới ô A3.
Bạn nhập số vào A3, B3 và C3... bạn sẽ thấy công thức trong E3, F3 và G3 sẽ tự động có mà bạn không cần copy gì cả.
Bạn cứ nhấn Tab tiếp, khi tới G3, Excel sẽ tự động nhảy xuống A4... Và cứ thế mà bạn tiếp tục (tay phải nhập số vào cột A, B và C, tay trái nhấn Tab... khỏi cần dùng chuột):
001-8.png
Bạn cần dữ liệu tới đâu, Excel điền công thức tới đó. Hy vọng là đúng như ý bạn muốn.

Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã sử dụng qua phương pháp của BNTT nhưng nếu là công thức mảng thì tính toán chậm lắm, có cách nào tăng tốc được ko?
 
Upvote 0
Khỏi cần công thức luôn. Mình đã làm cho nó tự động rồi (Bạn nhấn Alt + F11, sẽ thấy công thức). Bạn chỉ cần nhập đầy đủ các số vào 4 cột đầu tiên thì nó sẽ có kết quả ở 3 cột còn lại.
Bạn xem file nha!
Thân.

Tôi cảm ơn Po_Pikachu rất nhiều, tuy nhiên khi tôi sử dụng thử file mà bạn đã viết sẳn công thức (code) cho tôi, tôi đã thử nhập hết 4 giá trị thì nó chạy ra kết quả tốt, song, chỉ nhập 1 giá trị bất kỳ vào cột bất kỳ, nó không báo kết quả gì hết. Làm thế nào để khắc phục được hả bạn?
Tôi mù mờ lắm, mong được hướng dẫn
Chân thành cảm ơn!
 
Upvote 0
Có một cách không cần dùng code đâu bạn à. Đó là dùng List.
Chức năng này có sẵn trong menu Data của Excel2003. Nếu dùng Excel2007, thì nó có tên là Table.

Tôi cảm ơn bạn BNTT, bạn rất hay khi sử dụng List, tôi đã thử dùng và chạy tốt. :=\+Tuy nhiên khi nhập giá trị bằng Form, không hề sử dụng tab thì những cột cho kết quả không chạy. Khắc phục được không hả bạn?

Cảm ơn bạn rất nhiều!/-*+/
 
Upvote 0
Web KT

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

Back
Top Bottom