06/04/2021, 14:51

ìm hiểu thuộc tính FormulaR1C1 trong VBA - ự học Excel VBA

Trong bài này mình sẽ giải thích thuộc tính FormulaR1C1 trong VBA, đây là thuộc tính mà bạn sẽ thấy khi sử dụng tính năng Record Macro. Trong VBA có thuộc tính Formula dùng để tạo công thức rồi, nhưng tại sao lại xuất hiện thêm thuộc tính FormulaR1C1? Điều này dễ hiểu bởi tính năng Record Macro ...

Trong bài này mình sẽ giải thích thuộc tính FormulaR1C1 trong VBA, đây là thuộc tính mà bạn sẽ thấy khi sử dụng tính năng Record Macro.

Trong VBA có thuộc tính Formula dùng để tạo công thức rồi, nhưng tại sao lại xuất hiện thêm thuộc tính FormulaR1C1? Điều này dễ hiểu bởi tính năng Record Macro không đủ thông minh như con người để đưa ra công thức chuẩn, nó sẽ dựa vào một quy luật khác và dùng FormulaR1C1 thay thế cho Formula.

* Lưu ý: Bạn phải đọc hai bài dưới đây trước khi xem bài này nhé.

  • Record Macro trong Excel VBA
  • Cách dùng tham chiếu trong Macro Recorder

Ta sẽ làm từng bước để các bạn dễ hiểu hơn nhé.

I. Formula A1 Style

Tạo một command button trong worksheet mà bạn đang sử dụng, sau đó nhập giá trị cho ô B3 = 2. Cuối cùng nhập công thức sau vào sự kiện click của button đó.

Range("D4").Formula = "=B3*10"

Khi bạn click vào button thì kết quả sẽ như sau:

A1 style png

Rất dể hiểu, bởi công thức mà ta gắn vào rất giống với công thức Excel mà ta đã học ở series Excel căn bản.

Và cách sử dụng công thức kiểu này ta gọi là A1 Style.

II. Formula R1C1 - tham chiếu tương đối

Vẫn là bài toán ở phần 1, hãy thay đổi công thức cho sự kiện click vào button thành:

Range("D4").FormulaR1C1 = "=R3C2*10"

Lưu lại và click vào button thì bạn sẽ nhận kết quả:

R1C1 style png

Kết quả vẫn như nhau nhưng công thức thì lại khác.

Giải thích:

  • Công thức R3C2 chính là ô nằm ở Row 3 và Cột 2 => chính là ô B3
  • Style này là tham tương đối nên nhìn vào công thức bạn sẽ thấy có ký hiệu $ đằng trước ($B$3).

Nếu quay lại bài tham chiếu khi record macro thì nó chính là tùy chọn Use Relative References.

use relative references png

3. Formula R[1]C[1] - Tham chiếu tuyệt đối

Công thức này nó sẽ tính từ vị trí của ô đang chạy công thức tiến tới hoặc lùi bao nhiêu ô tùy vào giá trị mà ta truyền vào, điểm tiếp giáp chính là vị trí tham chiếu.

  • R[1]C[1] => Nhảy xuống 1 row và tiến tới 1 column
  • R[-1]C[-1] => Nhảy lên 1 row và lùi 1 column

Xét đến ví dụ ở trên thì ta phân tích như sau: Ô đang chọn là ô D4, ô cần tham chiếu là ô B3 nên:

  • Nhảy lên 1 row => R[-1]
  • Lùi 2 column => C[-2]
  • => Kéte quả là R[-1]C[-2]

Bạn hãy đổi lại công thức ở macro như sau:

Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10"

Chạy macro thì kết quả sẽ như sau:

R 5B1 5DC 5B1 5D style png

Giải thích: Vì là tham chiếu tuyệt đối nên công thức không có ký tự đô la $.

Qua bài này thì ta thấy macro sẽ dựa vào công thức của FormulaR1C1 để nhận biết đang là tham chiếu tương đối hay tuyệt đối.

Như vậy là mình đã giải thích được ý nghĩa của hai thuộc tính Formula và FormulaR1C1 trong Excel. Chúc bạn học tốt nhé.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0