Text và number trong cell

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Tôi ko biết viết bài này vào mục "Excel và những vấn đề chung" là có phù hợp hay ko (do có liên quan đến macro).. nhưng cũng xin góp tí kinh nghiệm và mong dc sự góp ý của các cao thủ về những vấn đề tôi chưa biết dưới đây:
-Trường hợp 1: Giã sử trong 1 file mới, tôi chọn A1:A10 và Format cells thành Text, sau dó nhập số từ 1 đến 10 vào... đương nhiên là các số này ko tính toán dc vì nó là text... dùng SUM(A1:A10) kiểm tra cho kết quả = 0 (hợp lý)... tiếp theo tôi chọn A1:A10 và format cells lại thành General hoặc number nhưng SUM(A1:A10) vẫn bằng 0 ???
-Trường hợp 2: Cũng trong 1 file mới, tôi nhập vào A1:A10 các số từ 1 đến 10, hàm SUM(A1:A10) cho kết quả = 55 (hợp lý)... tiếp theo tôi lại chọn A1:A10 và format cell thành Text, vậy mà SUM(A1:A10) vẫn cho kết quả = 55 ???
Chì khác nhau giữa việc format trước nhập số sau hoặc nhập số trước format sau mà lại có 2 kết quả... thật kỳ lạ
Món này chắc nhờ các cao thủ giãi thích thêm...
Ở đây tôi gữi lên 2 đoạn code dùng đễ chuyễn từ text sang number...
PHP:
Sub Text2Num1()
    For Each N In Range("A1:F10")
       N.NumberFormat = "General"
       N.Value = N.Value
    Next
End Sub
PHP:
Sub Text2Num2()
    Selection.NumberFormat = "General"
    For Each N In Selection
       N.Value = N.Value
    Next
End Sub
Code 1: làm việc trong vùng A1:F10 (có thể chỉnh lại theo ý)
Code 2: Làm việc với vùng nào ta quét chọn trước (quét chọn khối cell rồi chạy code)
Các bạn xem file tham khảo... nó dc cái lợi là có thể chuyễn công thức từ dạng text thành công thức thật sự (xem cell A1 và B8 trước và sau khi chạy code)
Mến
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
T
-Trường hợp 1: Giã sử trong 1 file mới, tôi chọn A1:A10 và Format cells thành Text, sau dó nhập số từ 1 đến 10 vào... đương nhiên là các số này ko tính toán dc vì nó là text... dùng SUM(A1:A10) kiểm tra cho kết quả = 0 (hợp lý)... tiếp theo tôi chọn A1:A10 và format cells lại thành General hoặc number nhưng SUM(A1:A10) vẫn bằng 0 ???
Trường hợp 1: Khi Sum cho ra kết quả là 0 (hợp lý) --> Ô chứa Sum(A1:A10) được định dạng là text. Dễ dàng kiểm tra ngay bằng Ctrl+1. Nếu ta F2 vào nó sẽ ghi ra luôn dòng text =SUM(F1:F10).
Nếu định dạng A1:A10 là text trước khi SUM thì vẫn ra kết quả là 55 (?), kiểm tra định dạng của ô kết quả: Text, F2 vào ô kết quả thì lại được dòng text =SUM(F1:F10) (?)
 
- Khi ta nhập dữ liệu vào ô thì dữ liệu bị định dạng theo định dạng của ô. Định dạng này không thay đổi trong quá trình ta sử dụng (dù di chuyển đến các vị trí khác, sang book khác...)Nếu muốn chuyển đổi ta phải dùng hàm hoặc VBA.
-Ở trường hợp 1, bạn định dạng dãy ô là text rồi nhập dữ liệu thì dữ liệu ấy luôn có dạng text dù bạn định dạng lại dãy ô là number.
-Ở trường hợp 2, khi bạn nhập số vào trước khi định dạng cells. Dữ liệu ấy được định dạng theo mặc định ở excel (general). Nên nó là số.
 
-Mình nghĩ như thế. Vì ta format sau là chỉ format ô đó thôi. Còn dữ liệu không vì thế mà định dạng trở lại.
-Trong thực tế, mình đã từng khổ ( có lẽ bạn cũng thế) bởi một đống dữ liệu về date mà khi nhập, người ta nhập sai định dạng. Nếu dữ liệu có thể được định dạng lại bằng định dạng ô thì khỏe biết bao!
 
anhtuan1066 đã viết:
-Trường hợp 1: Giã sử trong 1 file mới, tôi chọn A1:A10 và Format cells thành Text, sau dó nhập số từ 1 đến 10 vào... đương nhiên là các số này ko tính toán dc vì nó là text... dùng SUM(A1:A10) kiểm tra cho kết quả = 0 (hợp lý)... tiếp theo tôi chọn A1:A10 và format cells lại thành General hoặc number nhưng SUM(A1:A10) vẫn bằng 0 ???
Bác Voda nói đúng đó, từ đầu bác đã định dạng ô đó là text thì dù bác có định dạng lại thành số, giá trị trong cell đó vẫn là text, định dạng này không thay đổi trong quá trình sử dụng.

Như cho em hỏi cái đã, tại sao bác không dùng Paste Special ? Mà phải làm một hàm chuyển đổi bằng VBA cho cực thế?

Nghĩa là em sẽ gõ một con số 1 ở đâu đó, rồi copy, sau đó Paste Special vào những cái ô số dạng text, ví dụ cái A1:A10 của bác, thêm một tùy chọn Multiply, ngay lập tức từ A1:A10 sẽ thành số liền, liếc xuống cái Status Bar sẽ thấy ngay có dòng Sum = 55 (còn trước đó chỉ có Count = 10 thôi).

