Nhờ các anh chị sửa macro

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

adua29

Real-life Girls Super Сasual Dating
Tham gia
29/4/08
Bài viết
156
Được thích
111
Giới tính
Nam
Nghề nghiệp
Health
Em có macro tính tổng như sau:

Sub TIHTONG()
'
' TIHTONG Macro
' Macro recorded 14/03/2010 by Smart
'
Range("L21").Select
Application.CutCopyMode = False
Selection.Copy
Range("H4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F5060").Select
Application.CutCopyMode = False
Selection.Copy
Range("M21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H7").Select
Application.CutCopyMode = False
Selection.Copy
Range("N21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("L22").Select
Application.CutCopyMode = False
Selection.Copy
Range("H4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F5060").Select
Application.CutCopyMode = False
Selection.Copy
Range("M22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H7").Select
Application.CutCopyMode = False
Selection.Copy
Range("N22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
..............................................
End Sub

Mục đích là:
Lấy lần lượt từng giá trị từ vùng $L21....$L70 dán vào ô $H$4 (ô nhập)
Sau mỗi lần nhập giá trị vào ô H4 thì thực hiện:
Sao chép giá trị trong ô H7 vào $M21....$M70 tương ứng
Sao chép giá trị trong ô F5060 vào $N21....$N70 tương ứng

Em đã làm được macro cho tất cả các giá trị trong vùng cần tính như trên tuy nhiên nó có nhược điểm là:
- Số lượng ô có giá trị lớn hơn không trong vùng $L21....$L70 luôn thay đổi biến động và có giá trị tăng không theo quy luật. (Các ô có giá trị lớn hơn 0 là liên tục từ L21)
- Macro thì cứ chạy từ 21 cho đến 70 (max) trong khi đó những giá trị = 0 nó vẫn tính và cho ra kết quả #N/A.
- Do số lượng tính toán lớn nên macro chạy rất chậm

Đề nghị giúp đỡ là:
Em chỉ muốn macro chạy cho đến hết giá trị lớn hơn 0 thì tự dừng lại.
Cho em hỏi có thể dùng các lệnh điều kiện IF then, For ... do...next trong macro này được không?
Nếu được nhờ các anh sửa chữa giùm hoặc tạo mới
 
Bạn nên đưa file lên và nêu rõ yêu cầu trong file. Nếu không đưa file gốc được thì bạn giả lập 1 file càng giống file gốc càng tốt. Chắc chắn sẽ có code phù hợp hơn cho bạn, không phải là macro có được từ Record New Macro.
 
Upvote 0
Bạn thử với macro này xem sao.

PHP:
Option Explicit
Sub TinhTong()
 Dim Clls As Range
 
 For Each Clls In Range([L21], [l70])
'Chi Tien Hành Chép Nhung Ô Có Tri >0 Vo [H4]:'
   If Clls.Value > 0 Then
      [H4].Value = Clls.Value
'Gán Tri Cot M:'
      Clls.Offset(, 1).Value = [H7].Value
'Gán Tri Cho Cot L Tuong Ung:'
      Clls.Value = [F5060].Value
   End If
 Next Clls
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom