Tính toán trong Word bằng VBA

Liên hệ QC

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia
13/6/06
Bài viết
7,121
Được thích
24,279
Chúng ta có thể xác định giá trị của biểu thức khi khai báo tại 1 dòng (chỉ sử dụng các phép tính + - * / thông thường) bằng VBA như file dưới đây:

TinhtoanWord.jpg
 

File đính kèm

  • Cong thuc Word.doc
    28.5 KB · Đọc: 585
Chúng ta có thể xác định giá trị của biểu thức khi khai báo tại 1 dòng (chỉ sử dụng các phép tính + - * / thông thường) bằng VBA như file dưới đây:

TinhtoanWord.jpg

Sao mình kích vào tính toán mà không được vậy? Bạn có thể hướng dẫn mọi người làm được ko? Thanks
 
Tính toán không được thì có thể Security của bạn đang ở chế độ High đó. Bạn vào Tools -> Macro -> Security -> chọn chữ Low -> OK. Khởi động lại file Cong thuc Word.doc rồi thử xem. Thân.
 
Lần chỉnh sửa cuối:
Sao trong VBA chỉ có 1 dòng lệnh (cũng không hiểu nó luôn). File tính thì ok nhưng chi tính được có 1 dòng.
Phải chi VBA tổng quát hơn VD như khi bôi đen công thức nào thì tính toán cho công thức đó thì sẽ hay hơn.
 
Có thể thực hiện Việc tính toán trong Word theo nhiều cách:
1. Dùng trong bảng (table)
2. Nhúng (Embedding) một phần bảng tính của Excel vào W
3. Sử dụng Field Codes

Với các phép toán thông thường, gồm: + - * / ^ (lũy thứa) %(phần trăm), các phép toán so sánh (<, >, >=, <=, >=, <>); kết hợp với các hàm thông dụng:
PHP:
ABS(x) Returns the positive value of a number or formula, regardless of its actual positive or negative value. AND(x,y) Returns the value 1 if the logical expressions x and y are both true, or the value 0 (zero) if either expression is false. AVERAGE( ) Returns the average of a list of values. COUNT( ) Returns the number of items in a list. DEFINED(x) Returns the value 1 (true) if the expression x is valid, or the value 0 (false) if the expression cannot be computed. FALSE Returns 0 (zero). INT(x) Returns the numbers to the left of the decimal place in the value or formula x. MIN( ) Returns the smallest value in a list. MAX( ) Returns the largest value in a list. MOD(x,y) Returns the remainder that results from dividing the value x by the value y a whole number of times. NOT(x) Returns the value 0 (zero) (false) if the logical expression x is true, or the value 1 (true) if the expression is false. OR(x,y) Returns the value 1 (true) if either or both logical expressions x and y are true, or the value 0 (zero) (false) if both expressions are false. PRODUCT( ) Returns the result of multiplying a list of values. For example, the function { = PRODUCT (1,3,7,9) } returns the value 189. ROUND(x,y) Returns the value of x rounded to the specified number of decimal places y; x can be either a number or the result of a formula. SIGN(x) Returns the value 1 if x is a positive value, or the value –1 if x is a negative value. SUM( ) Returns the sum of a list of values or formulas. TRUE Returns the value 1.


Cách dùng như sau:

1. Nhấn Ctrl-F9 để chèn mã trường (gồm 2 dấu { } )
2. Nhập công thức = Biểu thức tính, ví dụ: = 2 + 5 - (6*2)/2, vào bên trong mã
3. Nhấn F9 (hoặc Shift-F9)

Khi cần chỉnh công thức, có thể chọn và nhấn Shift-F9


-hvl-
 
Sử dụng 1 UDF trong Word thế nào các bác nhỉ ??
VD :
PHP:
Function So() As Long
   So = 10
End Function
Hay ví dụ như hàm đọc số thành chữ chẳng hạn. Áp dụng Table/Formula.. mà không được+-+-+-+
Tức là đọc 1 số ở 1 dòng khác
Có File VD càng tốt

Thanks!
 
Mọi người tham khảo nhé :

Tính toán trong MS WordTrong nhiều trường hợp, người dùng có nhu cầu tính toán trong văn bản của mình. Biết vậy nên MS Word được trang bị một công cụ để chiều lòng các “thượng đế”, đó là trường (field), dùng để tính cả ở trong bảng lẫn mọi nơi trên văn bản.

- Tính toán trong bảng: Khi bạn dùng lệnh Table\ Formula tức là bạn đã chèn một trường tính toán. Trường tính toán bắt đầu bằng dấu bằng. Cách thức hoạt động của công thức (hoặc hàm) cũng như địa chỉ tham chiếu đến các ô trong bảng tương tự như trong Excel. Nếu nhìn thấy công thức =SUM(LEFT) hoặc =SUM(ABOVE) cứ trơ như đá khi bạn sao chép hoặc thay đổi giá trị của các ô, bạn chớ vội tưởng công thức này chỉ có giá trị một lần và sao chép sang vị trí khác thì không dùng được. Trong trường hợp này, chọn trường công thức rồi nhấn F9 để Word cập nhật lại giá trị của nó. Nếu muốn Word tự động cập nhật các trường khi in, vào menu Tools\ Options > chọn thẻ Print > chọn Update fields. Các trường không được cập nhật ngay nhưng mỗi khi thực hiện lệnh Print (hoặc xem bằng Print Preview cũng được), Word sẽ tự động làm điều này cho bạn.


- Tính toán trên văn bản: Bạn có một số tổng cộng và các số hạng chi tiết của nó nằm rải rác trên văn bản. Vì thường xuyên phải điều chỉnh các số liệu chi tiết nên bạn muốn số tổng cộng phải được cập nhật tự động nhằm tránh sai sót. Trước tiên, bạn đánh dấu các số liệu chi tiết bằng lệnh Bookmark trong menu Insert. Sau đó, dùng trường công thức để tính toán dựa theo tên của các bookmark. Ví dụ: ta có 3 giá trị 14500, 65000, 2450 với tên bookmark lần lượt là solieu1, solieu2, solieu3, hãy gõ cấu trúc mã trường như sau (trước tiên nhấn Ctrl+F9 để có cặp ngoặc nhọn rồi gõ công thức vào bên trong):

{=solieu1+solieu2+solieu3 \# “##0.00}. Kết quả hiển thị là 81950.00. Bây giờ, dù các chi tiết có thay đổi, bạn cũng không phải lo đến số tổng nữa, Word sẽ tự động cập nhật khi bạn in ra giấy. Bạn có thể cộng, trừ, nhân, chia, lũy thừa... các bookmark này thoải mái như làm trong Excel vậy.

Theo cuasotinhoc

Theo dantri


Người dùng vẫn nghĩ công cụ Table của Word đơn giản chỉ là trình bày dữ liệu dạng bảng với dòng và cột nhưng thực tế, tuy không thể so sánh được với Excel về mặt tính toán, song Word cũng cho phép người dùng có thể thực hiện được một số phép tính cộng, trừ, nhân, chia để hỗ trợ hơn cho người dùng.

Cũng có thể người dùng cho rằng tính toán trong Word còn chậm hơn là tính bằng tay rồi điền kết quả vào. Tuy nhiên, điểm lợi thế hơn hẳn khi tính toán luôn trong Table của Word là việc khi chỉnh sửa dữ liệu thì máy có khả năng cập nhật kết quả, còn nếu tính bằng tay thì lại phải tính lại và điền lại. Lúc đó thì tính toán bằng tay lại chậm hơn.
30205994_Table-Word2007.jpg
Bảng 1. Bảng dữ liệu cần tính toán Lấy ví dụ cụ thể như ở bảng 1. Để thực hiện bảng dữ liệu trên, người dùng thực hiện qua ba bước: nhập dữ liệu, tính toán và định dạng.
Bước 1. Nhập dữ liệu tất cả các cột, trừ cột Thành tiền
Bước 2. Tính Thành tiền = Số lượng + Đơn giá:
30205994_Table-Word2007a.jpg
Hộp thoại Formula - Kích chuột vào ô đầu tiên của cột Thành tiền, chọn lệnh Layout/Formula (fx)
- Nhập công thức tính theo hai cách tại ô Formula:
+ Tính trực tiếp theo cách dùng địa chỉ theo dòng và cột của Excel. Trong trường hợp cụ thể này, Số lượng là cột D, Đơn giá là cột C, dòng cần tính là dòng 2, nên công thức tính sẽ là =c2+d2
+ Hoặc có thể sử dụng các hàm có trong ô Paste Function ở bên dưới hoặc gõ tên hàm vào. Trong Word có thể sử dụng các hàm cơ bản như: Sum (tính tổng), Count (đếm), Average (tính trung bình cộng), Max (giá trị lớn nhất), Min (giá trị nhỏ nhất), Product (nhân) … và có thể sử dụng địa chỉ ô và vùng như Excel. Để tính Thành tiền có thể viết như sau: = Product(left) hoặc = Product(c2:d2)
- Chọn chế độ định dạng tại ô Number Format (ví dụ: #,##0)
Bước 3. Sao chép xuống các ô bên dưới: Bôi đen kết quả vừa tính, chọn copy và paste xuống các ô bên dưới của cột thành tiền rồi bấm F9 để cập nhật theo dòng.
Bước 4. Tính tổng: kích chuột vào ô cuối cùng của dòng Thành tiền và chọn Layout/Formula, nhập công thức =sum(above) và chọn chế độ định dạng tại ô Number Format rồi OK.
Trong quá trình làm việc, nếu dữ liệu tại các cột Số lượng và Đơn giá có điều chỉnh thì chỉ cần bôi đen cột Thành tiền và bấm F9 thì máy sẽ tự động cập nhập kết quả theo số liệu mới.
Chú ý: nếu người dùng nhập sai kiểu số liệu hoặc trong bảng có các ô dạng Merge Cells thì có thể kết quả tính toán sẽ không chính xác.
 
Web KT
Back
Top Bottom