Xin hỏi vì sao có @ trong công thức

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

thientan201

Thành viên mới
Tham gia
24/4/24
Bài viết
6
Được thích
0
Xin hỏi tại sao khi viết câu lệnh hình ảnh phía dưới lại tự động có chữ @ đã được khoanh đỏ dù không được viết vào.
Untitled1.pngUntitled.png
 

File đính kèm

  • Vattu.xlsm
    23.1 KB · Đọc: 2

Xin mọi người giúp đỡ.​

Xin hỏi tại sao khi viết câu lệnh hình ảnh phía dưới lại tự động có chữ @ đã được khoanh đỏ dù không được viết vào.
View attachment 302348
Bạn hãy đọc lại Nội quy rồi sửa lại tiêu đề cho phù hợp. Ai cũng đặt tiêu đề như bạn thì khi tìm kiếm sẽ gõ từ khóa thế nào để ra được chủ đề cần tìm kiếm đây.
 
Upvote 0
Chỉnh sửa tiêu đề xong rồi cho biết thêm:
Code trên bạn viết hay nhận từ người khác? Tôi không hỏi chơi hay bắt bẻ phê bình. Đây là chi tiết quan trọng để biết dấu @ kia ở đâu ra.
 
Upvote 0
Thớt chạy mất tiêu rồi.
Ngày mai tôi sẽ trả lời cho những bạn cũng cùng thắc mắc.

Chú: dạng này tôi đã có giải thích và chỉ dẫn cách khắc phục rồi. Chịu khó tìm thì cũng ra.
 
Lần chỉnh sửa cuối:
Upvote 0
Phần 1, chỉ dẫn cách giải quyết vấn đề:

Range là một đối tượng.
1. Điều căn bản của LT HĐT:
Đối tượng thì có thuộc tính. - vấn đề là thuộc tính ấy public thì bạn thấy, private thì bạn không thể thấy hoặc động vào
Thuộc tính thì có hàm Get và hàm Set. - tương tự như trên, tùy theo nó là public hay private mà bạn có thấy chúng hay không.
2. Điều cản bản 2 của LT HĐT:
Đối tượng có thể chứa nhiều thuộc tính khác nhau nhưng thực sự chỉ vào cùng một ngăn data trong bộ nhớ của đối tượng.
Ví dụ Range có thuộc tính Value và Value2, hai thằng này cùng chỉ vào dữ liệu chứa trong range. Nhưng lúc ta gọi ra xem thì Get của thằng Value trả về dữ liệu như thấy trên bảng tính, trong khi đó Get của thằng Value2 trả về dữ liệu thật sự chứa trong range.

Đến đây quý vị nào đã đoán ra được cách giải chưa?

Range cũng có hai thuộc tính Formula với hai hàm Sets hoạt động hơi khác nhau. Muốn Excel chỉnh sửa cho hợp với bảng tính thì dùng Formula. Muốn "bảo gì ghi nấy, không có lộn xộn" thì dùng Formula2.
Hết.

Phần 2, giải thích vấn đề:

Excel 365 khác với các phiên bản trước nó ở chỗ mảng động và mảng tĩnh.
Range.Formula mặc định là mảng tĩnh cho nên tất cả các công thức giao cho nó sẽ được chỉnh lại theo chiều hướng mảng tĩnh. Nói cách khác là nếu công thức dựa vào mảng thì nó sẽ chỉnh lại thành ô bằng phép giao ngầm (implicit intersection). Trong 365 việc ép phép giao ngầm này dựa vào dấu @.

Dưới đây là công thức mảng động. Kết quả là một mảng:
1720895418003.png

Dưới đây là công thức mảng tĩnh. Kết quả là một ô.
1720895549228.png

Lưu ý: nếu bạn đặt @ trước Vlookup thì 365 vẫn nhận, nhưng nó sẽ cảnh báo bạn rằng cách ấy không xài được với các phiên bản thấp hơn.
@ đặt trước range A1:A5 mặc định dùng phép giao ngầm như Excel các phiên bản trước vẫn dùng cho các table (@ có nghĩa là ở vị trí dòng/cột ấy)

Chú thích:
Quý vị ở GPE này chưa hề làm việc với phép giao ngầm bao giờ cho nên thấy nó lạ.
Trên thực tế, cũng có nhiều nơi người ta quen với cách này lắm.
 
Upvote 0
@thientan201 Bạn đọc qua bài viết này để hiểu ký tự @ là một định nghĩa "toán tử giao nhau ngầm định"


Bạn có thể sử dụng Formula2 thay cho Formula để gán công thức

JavaScript:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("AlO:165000")) Is Nothing Then Exit Sub
HienThiHinhAnh
Dim i As Long, lr As Long, o, b as boolean
lr = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
On Error Resume Next
For i = 10 To lr
  Set o = Sheet1.Range("G" & i)
  If Not b Then Err.Clear: o.Formula2 = "=Duongdanfile()&G" & i
  If Err Then o.Formula = "=Duongdanfile()&G" & i: b= True
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0

Xin mọi người giúp đỡ.​


Bạn hãy đọc lại Nội quy rồi sửa lại tiêu đề cho phù hợp. Ai cũng đặt tiêu đề như bạn thì khi tìm kiếm sẽ gõ từ khóa thế nào để ra được chủ đề cần tìm kiếm đây.
Mình xin rút kn. Cảm ơn bạn.
Bài đã được tự động gộp:

Thớt chạy mất tiêu rồi.
Ngày mai tôi sẽ trả lời cho những bạn cũng cùng thắc mắc.

Chú: dạng này tôi đã có giải thích và chỉ dẫn cách khắc phục rồi. Chịu khó tìm thì cũng ra.
Trước hết tôi có lời cảm ơn đến các bạ đã giúpđỡ tôi.
Trong quá trình làm việc đó Function của tôi hoạt động không hiệu quả, sau đó tôi sửa không được và cũng không biết nguyên nhân lỗi ở đâu nên tôi quyết định dùng lệnh vào sự kiện và không dùng Function đó nữa.
Và sau đó tôi cũng quên mất là đã đăng bài này.
Nhưng tôi rất cảm ơn các bạn đã chỉ rõ chổ sai của tôi để tôi có thêm những kinh nghiệm quý báu.
Xin cảm ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin hỏi tại sao khi viết câu lệnh hình ảnh phía dưới lại tự động có chữ @ đã được khoanh đỏ dù không được viết vào.
View attachment 302348View attachment 302349

Xin mọi người giúp đỡ.​


Bạn hãy đọc lại Nội quy rồi sửa lại tiêu đề cho phù hợp. Ai cũng đặt tiêu đề như bạn thì khi tìm kiếm sẽ gõ từ khóa thế nào để ra được chủ đề cần tìm kiếm đây.
Xin hỏi bạn chổ sửa bài viết ở vị trí nào, giúp mình nhé. Cảm ơn bạn.
 
Upvote 0
Web KT
Back
Top Bottom