Hỏi: Cách tự động đổi Format khi nhập liệu là Tex, Number và Fomular?

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

autokiss

Thành viên hoạt động
Tham gia
22/12/07
Bài viết
173
Được thích
11
Chào các bạn, mình muốn trong quá trình nhập dữ liệu, các ô tự động nhảy màu khi nhập vào chữ thì nó màu đỏ, công thức thì tự động nó thành màu xanh có được không?
 

File đính kèm

Nếu bạn dùng Excel 2013 thì dễ làm CF với hàm ISFORMULA (kiểm tra tham chiếu ô chứa công thức), tương tự hàm ISTEXT, ISNUMBER ở các phiên bản Excel thấp hơn.
Nếu không dùng Excel 2013 thì nên nghĩ tới giải pháp VBA.
 
Nếu không dùng ex 2013 thì có thể dùng các sau:
Dùng macro4 trong Name
Đặt 2 name (ví dụ đặt chuột tại H2)
DKFormula
Mã:
=GET.CELL(48,Sheet1!H2)
DKText
Mã:
=(ISNUMBER(GET.CELL(41,Sheet1!H2)*1)=FALSE)*(DKFormula=FALSE)
Sau đó sử dụng 2 name này trong conditional format
- DKformula trả về true nếu là công thức, còn lại là false
- DKText trả về true nếu là text còn lại là false
Bạn tham khảo thêm theo đính kèm.
 

File đính kèm

Nếu không dùng ex 2013 thì có thể dùng các sau:
Dùng macro4 trong Name
Đặt 2 name (ví dụ đặt chuột tại H2)
DKFormula
Mã:
=GET.CELL(48,Sheet1!H2)
DKText
Mã:
=(ISNUMBER(GET.CELL(41,Sheet1!H2)*1)=FALSE)*(DKFormula=FALSE)
Sau đó sử dụng 2 name này trong conditional format
- DKformula trả về true nếu là công thức, còn lại là false
- DKText trả về true nếu là text còn lại là false
Bạn tham khảo thêm theo đính kèm.

Bạn cho mình hỏi giá trị 48 và 41 trong công thức bạn đặt phần khai báo name cho Macro4 có ý nghĩa là gì vậy?

Vậy
GET.CELL(41,Sheet1!H2)*1)=FALSE)*(DKFormula=FALSE)
thì GET có nghĩa là gì? Tại sao lại *1? Cảm ơn bạn nhiều!
 
Chào các bạn, mình muốn trong quá trình nhập dữ liệu, các ô tự động nhảy màu khi nhập vào chữ thì nó màu đỏ, công thức thì tự động nó thành màu xanh có được không?
Bạn dùng tạm đoạn này sau đó phát triển vào sự kiện nhé
PHP:
Sub mau()
Dim Rng As Range, cll As Range
Set Rng = Range([A3], [A65000].End(xlUp)).Resize(, 2)
For Each cll In Rng
    If Not IsNumeric(cll) Then
        cll.Interior.ColorIndex = 3
    End If
    If cll.HasFormula Then
        cll.Interior.ColorIndex = 6
    End If
Next
Set Rng = Nothing
End Sub
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, cll As Range
If Not Intersect(Target, Range([A3], [A65000].End(xlUp)).Resize(, 2)) Is Nothing Then
    Set Rng = Intersect(Target, Range([A3], [A65000].End(xlUp)).Resize(, 2))
    For Each cll In Rng
        If Not IsNumeric(cll) Then
            cll.Font.ColorIndex = 3
        End If
        If cll.HasFormula Then
            cll.Font.ColorIndex = 40
        End If
    Next
End If
Set Rng = Nothing
End Sub


Bạn thay số 3 và số 40 giống yêu cầu của bài nhé
 
Lần chỉnh sửa cuối:
Bạn cho mình hỏi giá trị 48 và 41 trong công thức bạn đặt phần khai báo name cho Macro4 có ý nghĩa là gì vậy?

Vậy thì GET có nghĩa là gì? Tại sao lại *1? Cảm ơn bạn nhiều!
GET.CELL là 1 hàm macro4
cú pháp: GET.CELL(type_num, reference), trong đó công thức trên sử dụng type_num là 41, và 48, ý nghĩa của các số:
41: Returns the formula in the active cell without translating it
48: If the cells contains a formula, returns TRUE; if a constant, returns FALSE.
Vì do get.cell(41,...) trả về kiểu chuỗi, nên cần nhân thêm 1 để chuyển kết quả về dạng số nhằm sử dụng trong hàm isnumber phù hợp hơn.
(Trên đây đã nêu khá nhiều từ khóa để bạn có thể search và tìm hiểu thoải mái nhé).
 
Cảm ơn các bạn! Bây giờ mỗi lần mở file thì mình toàn phải ấn "Yes" để Macro4 thực hiện, nếu không chỉnh security Low thì có cách nào để mở file lên nó tự kích hoạt Macro4 không các bạn? (Mình muốn auto cho mỗi file này thôi).
 
Web KT

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

Back
Top Bottom