Hiễn thị công thức tại cell bất kỳ

Liên hệ QC

Người Đưa Tin

Hạt cát sông Hằng
Thành viên danh dự
Tham gia
12/12/06
Bài viết
3,661
Được thích
18,158
Xin lỗi không biết đặt tên topic như thế nào cho phù hợp. Trước có đọc các bài để hiện thị công thức trong cell mà nay mình quên. Xin vui lòng hỗ trợ cho trường hợp này

Không nhớ cách dùng tổ hợp phím nào để hiển thị như sau :
Giả sử cột A1 có giá trị là con số 2 và B1=5 và cột C1 mình cài công thức : =A1*B1===> Kết quả là 10

Không nhớ dùng tổ hợp phím nào để cho hiển thị tại cell C1 với công thức như sau : 2*5 thay vì phải hiển thị 10 hoặc =A1*B1
Đã nhấn tại cell C1 bởi ctrl+F9 không được
Hoặc nếu dùng ctrl+` thì hiển thị theo hình đính kèm như sau
 

File đính kèm

  • hienthicongthuc.png
    hienthicongthuc.png
    1.4 KB · Đọc: 49
Anh Hai à,
Anh gõ Ctrl + "~" hay anh vào Menu Tools-->Option-->Chọn thẻ View-->Nhấn chọn Formula

(NHưng nó vẫn có dấu bằng còn hiển thị Công thức không dấu bằng thì em không biết, rất có thể phải dùng hàm UDF)
 
Lần chỉnh sửa cuối:
Anh Hai à,
Anh gõ Ctrl + "~" hay anh vào Menu Tools-->Option-->Chọn thẻ View-->Nhấn chọn Formula

(NHưng nó vẫn có dấu bằng còn hiển thị Công thức không dấu bằng thì em không biết, rất có thể phải dùng hàm UDF)
Em nghĩ anh KTGG muốn ra kết quả là =2*5 chứ không phải =A1*B1 (có dấu = hay không em nghĩ không quan trọng)
Nên nếu dùng UDF không chưa không biết hướng đi như thế nào nữa!
 
Thầy ndu96081631 đọc và đón đúng tim đen của em rồi đó. kết quả là =2*5
Vậy vui lòng xin chỉ hướng đi. Chân thành cám ơn
 
Thầy ndu96081631 đọc và đón đúng tim đen của em rồi đó. kết quả là =2*5
Vậy vui lòng xin chỉ hướng đi. Chân thành cám ơn
Đây chỉ là thí nghiệm, chưa chính xác đâu!
PHP:
Sub Test()
  Dim Cel1 As Range, Cel2 As Range, Temp As String
  On Error GoTo Thoat
  With Application.InputBox("Chon cell chua công thuc", Type:=8)
    For Each Cel1 In .Cells
      Temp = "'" & Cel1.Formula
      For Each Cel2 In Cel1.DirectPrecedents
        Temp = Replace(Temp, Cel2.Address, Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 1), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(1, 0), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 0), Cel2.Value)
      Next Cel2
     Cel1.Offset(, 1) = Temp
    Next Cel1
  End With
Thoat:
End Sub
Xem file đính kèm!
Các cao thủ hãy hoàn thiện giúp
 

File đính kèm

Lần chỉnh sửa cuối:
Thầy ndu96081631 đọc và đón đúng tim đen của em rồi đó. kết quả là =2*5
Cháu tìm được trên mạng 1 file chứa hàm tự tạo, nhưng đã bị lock VBA. Cháu đã lưu lại thành 1 addin. Hy vọng sẽ giúp được chú.
Mã:
[B][COLOR="Navy"]=disfor(cell)[/COLOR][/B]
 

File đính kèm

Code của Ndu có lý đấy chứ. Ndu chuyển thành UDF dùng gọn và khả thi hơn.
 
Code của Ndu có lý đấy chứ. Ndu chuyển thành UDF dùng gọn và khả thi hơn.
Em cũng muốn lắm, nhưng ác cái UDF nó không chơi với SpecialCells
Đến giờ em chỉ biết các tìm tham chiếu bằng .DirectPrecedents mà thôi... còn cách khác thì... em vẫn chưa nghĩa ra
 
File của bác QuocPhong và code của Thầy ndu96081631 đưa lên đều có khả thi

Thầy ndu96081631 có thể bỏ dấu nháy ở đầu được không ? Giả sử khi chạy thì kết quả theo code có dấu nháy ở đầu như sau : '=2*3
 
Thầy ndu96081631 có thể bỏ dấu nháy ở đầu được không ? Giả sử khi chạy thì kết quả theo code có dấu nháy ở đầu như sau : '=2*3
Nếu anh bỏ dấu nháy thì anh phải thêm 1 khoảng trắng vào... Vì nếu không thế, kết quả có thể ra bậy bạ... chẳng hạn 1-2 nó có thể hiểu là 1 tháng 2 (hoặc 2 tháng 1)
Vậy anh thay đoạn:
Temp = "'" & Cel1.Formula
thành:
Temp = " " & Cel1.Formula
Rồi thử lại code
Hoặc cũng có cách khác: Trước khi xuất dử liệu, hãy Format cell kết quả ở dạng Text, kiểu thế này:
PHP:
Sub Test()
  Dim Cel1 As Range, Cel2 As Range, Temp As String
  On Error GoTo Thoat
  With Application.InputBox("Chon cell chua công thuc", Type:=8)
    For Each Cel1 In .Cells
      Temp = Cel1.Formula
      For Each Cel2 In Cel1.DirectPrecedents
        Temp = Replace(Temp, Cel2.Address, Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 1), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(1, 0), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 0), Cel2.Value)
      Next Cel2
     With Cel1.Offset(, 1)
       .NumberFormat = "@"
       .Value = Temp
     End With
    Next Cel1
  End With
Thoat:
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu anh bỏ dấu nháy thì anh phải thêm 1 khoảng trắng vào... Vì nếu không thế, kết quả có thể ra bậy bạ... chẳng hạn 1-2 nó có thể hiểu là 1 tháng 2 (hoặc 2 tháng 1)
Vậy anh thay đoạn:
Temp = "'" & Cel1.Formula
thành:
Temp = " " & Cel1.Formula
Rồi thử lại code
Hoặc cũng có cách khác: Trước khi xuất dử liệu, hãy Format cell kết quả ở dạng Text, kiểu thế này:
PHP:
Sub Test()
  Dim Cel1 As Range, Cel2 As Range, Temp As String
  On Error GoTo Thoat
  With Application.InputBox("Chon cell chua công thuc", Type:=8)
    For Each Cel1 In .Cells
      Temp = Cel1.Formula
      For Each Cel2 In Cel1.DirectPrecedents
        Temp = Replace(Temp, Cel2.Address, Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 1), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(1, 0), Cel2.Value)
        Temp = Replace(Temp, Cel2.Address(0, 0), Cel2.Value)
      Next Cel2
     With Cel1.Offset(, 1)
       .NumberFormat = "@"
       .Value = Temp
     End With
    Next Cel1
  End With
Thoat:
End Sub
Thank's bác!
E cũng đang cần cái này, nhưng bác có thể để cho nó tự động thay đổi công thức theo ô tham chiếu được không, tương tự như 1 hàm trong Excel bình thường ấy? Tức là không phải Run sau mỗi lần thay đổi công thức của cell tham chiếu.
Note: Các hàm của Excel không tự động chuyển sang số dược bác ạ, ví dụ Left, Sum...
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom