2012-01-16 43 views
7

Hãy nói rằng tôi có một loạt gọi rng1Excel VBA - Thực hiện chức năng cho mỗi tế bào trong phạm vi

Set rng1 = Worksheets("Sheet1").Range("A1","A5") 

Có một cách nhanh chóng và dễ dàng để thực hiện một chức năng toán học, cho phép nói chia tất cả những giá trị tế bào bằng 2 , cho tất cả các ô trong rng1?

Mọi trợ giúp đều được đánh giá cao!

+1

Hãy thử: 'Với Worksheets ("Sheet1") Phạm vi ("B1: B5") .Formula = "= A1/2" .Giá trị = .Value Kết thúc bằng ' – Reafidy

+0

hoặc sử dụng đặc biệt d ivide trên phạm vi của bạn bằng tay hoặc với VBA – brettdj

Trả lời

13

Rất dễ dàng, nhưng mã cuối cùng sẽ tùy thuộc vào nơi bạn muốn lưu trữ các giá trị mới. Ví dụ, nếu bạn muốn để lưu trữ các giá trị chia cho 2 trong cột tiếp theo:

Sub test() 

Dim cell As Range 

For Each cell In Range("A1:A5") 
    cell.Offset(, 1).Value = cell.Value/2 
Next 

End Sub 

Tâm trí bạn có những cách hiệu quả hơn để làm điều này hơn bằng cách sử dụng bù đắp nếu phạm vi của bạn là lớn, nhưng đối với một phạm vi nhỏ hơn, điều này là hoàn toàn chấp nhận được và nhanh chóng.

Nếu bạn muốn ghi đè lên các giá trị, bạn chỉ có thể sử dụng cell.Value ở vị trí của cell.Offset(,1).Value

1

Another Way

Sub Main() 
    [B1:B5] = [INDEX((A1:A5/2),)] 
End Sub 

Làm thế nào nó hoạt động tốt được giải thích here.

Các vấn đề liên quan