Trường hợp 2: Cũng trong 1 file mới, tôi nhập vào A1:A10 các số từ 1 đến 10, hàm SUM(A1:A10) cho kết quả = 55 (hợp lý)... tiếp theo tôi lại chọn A1:A10 và format cell thành Text, vậy mà SUM(A1:A10) vẫn cho kết quả = 55 ???
Còn trường hợp này, thì chắc đàng phải dùng cột phụ, và dùng hàm FIXED() để chuyển nó sang dạng text.

Ví dụ: B1:B10 = FIXED(A1:A10, 0)
Sum(A1:A10) = 55 / Nhưng SUM(B1:B10) =0
 
Lần chỉnh sửa cuối:
Như cho em hỏi cái đã, tại sao bác không dùng Paste Special ? Mà phải làm một hàm chuyển đổi bằng VBA cho cực thế?
Bởi vì paste special ko ăn thua với công thức... Bạn mở file tôi lên rồi làm thử xem... Cứ làm sao cho cell A1 và B8 thành công thức thật sự là ăn tiền
Món này có lần bạn Salam đã đưa ra giãi pháp dùng chức năng Replace thay thế "=" thành "=" .. và đó là giãi pháp tốt, tuy nhiên nó lại cũng ko ăn thua với cell thường ko phải công thức...
Như vậy đấy
Bạn xem kỹ đi... và kết luận cuối cùng theo trình độ hiểu biết của tôi hiện nay chỉ có VBA mới giãi quyết tận gốc dc vấn đề


Tôi thấy bên trong này có 1 ứng dụng rất hay! Ko chỉ đơn giãn là sửa lỗi đâu...
Trong 1 file có nhiều công thức, nếu bạn gõ trực tiếp công thức vào thì file sẽ chậm do phải tính toán nhiều... Vậy bây giờ bạn format những cell ấy thành Text rồi gõ công thức vào, đến khi cần tính toán thì "hô biến" một phát, nó sẽ trở thành công thức... ha..ha.. Có lý đấy chứ! (ít ra sẽ làm cho file ko bị chậm)
ANH TUẤN
 
Chỉnh sửa lần cuối bởi điều hành viên:
Hổng phải em muốn cãi với bác đâu...
Nhưng mà tại bác hỏi sao thì em trả lời vậy thôi.
Bác chỉ có nói là từ A1:A10 bác gõ 1 tới 10, bác đâu có tới chuyện công thức gì trong đó đâu... Hì hì...
Ở ngoài topic thì bác hỏi khác, cái file của bác gửi lên thì lại khác tí chút...
Em trả lời bài này khi em chưa "đao" cái file của bác về...
 
Bởi vì paste special ko ăn thua với công thức... Bạn mở file tôi lên rồi làm thử xem... Cứ làm sao cho cell A1 và B8 thành công thức thật sự là ăn tiền
Món này có lần bạn Salam đã đưa ra giãi pháp dùng chức năng Replace thay thế "=" thành "=" .. và đó là giãi pháp tốt, tuy nhiên nó lại cũng ko ăn thua với cell thường ko phải công thức...
Như vậy đấy
Bạn xem kỹ đi... và kết luận cuối cùng theo trình độ hiểu biết của tôi hiện nay chỉ có VBA mới giãi quyết tận gốc dc vấn đề


Tôi thấy bên trong này có 1 ứng dụng rất hay! Ko chỉ đơn giãn là sửa lỗi đâu...
Trong 1 file có nhiều công thức, nếu bạn gõ trực tiếp công thức vào thì file sẽ chậm do phải tính toán nhiều... Vậy bây giờ bạn format những cell ấy thành Text rồi gõ công thức vào, đến khi cần tính toán thì "hô biến" một phát, nó sẽ trở thành công thức... ha..ha.. Có lý đấy chứ! (ít ra sẽ làm cho file ko bị chậm)
ANH TUẤN

Nhưng có thể làm 2 bước mà a tuấn
- b1: paste special -> ADD
- b2: thay dấu =

Cụ thể với file của atuan thực hiện như sau:

- chọn vùng (A1:F10); Format\cell... -> General...
- chọn 1 vùng trống (chẳng hạn H1:M9) bằng số hàng số cột của vùng (A1:F10) định thay đổi (cách tốt nhất để chọn vùng bằng vùng gốc là chọn A1:F10 -> rồi paste vào ô H1 -> bấm Delete) -rồi chọn Copy
- chọn A1 -> rồi R.Click -> chọn paste special -> chọn ADD (như vậy là + ô trống =0)
khi này các số đã chuyển về number lun rồi
- bước cuối cùng - xử lý công thức nếu có bằng cách Reaplace all dấu = bằng dấu = là được

đơn giản k cần VBA
 
anhtuan1066 đã viết:
Trong 1 file có nhiều công thức, nếu bạn gõ trực tiếp công thức vào thì file sẽ chậm do phải tính toán nhiều... Vậy bây giờ bạn format những cell ấy thành Text rồi gõ công thức vào, đến khi cần tính toán thì "hô biến" một phát, nó sẽ trở thành công thức... ha..ha.. Có lý đấy chứ! (ít ra sẽ làm cho file ko bị chậm)ANH TUẤN
Xin đưa ra 1 giải pháp: Khi "hô biến" thì điền công thức vào, khi "trả lại tên cho em" thì ClearContents.
 
chibi đã viết:
Xin đưa ra 1 giải pháp: Khi "hô biến" thì điền công thức vào, khi "trả lại tên cho em" thì ClearContents.
Thì bạn dùng code của tôi post ở trên là nó "hô biến" dc chứ gì... Bạn xem file tôi đính kèm đấy, có công thức tại A1 và B8 đang là dạng text, có phải là khi chạy code nó là hô biến thành 1 công thức thật sự ko
ANH TUẤN
 
Web KT

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

Back
Top Bottom