Xác định chính xác kiểu dữ liệu của đối số trong hàm (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

namvu230397

Thành viên hoạt động
Tham gia
12/10/21
Bài viết
173
Được thích
77
Nghề nghiệp
Kỹ sư công trình giao thông
Chào các bác, các bác cho em hỏi chút là trong một hàm nếu đối số truyền vào hàm là một công thức mảng thì đối số đó thuộc kiểu dữ liệu gì.

Ví dụ trong cú pháp của hàm Filter, đối số thứ hai của hàm là một công thức mảng như sau:
=FILTER(A5:D20;C5:C20=H2,"")
 
Đoán mò, boo le ans.
 
Upvote 0

File đính kèm

  • 1676974455782.png
    1676974455782.png
    15.5 KB · Đọc: 9
Upvote 0
Có, hãy dùng Office 2021 LTSC.
Nếu là phiên bản 2019 trở xuống thì đó là tính chất "tự giao vị" (tự tìm vị trí giao trong cột/ implicit intersection)

Phiên bản 2021 cũng như 365 dùng mảng động cho nên không tự động tính chất này nữa, muốn dùng phải thêm ký tự @.
 
Upvote 0
Chào các bác, các bác cho em hỏi chút là trong một hàm nếu đối số truyền vào hàm là một công thức mảng thì đối số đó thuộc kiểu dữ liệu gì.

Ví dụ trong cú pháp của hàm Filter, đối số thứ hai của hàm là một công thức mảng như sau:
Mã:
=FILTER(A5:D20;C5:C20=H2,"")
Lúc nhập hàm nó không nhận mảng bool đấy vào mà chỉ nhận giá trị đầu tiên, phải Ctrl + Shift + Enter nó mới nhận tất, bác có cách nào chỉ Enter là được không

Bạn cần cho biết hàm Filter nào? Bạn dùng phiên bản Excel nào?
1/ Hàm tự tạo?
2/ Hàm có sẵn của Excel?
Sau đó mặc nhiên có câu trả lời thỏa đáng.

1677033342589.png
 
Upvote 0
Bạn cần cho biết hàm Filter nào? Bạn dùng phiên bản Excel nào?
1/ Hàm tự tạo?
2/ Hàm có sẵn của Excel?
Sau đó mặc nhiên có câu trả lời thỏa đáng.

View attachment 286771
1. Hàm Filter là chỉ để lấy ví dụ thôi bác, cái em muốn xác định là đối số thứ 2 của hàm này là kiểu dữ liệu gì. Mục đích của việc này để đưa vào một số hàm tự tạo mà em đang lên ý tưởng
2. Phiên bản excel thì em hướng đến là 2013 và 2019 vì ở công ty em mọi người hay sử dụng 2 bản này
 
Upvote 0
1. Hàm Filter là chỉ để lấy ví dụ thôi bác, cái em muốn xác định là đối số thứ 2 của hàm này là kiểu dữ liệu gì. Mục đích của việc này để đưa vào một số hàm tự tạo mà em đang lên ý tưởng

Không có cái hàm nào là giống cái nào nào.
Nếu muốn tỉ dụ thì nói ngay từ đầu là tỉ dụ.
Muốn biết kiểu dữ liệu chỉ có thể đọc tài liệu hướng dẫn sử dụng hàm.

2. Phiên bản excel thì em hướng đến là 2013 và 2019 vì ở công ty em mọi người hay sử dụng 2 bản này

Bạn còn chưa biết cái hàm Filter kia ở đâu ra.
Excel 2013-2019 phiên bản dùng trên Windows đều không có hàm Filter.

Muốn biết thông tin cái gì thì phải tìm về cội nguồn của nó.
 
Upvote 0
Không có cái hàm nào là giống cái nào nào.
Nếu muốn tỉ dụ thì nói ngay từ đầu là tỉ dụ.
Muốn biết kiểu dữ liệu chỉ có thể đọc tài liệu hướng dẫn sử dụng hàm.



Bạn còn chưa biết cái hàm Filter kia ở đâu ra.
Excel 2013-2019 phiên bản dùng trên Windows đều không có hàm Filter.

Muốn biết thông tin cái gì thì phải tìm về cội nguồn của nó.
Bác lại theo dõi không kỹ rồi:
1. Em có nêu rõ trong bài đăng là "ví dụ" chứ không hề nói không rõ ràng chỗ nào cả
Ví dụ trong cú pháp của hàm Filter, đối số thứ hai của hàm là một công thức mảng như sau:
2. 2016 và 2019 chỉ là phiên bản em hướng đến (cái này em cũng nêu rất rõ chứ không có mơ hồ chỗ nào). Hàm đấy ở đâu em cũng biết chứ không phải là không, cái em cần hỏi là cái đối số đấy nó là công thức mảng thì nó thuộc kiểu dữ liệu gì để áp dụng cho một số hàm tự định nghĩa
 
Upvote 0
Bác lại theo dõi không kỹ rồi:
1. Em có nêu rõ trong bài đăng là "ví dụ" chứ không hề nói không rõ ràng chỗ nào cả
...
Hàm mảng khá phức tạp. Muốn cho "rõ ràng", bạn phải đưa ra chỗ bạn áp dụng nó. Chứ chỉ cái công thức suông thì theo bên đối tác, nó là đại trà, khó thể gọi là "rõ ràng".
Chính thức thì cái "ví dụ" kia bạn cóp py từ trang support của Microsoft, nhưng bạn ỡm ờ, không chịu nói ra.

1677129422674.png
 

File đính kèm

  • 1677129389666.png
    1677129389666.png
    8.6 KB · Đọc: 5
Upvote 0
Hàm mảng khá phức tạp. Muốn cho "rõ ràng", bạn phải đưa ra chỗ bạn áp dụng nó. Chứ chỉ cái công thức suông thì theo bên đối tác, nó là đại trà, khó thể gọi là "rõ ràng".
Chính thức thì cái "ví dụ" kia bạn cóp py từ trang support của Microsoft, nhưng bạn ỡm ờ, không chịu nói ra.

View attachment 286845
Thì để lấy ví dụ đối số nó là công thức mảng thôi bác. Các bác đi lạc hơi quá rồi, từ đầu đến giờ mới có bác @cantl trả lời đúng theo hướng em hỏi. Tóm lại là em muốn biết chính xác cái công thức mảng đấy thuộc kiểu gì, bool, string hay là gì
 
Upvote 0
Thì để lấy ví dụ đối số nó là công thức mảng thôi bác. Các bác đi lạc hơi quá rồi, từ đầu đến giờ mới có bác @cantl trả lời đúng theo hướng em hỏi. Tóm lại là em muốn biết chính xác cái công thức mảng đấy thuộc kiểu gì, bool, string hay là gì
Bạn ích kỷ quá vậy?
Những chỗ tôi nói về implicit intersection là bổ sung kiến thức cho các bạn khác, không chỉ riêng nhắm vào bạn.
Những chỗ bạn cho là "đi lạc" chính thực là kiến thức bên trong hàm. Tại bạn lười tìm hiểu cho nên tưởng là nó đi ngoài, câu đó trả lời chính xác cách thức một hàm Excel nhận mảng:
- Khi dùng mảng nạp cho đối số, phải coi chừng hàm có chấp nhận ,mảng ấy? Nếu hàm không cháp nhận thì nó sẽ cố dùng implicit intersection để lấy đúng phần tử trong mảng, nếu không lấy được thì nó sẽ lấy đại phần tử đầu tiên. Để buộc Excel không sử dụng implicit intersection, người ta phải kết thúc công thức bằng Ctrl+Shift+Enter.
- Phiên bản 2021 và 365 trở lên thì ngược lại. Vì chúng dùng mảng động cho nên mặc định hàm nào cũng mảng được. Muốn ép chúng trwor về implicit intersection thì phải thêm toán tử @.


Đọc lại bài #3 của chính bạn viết xem. Tôi trả lời chính xác vào chỗ Excel nhận mảng làm đối số. Không hiểu thì hỏi lại. Đổ thừa cho đi lạc chỉ chứng tỏ là mình không có căn bản về Excel, không hiểu cả mình đã hỏi gì.

Ở đây có trên chục người viết công thức mảng giỏi hơn tôi. Nhưng không ai có tầm sâu hiểu biết về cách Excel xử lý mảng như tôi đâu.
 
Lần chỉnh sửa cuối:
Upvote 0
Thế là cuối cùng bài #11 và bài #7 chúng tự uýnh lộn xoắn xít vào nhau rồi.
 
Upvote 0
Thế là cuối cùng bài #11 và bài #7 chúng tự uýnh lộn xoắn xít vào nhau rồi.
Theo tôi thì đây không phải là vấn đề của thớt.
Cách hỏi và đưa ví dụ giống như hỏi giùm cho người khác.
Ngay cả cái ví dụ trên, chưa chắc thớt đã biết nó lấy từ trang Microsoft Support.
 
Upvote 0
Theo tôi thì đây không phải là vấn đề của thớt.
Cách hỏi và đưa ví dụ giống như hỏi giùm cho người khác.
Là câu hỏi của em đấy bác, mục đích để mô phỏng lại hàm ấy mà. Sau khi bác đề cập đến cái phần tử giao cắt thì em cũng google để tìm hiểu rồiCapture.PNG
 
Upvote 0
Dần dần lòi đuôi ra. :D :D

Hàm mình viết ra lại phải đi hỏi ở đâu. Khó hiểu quá đi.
 
Upvote 0
Dần dần lòi đuôi ra. :D :D

Hàm mình viết ra lại phải đi hỏi ở đâu. Khó hiểu quá đi.
Chưa ưng ý nên mới phải hỏi để hoàn thiện dần chứ bác ;), em là em thay một loạt kiểu dữ liệu rồi đấy bác mà chưa cái nào cả
 
Upvote 0
Trong excel thì hầu như mọi tham số đều có thể nhận rất nhiều loại data, chữ, số, logic,ô, mảng. còn một hàm cụ thể sẽ làm gì với cái dư liệu đó thì tùy thuộc vào hàm
Cái này em biết mà bác. Hầu hết các tham số mà bác có thể chọn Range đều là kiểu object. Trong lập trình hướng đối tượng object là lớp cở sở, các kiểu dữ liệu khác đều kế thừa từ lớp này. Khi chuyển vào hàm thì tùy mục đích sử dụng mà mình ép kiểu về dạng mình cần
 
Upvote 0
Hầu hết các tham số mà bác có thể chọn Range đều là kiểu object.
Hàm excel đưa tham chiếu vùng dữ liệu thì chỉ đưa vào địa chỉ vùng dữ liệu (thí dụ A2:A7), hoặc tương đương (khi dùng range name). Thực chất là đưa giá trị của vùng dữ liệu vào. Thế là quay trở lại vụ implicit.
Hàm VBA (hoặc ngôn ngữ khác), khi viết phải tự biết mình muốn gì.
Hàm xử lý chuỗi thì đầu vào phải là chuỗi, hàm tính toán thì đầu vào phải là số, điều kiện thì phải là đúng/ sai -> kiểu logic.
Tôi tóm lại thì chỉ có bấy nhiêu. Chứ viết hàm mà không biết mình muốn gì thì cầu cứu ai được.
 
Upvote 0
Hàm excel đưa tham chiếu vùng dữ liệu thì chỉ đưa vào địa chỉ vùng dữ liệu (thí dụ A2:A7), hoặc tương đương (khi dùng range name). Thực chất là đưa giá trị của vùng dữ liệu vào. Thế là quay trở lại vụ implicit.
Hàm VBA (hoặc ngôn ngữ khác), khi viết phải tự biết mình muốn gì.
Hàm xử lý chuỗi thì đầu vào phải là chuỗi, hàm tính toán thì đầu vào phải là số, điều kiện thì phải là đúng/ sai -> kiểu logic.
Tôi tóm lại thì chỉ có bấy nhiêu. Chứ viết hàm mà không biết mình muốn gì thì cầu cứu ai được.
Em viết hàm đương nhiên là biết ý mình muốn chứ bác. Câu hỏi của em thực chất là để luận ra đối số thứ 2 của hàm FILTER là kiểu gì để chỉ cần Enter là lấy được nguyên cả mảng đấy thôi (hiện tại dùng cái hàm tự viết buộc phải CSE mới ra kết quả, do đầu vào không nhận ngay đối số kiểu công thức mảng, trong khi đầu ra trả về mảng thì em xử lý được). Em chỉ hỏi cái gốc từ đó luận ra cách xử lý thôi, chứ bê luôn bài vào hỏi các bác trả lời, lần sau đụng đến lại không biết làm
 
Upvote 0
Giờ thì rõ rồi. Hoá ra là chưa thạo code.
Enter hay CSE, đối số kiểu giời bể gì thì do mình viết code xử lý.
 
Upvote 0
Em viết hàm đương nhiên là biết ý mình muốn chứ bác. Câu hỏi của em thực chất là để luận ra đối số thứ 2 của hàm FILTER là kiểu gì để chỉ cần Enter là lấy được nguyên cả mảng đấy thôi (hiện tại dùng cái hàm tự viết buộc phải CSE mới ra kết quả, do đầu vào không nhận ngay đối số kiểu công thức mảng, trong khi đầu ra trả về mảng thì em xử lý được). Em chỉ hỏi cái gốc từ đó luận ra cách xử lý thôi, chứ bê luôn bài vào hỏi các bác trả lời, lần sau đụng đến lại không biết làm

Kiểu của tham số tức là kiểu dữ liệu, có các kiểu như đã nói (text, number, date, logic).
Còn dữ liệu truyền vào là mảng (tập hợp các giá trị) hay giá trị đơn, là 1 câu chuyện khác. (1)
Kết quả trả về (nếu là hàm), là giá trị đơn hay là tập hợp nhiều giá trị, lại là câu chuyện khác nữa. (2)

Vậy thì:
(1) Truyền vào 1 giá trị đơn hay 1 tập hợp nhiều giá trị, người viết code cũng phải biết. Nếu dự phòng thì viết cho 2 trường hợp
(2) Kết quả trả về có phải CSE hay không, là do trả về có phải giá trị đơn hay không. Nếu 2019 không chịu ra kết quả mảng đối với hàm thông thường thì code tự viết phải chịu chết.

Ghi chú:
Nếu chịu ra kết quả mảng như 2021 và 365 thì ngay cả Vlookup cũng ra kết quả mảng. Xem Tính chất động của hàm mảng

1677424352310.png
 
Lần chỉnh sửa cuối:
Upvote 0
Nói chuyện tùm lum quá đi.
Từ đầu ỡm ờ hỏng chịu nói ra là càn viết hàm UDF, đi mò cái ví dụ (sai bối cảnh) trong MS Support ra rồi đổ thừa người ta đi lạc đường.

Trường hợp UDF thì đây cho từ khóa: Variant.
Muốn hiểu rõ Excel nhận mảng thế nào thì theo từ khóa "Lifting""Broadcasting"

VBA vốn mượn nhiều thứ từ VBScript. Kiểu căn bản của VBScript là Variant.
Đừng giở cái mớ base class lý thuyết trật vuột ra mà lòe ở đây nhé.
Đây là dân chuyên thiết kế lớp cho C++/C#/Java.
 
Upvote 0
Nói chuyện tùm lum quá đi.
Từ đầu ỡm ờ hỏng chịu nói ra là càn viết hàm UDF, đi mò cái ví dụ (sai bối cảnh) trong MS Support ra rồi đổ thừa người ta đi lạc đường.

Trường hợp UDF thì đây cho từ khóa: Variant.
Muốn hiểu rõ Excel nhận mảng thế nào thì theo từ khóa "Lifting""Broadcasting"

VBA vốn mượn nhiều thứ từ VBScript. Kiểu căn bản của VBScript là Variant.
Đừng giở cái mớ base class lý thuyết trật vuột ra mà lòe ở đây nhé.
Đây là dân chuyên thiết kế lớp cho C++/C#/Java.
:D:D chẳng qua là đam mê, hôm nào không hồ sơ không gấp thì lôi ra nghiên cứu ấy mà, để các bác chê cười rồi. Bài này là nghĩ lâu lắm rồi đấy mới dám đăng hỏi bác ạ
 
Upvote 0
Đam mê mốc gì mà nghe lập luận của dân chuyên nghiệp cũng không nhận ra, Lo đi cãi cố.

May mà chuyến này tôi cần giải thích phương pháp nạp mảng cho Excel nên tôi mới trả lơi. Gặp lúc khác tôi mặc cho tự mò.
 
Upvote 0

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

Back
Top Bottom