Hỏi về công thức mảng (1 người xem)

Liên hệ QC

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

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
Các anh chị nào biết công thức mảng bằng VBA cho em hỏi xíu nhé.

Em đang mò mẫm về cách viết công thức mảng, nhưng còn lăn tăng 1 chỗ là khi viết công thức mảng có nên gán hết công thức vào trong 1 vùng không hay là chỉ Gán giá trị vào vùng đó (khi nào cần up1date thì chỉ việc Enter vào ô chứa công thức thì dữ liệu sẽ cập nhật lại).

Cám ơn các anh chị quan tâm!

Supper UDF SQL version 2

Hàm Supper UDF SQL version 2.1 hihihi (Hàm Group Concat trong T_SQL)
 
Lần chỉnh sửa cuối:
Các anh chị nào biết công thức mảng bằng VBA cho em hỏi xíu nhé.

Em đang mò mẫm về cách viết công thức mảng, nhưng còn lăn tăng 1 chỗ là khi viết công thức mảng có nên gán hết công thức vào trong 1 vùng không hay là chỉ Gán giá trị vào vùng đó (khi nào cần up1date thì chỉ việc Enter vào ô chứa công thức thì dữ liệu sẽ cập nhật lại).

Cám ơn các anh chị quan tâm!
Không hiểu bạn muốn làm gì.Đã dùng VBA cần gì công thức mảng nữa nhỉ.
 
Upvote 0
Không hiểu bạn muốn làm gì.Đã dùng VBA cần gì công thức mảng nữa nhỉ.
ý em là viết 1 hàm na ná như cái hàm BS_SQL của anh tuân ý, em thấy cái đó nó hay hay. mà em còn mờ hồ chỗ này không biết theo hướng nào
1/ chèn công thức vào tất cả các ô thì nó có bị chậm file không ?
2/ Gán Value vào các ô trong vùng ?
 
Upvote 0
"GPE成員都是偉大的 "
Nghĩa là gì vậy bạn

Trông màn hình thì rất hay, nếu được thì chia sẻ code và files bạn đã làm, như thế thật vui, cám ơn trước

Chức năng tự mở rộng công thức mảng (không phải mãng nhé) thì Google Spread Sheet làm tốt hơn Excel nhiều
 
Upvote 0
"GPE成員都是偉大的 "
Nghĩa là gì vậy bạn

Trông màn hình thì rất hay, nếu được thì chia sẻ code và files bạn đã làm, như thế thật vui, cám ơn trước

Chức năng tự mở rộng công thức mảng (không phải mãng nhé) thì Google Spread Sheet làm tốt hơn Excel nhiều
Mình viết trong delphi, chuc năng thì chỉ lay dữ liệu bằng SQL thôi (nó là sql mà bao gom access, sql sever, ole, exc)nhung nó là function lấy dữ liệu liệu bằng value chứ mình không sài mãng
Ps. Mình dang sài bằng diện thoại nên sai chính tả với dấu nhé
 
Upvote 0
Mình viết trong delphi, chuc năng thì chỉ lay dữ liệu bằng SQL thôi (nó là sql mà bao gom access, sql sever, ole, exc)nhung nó là function lấy dữ liệu liệu bằng value chứ mình không sài mãng
Ps. Mình dang sài bằng diện thoại nên sai chính tả với dấu nhé
Bạn dùng Delphi phiên bản nào? nó có thích ứng với windows 64bits không
Vì tôi thấy Delphi ngôn ngữ hợp với nhiều người đi từ Pascal lên, tuy thế hiện nay Delphi không được nhà phát triển quan tâm và chăm sóc nó lên tiếp
 
Upvote 0
Bạn dùng Delphi phiên bản nào? nó có thích ứng với windows 64bits không
Vì tôi thấy Delphi ngôn ngữ hợp với nhiều người đi từ Pascal lên, tuy thế hiện nay Delphi không được nhà phát triển quan tâm và chăm sóc nó lên tiếp
Minh sai xe chay duoc 64, mình thấy công dong delphi giờ ít quá nhiều lúc bi không biết hỏi ai, toàn mò trong bóng tối không....
 
Lần chỉnh sửa cuối:
Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em có đọc và mò rất là nhiều bài của anh mới nghiệm ra được chút xíu (hí hí).
Mới đầu em cũng theo hướng dùng công thức Mãng (trong delphi em cũng mò ra đưa vào mãng rồi), sau đó mới nghĩ dùng công thức mãng 500 ô thì 500 công thức nằm trong 500 ô đó, bởi vậy em mới nghĩ từ 500 ô đó sao không chuyển nó thành Value và chừa lại 1 công thức duy nhất, khi có thay đổi giá trị trong công thức hoặc ô có liên kết công thức sẽ cập nhật lại Value thì chắc nó sẽ lẹ hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Em có đọc và mò rất là nhiều bài của anh mới nghiệm ra được chút xíu (hí hí).
Mới đầu em cũng theo hướng dùng công thức Mãng (trong delphi em cũng mò ra đưa vào mãng rồi), sau đó mới nghĩ dùng công thức mãng 500 ô thì 500 công thức nằm trong 500 ô đó, bởi vậy em mới nghĩ từ 500 ô đó sao không chuyển nó thành Value và chừa lại 1 công thức duy nhất, khi có thay đổi giá trị trong công thức hoặc ô có liên kết công thức sẽ cập nhật lại Value thì chắc nó sẽ lẹ hơn.
Hàm đó viết có khó không bạn nhỉ ???
 
Upvote 0
Hàm đó viết có khó không bạn nhỉ ???
Không khó đâu anh, anh ngâm cứu đi bí chỗ nào em hướng dẫn riêng cho, nói 1 phát (trình độ như anh là anh làm được ngay, em nghĩ máy cái này không nên chia sẻ nhiều.... ảnh hưởng tùm lùm, công việc em ít liên quan đến Excel lắm chẳng qua là thắc mắc nên mò cho vui thôi ), tự nhiên mò ra như vây mới hứng thú -0-0-0--0-0-0--0-0-0--0-0-0--0-0-0--0-0-0-.ham mang.jpg
Hàm mãng dễ viết hơn Value
 
Upvote 0
Không khó đâu anh, anh ngâm cứu đi bí chỗ nào em hướng dẫn riêng cho, nói 1 phát (trình độ như anh là anh làm được ngay, em nghĩ máy cái này không nên chia sẻ nhiều.... ảnh hưởng tùm lùm, công việc em ít liên quan đến Excel lắm chẳng qua là thắc mắc nên mò cho vui thôi ), tự nhiên mò ra như vây mới hứng thú -0-0-0--0-0-0--0-0-0--0-0-0--0-0-0--0-0-0-.
Cảm ơn rất nhiều vậy lúc nào cho Mạnh xin code qua mai đi nhé .... mạnh hứa là ko phổ biến rộng mô he
.....
Mạnh Hiểu được phương thức truyền Query Client sang Server rồi đó .... nó lưu cái Query đó vào DataBase Server ( Database.accdb )
Nhưng còn đang lung tung lắm .... mỗi ngày mò một chút 1 năm sau là ok đó
 
Upvote 0
Cảm ơn rất nhiều vậy lúc nào cho Mạnh xin code qua mai đi nhé .... mạnh hứa là ko phổ biến rộng mô he
.....
Mạnh Hiểu được phương thức truyền Query Client sang Server rồi đó .... nó lưu cái Query đó vào DataBase Server ( Database.accdb )
Nhưng còn đang lung tung lắm .... mỗi ngày mò một chút 1 năm sau là ok đó
Về Client sang Server không cần phải đao to búa lớn đâu anh, em chỉ cần bên Client truyền câu lệnh SQL svert nhận được là nó sẽ gởi qua Client bằng con đường Send text (có nhiều cách làm lắm nhưng trình độ em không hiểu để chuyển qua memory để gời, đành tạm chấp nhận gởi bằng sen text 10.000 row trong 6 s). Ngâm cứu cái Json hay HTML đó anh.

Máy cái memory này mà có anh Batman1 hướng dẫn thì thôi anh Mạnh nhĩ
 
Lần chỉnh sửa cuối:
Upvote 0
Về Client sang Server không cần phải đao to búa lớn đâu anh, em chỉ cần bên Client truyền câu lệnh SQL svert nhận được là nó sẽ gởi qua Client bằng con đường Send text (có nhiều cách làm lắm nhưng trình độ em không hiểu để chuyển qua memory để gời, đành tạm chấp nhận gởi bằng sen text 10.000 row trong 6 s). Ngâm cứu cái Json hay HTML đó anh
Chính xác là thế tìm ra rồi thì thấy nó đơn giản lắm ... nhưng mò ra là quả một công phu
Khi Client truyền cái Query sang Server thì server nhận nó và lưu vào Database.accdb thôi
Mã:
Data := ServerSocket1.Socket.Connections[0].ReceiveText;
Duyệt cái Data đó lưu vào DataBase.accdb là xong .... có vậy mà mò hoài mới ra ===\.-0-0-0-
 
Upvote 0
Chính xác là thế tìm ra rồi thì thấy nó đơn giản lắm ... nhưng mò ra là quả một công phu
Khi Client truyền cái Query sang Server thì server nhận nó và lưu vào Database.accdb thôi
Mã:
Data := ServerSocket1.Socket.Connections[0].ReceiveText;
Duyệt cái Data đó lưu vào DataBase.accdb là xong .... có vậy mà mò hoài mới ra ===\.-0-0-0-
Cái này là do mình không biết nên cứ mò mẫm trong bóng tối, máy cái này ít người chia sẻ lắm anh, kể cả nước ngoài chắc do liên quan đến công việc của người ta. em mò riết rút ra được kinh ngiệm là cái gì mà người ta chia sẻ là công nghệ cũ cả hơn 10 năm rồi hihihihi
 
Upvote 0
Cái này là do mình không biết nên cứ mò mẫm trong bóng tối, máy cái này ít người chia sẻ lắm anh, kể cả nước ngoài chắc do liên quan đến công việc của người ta. em mò riết rút ra được kinh ngiệm là cái gì mà người ta chia sẻ là công nghệ cũ cả hơn 10 năm rồi hihihihi
Khi hiểu ra phương thức của nó rồi thì xài cái này cũng ok
Mã:
TIdTCPServer.Create(nil);
 
Upvote 0
Mò cái hàm tới đâu rồi anh
Thì nó như cái Socket kia .... nó check Port + Kiểm tra kết nối Internet + chat ok đó nhưng cú pháp của nó khác so với Socket
Còn chuyển Query qua Mạnh chưa thử tại ngày qua mới thử cái Socket kia thành công mừng thấy bà luôn ... :p
ngày nay bận quá chưa coi lại ... mai mốt rảnh thử hết các kiểu xem sao xong chốt lại nên xài cái nào thì xài
 
Upvote 0
_)(#;_)(#;_)(#;_)(#;_)(#;_)(#;
Bài đã được tự động gộp:

Thì nó như cái Socket kia .... nó check Port + Kiểm tra kết nối Internet + chat ok đó nhưng cú pháp của nó khác so với Socket
Còn chuyển Query qua Mạnh chưa thử tại ngày qua mới thử cái Socket kia thành công mừng thấy bà luôn ... :p
ngày nay bận quá chưa coi lại ... mai mốt rảnh thử hết các kiểu xem sao xong chốt lại nên xài cái nào thì xài
Nó chỉ có Read và Write thôi là đủ mệt rồi đấy --=----=----=--
 
Upvote 0
"GPE成員都是偉大的 "
Nghĩa là gì vậy bạn

Trông màn hình thì rất hay, nếu được thì chia sẻ code và files bạn đã làm, như thế thật vui, cám ơn trước

Chức năng tự mở rộng công thức mảng (không phải mãng nhé) thì Google Spread Sheet làm tốt hơn Excel nhiều

Query của Google rất bình thường, chỉ làm đc câu SELECT thuần túy và khó hiểu, không giống với cách làm Database chuẩn chung. Điều nữa chỉ cần có một ô phía dưới công thức, sau đó công thức đó thay đổi điều kiện để mảng đó phình ra là công thức nó N/A ngay.

Excel hiện nay không có chàm nào chạy SQL trả về mảng cả nên không có gì để so sánh. Nhưng A-Tools bù đắp việc đó với hàm BS_SQL mà chủ topic có nêu. Mình nói thì lại bảo quảng cáo. Các bạn xem video về loạt bài của tôi về hàm BS_SQL trên Youtube thì nó khác hoàn toàn với các nhận định nếu như không xem sản phẩm.
Bài đã được tự động gộp:

Bạn dùng Delphi phiên bản nào? nó có thích ứng với windows 64bits không
Vì tôi thấy Delphi ngôn ngữ hợp với nhiều người đi từ Pascal lên, tuy thế hiện nay Delphi không được nhà phát triển quan tâm và chăm sóc nó lên tiếp

Đây là nhận định của các anh thế hệ 7.x trở về trước có biết đến Pascal và Delphi từ thời bản 7. Delphi bây giờ khác lắm rồi. Lập trình 1 code và biên dịch đa nền tảng... Delphi phát triển ở các nước Mỹ, Nhật, Nga, Pháp, Đức, Brazil.
https://www.embarcadero.com/products/delphi
Bài đã được tự động gộp:

Bài đã được tự động gộp:


To bạn Thuy:
Hàm và Value là hai khái niệm khác nhau hoàn toàn. Hàm được tương tác qua cơ chế tính toán và tham chiếu động của Excel. Không phải tự nhiên hàm BS_SQL trả về mảng đâu :). Mảng bảo toàn vùng dữ liệu, người sử dụng, người xem số liệu không vô tình xóa hay sửa vài ô nào đó...

Bây giờ em hãy test các tính huống sau để hoàn thiện và qua đó các bạn sẽ biết viết hàm này dễ hay khó nhé.
1. Hàm co giãn số dòng, số cột mà không đè vào dữ liệu phía cuối và phía phải?
2. Có ít nhất 2 hàm đang tham chiếu vào cùng một địa chỉ trên sheet. Bây giờ hay thay đổi giá trị trên ô đó thì những hàm đang tham chiếu đến nó có chạy không? Đây là cách làm công thức mà dân Excel đa số làm.
3. Nếu người sử dụng muốn có các hàm thống kê bao vào vùng của công thức mảng, khi công thức đó co giãn thì các hàm thống kê này tính toán có đúng không?
 
Lần chỉnh sửa cuối:
Upvote 0
Query của Google rất bình thường, chỉ làm đc câu SELECT thuần túy và khó hiểu, không giống với cách làm Database chuẩn chung. Điều nữa chỉ cần có một ô phía dưới công thức, sau đó công thức đó thay đổi điều kiện để mảng đó phình ra là công thức nó N/A ngay.

Excel hiện nay không có chàm nào chạy SQL trả về mảng cả nên không có gì để so sánh. Nhưng A-Tools bù đắp việc đó với hàm BS_SQL mà chủ topic có nêu. Mình nói thì lại bảo quảng cáo. Các bạn xem video về loạt bài của tôi về hàm BS_SQL trên Youtube thì nó khác hoàn toàn với các nhận định nếu như không xem sản phẩm.
Bài đã được tự động gộp:



Đây là nhận định của các anh thế hệ 7.x trở về trước có biết đến Pascal và Delphi từ thời bản 7. Delphi bây giờ khác lắm rồi. Lập trình 1 code và biên dịch đa nền tảng... Delphi phát triển ở các nước Mỹ, Nhật, Nga, Pháp, Đức, Brazil.
https://www.embarcadero.com/products/delphi
Bài đã được tự động gộp:

Bài đã được tự động gộp:


To bạn Thuy:
Hàm và Value là hai khái niệm khác nhau hoàn toàn. Hàm được tương tác qua cơ chế tính toán và tham chiếu động của Excel. Không phải tự nhiên hàm BS_SQL trả về mảng đâu :). Mảng bảo toàn vùng dữ liệu, người sử dụng, người xem số liệu không vô tình xóa hay sửa vài ô nào đó...

Bây giờ em hãy test các tính huống sau để hoàn thiện và qua đó các bạn sẽ biết viết hàm này dễ hay khó nhé.
1. Hàm co giãn số dòng, số cột mà không đè vào dữ liệu phía cuối và phía phải?
2. Có ít nhất 2 hàm đang tham chiếu vào cùng một địa chỉ trên sheet. Bây giờ hay thay đổi giá trị trên ô đó thì những hàm đang tham chiếu đến nó có chạy không? Đây là cách làm công thức mà dân Excel đa số làm.
3. Nếu người sử dụng muốn có các hàm thống kê bao vào vùng của công thức mảng, khi công thức đó co giãn thì các hàm thống kê này tính toán có đúng không?
Tóm lại vẫn là A-Tool thì ắt là quảng cáo
Vì nói thế thì tôi giới thiệu là dùng SQL-server thay thế luôn Excel
Tất nhiên A-Tool có giá trị với người sử dụng còn ai bàn code, technique thì giá trị nó =0, vì sử dụng thì sản phẩm đã đóng gói, xem video thì chỉ có hình
 
Upvote 0
Tóm lại vẫn là A-Tool thì ắt là quảng cáo
Vì nói thế thì tôi giới thiệu là dùng SQL-server thay thế luôn Excel
Tất nhiên A-Tool có giá trị với người sử dụng còn ai bàn code, technique thì giá trị nó =0, vì sử dụng thì sản phẩm đã đóng gói, xem video thì chỉ có hình

Oh. Bác lại sai. A-Tools sinh ra bộ hàm. Người sử dụng có bộ hàm đó tự xây dựng báo cáo, phần mềm. A-Tools đóng vai trò như Framework để người thiết kế tạo ra những sản phẩm riêng. Không như các phần mềm đóng gói, nó chỉ có ngần đó chức năng. Học phần mềm là học khai thức chức năng , gầnn hư cố định. CÒn A-Tools là hàm mà người sử dụng tự xây dựng công thức.

Người học code trên GPE này có và người đi tìm giải pháp cho công việc trên GPE này rất nhiều. Tỷ lệ người có thể lập trình VBA tạo ra được một cái báo cáo lọc với người dùng công thức Excel thì nó chênh lệch lắm. Không phải ai cũng lập trình VBA nổi, dù có học vài năm đấy. Vậy nên dù có người giới thiệu sản phẩm tốt đáp ứngch o đại đa số người cần giải pháp hay người trợ giúp code cũng đều nên xem là có giá trị cho cộng đồng GPE này. Nó không phải chỉ dành cho người học code đâu.
 
Upvote 0
Oh. Bác lại sai. A-Tools sinh ra bộ hàm. Người sử dụng có bộ hàm đó tự xây dựng báo cáo, phần mềm. A-Tools đóng vai trò như Framework để người thiết kế tạo ra những sản phẩm riêng. Không như các phần mềm đóng gói, nó chỉ có ngần đó chức năng. Học phần mềm là học khai thức chức năng , gầnn hư cố định. CÒn A-Tools là hàm mà người sử dụng tự xây dựng công thức.

Người học code trên GPE này có và người đi tìm giải pháp cho công việc trên GPE này rất nhiều. Tỷ lệ người có thể lập trình VBA tạo ra được một cái báo cáo lọc với người dùng công thức Excel thì nó chênh lệch lắm. Không phải ai cũng lập trình VBA nổi, dù có học vài năm đấy. Vậy nên dù nguwoif giới thiệu sản phẩm tốt đáp ứngch o đại đa số người cần giải pháp hay số ít để học lập trình thì cũng đều có giá trị cả.
Sinh ra bộ hàm cũng thế thôi bạn, nó cũng là đóng gói
Như Excel hay bộ office người ta cũng gọi là sản phẩm đóng gói đó thôi
Tất nhiên tôi nói nó có giá trị với người sử dụng - nên bạn quảng bá cho người sử dụng khách hàng thì hợp hơn là chỗ nào (đang bàn code) cũng giới thiệu, vậy thôi.
 
Upvote 0
To bạn Thuy:
Hàm và Value là hai khái niệm khác nhau hoàn toàn. Hàm được tương tác qua cơ chế tính toán và tham chiếu động của Excel. Không phải tự nhiên hàm BS_SQL trả về mảng đâu :). Mảng bảo toàn vùng dữ liệu, người sử dụng, người xem số liệu không vô tình xóa hay sửa vài ô nào đó...

Bây giờ em hãy test các tính huống sau để hoàn thiện và qua đó các bạn sẽ biết viết hàm này dễ hay khó nhé.
1. Hàm co giãn số dòng, số cột mà không đè vào dữ liệu phía cuối và phía phải?
2. Có ít nhất 2 hàm đang tham chiếu vào cùng một địa chỉ trên sheet. Bây giờ hay thay đổi giá trị trên ô đó thì những hàm đang tham chiếu đến nó có chạy không? Đây là cách làm công thức mà dân Excel đa số làm.
3. Nếu người sử dụng muốn có các hàm thống kê bao vào vùng của công thức mảng, khi công thức đó co giãn thì các hàm thống kê này tính toán có đúng không?
1. đã test thử ok
2. em chưa test 2 hàm (đã test 1 hàm ok).
3. Em chua thử.
------Em đang mò cái Fill Arr mà chưa ra
 
Upvote 0
Sinh ra bộ hàm cũng thế thôi bạn, nó cũng là đóng gói
Như Excel hay bộ office người ta cũng gọi là sản phẩm đóng gói đó thôi
Tất nhiên tôi nói nó có giá trị với người sử dụng - nên bạn quảng bá cho người sử dụng khách hàng thì hợp hơn là chỗ nào (đang bàn code) cũng giới thiệu, vậy thôi.

Bạn Thuyyeu đang muốn cơ chế giống BS_SQL. Và bạn nhận định mấy ý không chính xác nên tôi cũng giải thích và làm sáng tỏ thêm cho những người khác nếu họ đọc comment của bạn thì còn có thông tin khác đính chính cho chính xác hơn.
Một điều hiển nhiên là muốn lập trình tốt và đã có ý giống sp nào đó thì đương nhiên phải hiểu đặc tính của sản phẩm à mình làm theo, từ đây có thể làm tốt hơn, giảm những yếu tốt không phải phù hợp. Bạn đừng xem xét nặng vấn đề quảng cáo, chính bạn cũng đang quảng cáo cho Google và Excel nhé. :). Mọi thứ chỉ là tương đối thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đừng xem xét nặng vấn đề quảng cáo, chính bạn cũng đang quảng cáo cho Google và Excel nhé. :). Mọi thứ chỉ là tương đối thôi.
Thế thì đề nghị dẹp luôn cái GPE này đi, quảng cáo cho Excel và đủ thứ khác ...

Bạn cứ đọc lại toàn bộ diễn đàn đi, xem ai lạm dụng quảng cáo - mà không thấy BQT nói gì, phàn nàn gì -- chắc hẳn là tay trong rồi ... Nên đừng lạm dụng quá dẫn tới phản cảm.
 
Upvote 0
Thế thì đề nghị dẹp luôn cái GPE này đi, quảng cáo cho Excel và đủ thứ khác ...

Bạn cứ đọc lại toàn bộ diễn đàn đi, xem ai lạm dụng quảng cáo - mà không thấy BQT nói gì, phàn nàn gì -- chắc hẳn là tay trong rồi ... Nên đừng lạm dụng quá dẫn tới phản cảm.

Bạn đừng tự gây khó chịu đến như vậy với bản thân mình. Việc nó bình thường thôi mà.
Bài đã được tự động gộp:

Quay lại vấn đền bạn Thuyyeu. Việc điền giá trị hay dùng công thức điền mảng có thể coi tốc độ là gần như nhau. Bạn dùng hàn Timer hay GetTickCount để đo sẽ thấy.
 
Upvote 0
Bạn cứ đọc lại toàn bộ diễn đàn đi, xem ai lạm dụng quảng cáo - mà không thấy BQT nói gì, phàn nàn gì -- chắc hẳn là tay trong rồi ...
Có thể bạn chưa biết nên tôi giải thích để khỏi mất công tranh luận.
Cũng có thể thông tin của tôi không đúng nhưng tôi tin là đúng.

1. Tuân sống về lập trình, kinh doanh nên ắt muốn quảng cáo thương hiệu của mình. Quảng cáo sản phẩm có trả phí hay miễn phí. Cho một ít miễn phí để người ta dùng thấy hay cũng là quảng bá thương hiệu. Ai kinh doanh cũng muốn quảng cáo thôi. Những ông bán rèm cũng xông vào GPE quảng cáo thì đủ hiểu. :D

2. Tuân có quyền quảng cáo và BQT không có ý kiến gì. Một khi người ta có quyền thì phải chịu thôi :D
Tại sao Tuân có quyền thì tôi không quan tâm. Là bạn nhậu của BQT chăng? :D
 
Upvote 0
Có thể bạn chưa biết nên tôi giải thích để khỏi mất công tranh luận.
Cũng có thể thông tin của tôi không đúng nhưng tôi tin là đúng.

1. Tuân sống về lập trình, kinh doanh nên ắt muốn quảng cáo thương hiệu của mình. Quảng cáo sản phẩm có trả phí hay miễn phí. Cho một ít miễn phí để người ta dùng thấy hay cũng là quảng bá thương hiệu. Ai kinh doanh cũng muốn quảng cáo thôi. Những ông bán rèm cũng xông vào GPE quảng cáo thì đủ hiểu. :D

2. Tuân có quyền quảng cáo và BQT không có ý kiến gì. Một khi người ta có quyền thì phải chịu thôi :D
Tại sao Tuân có quyền thì tôi không quan tâm. Là bạn nhậu của BQT chăng? :D
Quảng cáo đúng nơi đúng lúc đúng chỗ thì nó hay bác ạ, ví dụ banner, bên lề, bên trên bên dưới,
Còn như kiểu đang xemPhim, tin tức lại chen ngang luôn vào quảng cáo thì khó chịu là đúng rồi.
Kinh doanh thì quảng cáo là tất nhiên nhưng lạm dụng thì thật phản cảm.
Nói vậy thôi, còn quyền thì cứ làm. Nhưng ý kiến về phản cảm thì các thành viên cứ lên tiếng.
 
Upvote 0
Quảng cáo đúng nơi đúng lúc đúng chỗ thì nó hay bác ạ, ví dụ banner, bên lề, bên trên bên dưới,
Còn như kiểu đang xemPhim, tin tức lại chen ngang luôn vào quảng cáo thì khó chịu là đúng rồi.
Kinh doanh thì quảng cáo là tất nhiên nhưng lạm dụng thì thật phản cảm.
Nói vậy thôi, còn quyền thì cứ làm. Nhưng ý kiến về phản cảm thì các thành viên cứ lên tiếng.

Bạn thấy phản cảm phần lớn do cách nhìn nhận của bạn mà thôi. Bạn hãy xem lại từ đâu nhé. Bạn nhận xét công thức mảng và dẫn chứng "hàm Query của Google sheet tốt hơn Excel". Bạn đã dẫn chứng một sản phẩm của ông Tây. Và tôi phải đính chính là vấn đề bạn nói là không đúng, và tôi cũng phải lấy dẫn chứng có liên quan đến một hàm của sản phẩm khác. Vậy theo cách bạn nói thì tôi và bạn đề quảng cáo nhé. Đừng nói là Goolge là free, họ thu tiền đều đặn hàng năm của user nếu dùng nâng cao một chút đó. Trong chủ đề này mặc dù bạn Thuyyeu có dẫn chứng hàm BS_SQL của tôi nhưng tôi đã rất ý tứ chỉ ghi vài câu dẫn chứng Excel cũng làm được nhờ vào.... so sánh với dẫn chứng không có tính thuyết phục của bạn mà thôi.
(Bạn nào muốn xem lại những gì tôi nói đúng không, hãy đọc từ đầu topic này sẽ rõ).
Tôi nghĩ rằng vấn đề bạn đang nói trên topic này với tôi là không thuyết phục đâu. Cả tôi và bạn nên dừng lại việc tranh luận này ở đây là tốt nhất để topic tập chung nội dung chính.
 
Upvote 0
Bạn thấy phản cảm phần lớn do cách nhìn nhận của bạn mà thôi. Bạn hãy xem lại từ đâu nhé. Bạn nhận xét công thức mảng và dẫn chứng "hàm Query của Google sheet tốt hơn Excel". Bạn đã dẫn chứng một sản phẩm của ông Tây. Và tôi phải đính chính là vấn đề bạn nói là không đúng, và tôi cũng phải lấy dẫn chứng có liên quan đến một hàm của sản phẩm khác. Vậy theo cách bạn nói thì tôi và bạn đề quảng cáo nhé. Đừng nói là Goolge là free, họ thu tiền đều đặn hàng năm của user nếu dùng nâng cao một chút đó. Trong chủ đề này mặc dù bạn Thuyyeu có dẫn chứng hàm BS_SQL của tôi nhưng tôi đã rất ý tứ chỉ ghi vài câu dẫn chứng Excel cũng làm được nhờ vào.... so sánh với dẫn chứng không có tính thuyết phục của bạn mà thôi.
(Bạn nào muốn xem lại những gì tôi nói đúng không, hãy đọc từ đầu topic này sẽ rõ).
Tôi nghĩ rằng vấn đề bạn đang nói trên topic này với tôi là không thuyết phục đâu. Cả tôi và bạn nên dừng lại việc tranh luận này ở đây là tốt nhất để topic tập chung nội dung chính.
Tranh luận làm chi, chỉ nói chút về phản cảm (Quảng cáo - chính bạn đề cập tới). Còn Post (bài trên) tôi đang trả lời bác batman1. Còn tôi đã dừng từ bài (post) trước vì nội dung đề cập đã đủ hiểu cho những người cần hiểu là phản cảm rồi.

Còn về Query của google spreadsheet là tôi đề cập đến cách thực hiện công thức mảng trong google spreadsheet - và cũng không bàn nữa vì không hợp chủ đề này (cũng không cần thuyết phục bạn làm chi vì đâu có nói với bạn đâu)
 
Upvote 0
Xin thông báo với cả Làng là Mạnh cũng mới tập viết xong cái hàm lấy dữ liệu đó he
Vấn đề còn lại Mạnh thêm tùy chon lọc nhiều điều kiện vào như thêm hành + tỏi + dầu ăn nữa là xong he :p:oops::D thơm nhức mũi đó ???!!!
ADOGPE.PNG
 
Upvote 0
Xin thông báo với cả Làng là Mạnh cũng mới tập viết xong cái hàm lấy dữ liệu đó he
Vấn đề còn lại Mạnh thêm tùy chon lọc nhiều điều kiện vào như thêm hành + tỏi + dầu ăn nữa là xong he :p:oops::D thơm nhức mũi đó ???!!!
View attachment 211063
I like em dang hóng đây , coi anh thêm gia vị gì, them xong nhớ chỉ em với nhé, dạo này chắc em ít mo code nhứt mắt quá
 
Upvote 0
I like em dang hóng đây , coi anh thêm gia vị gì, them xong nhớ chỉ em với nhé, dạo này chắc em ít mo code nhứt mắt quá
ok ... Mạnh mặc dù ko được hoc hành code két bài bản nhưng nhìn qua ai đó viết là có thể bắt trước làm được 1 phần nào đó ???!!!
Trong chừng mực nào đó Mạnh quậy tầm bạy vô tình trúng vào chỗ nào đó cảm giác thấy giật mình luôn đó .... vì có mất chi mô mà ko quậy chứ -0-0-0--0-0-0-
 
Upvote 0
ok ... Mạnh mặc dù ko được hoc hành code két bài bản nhưng nhìn qua ai đó viết là có thể bắt trước làm được 1 phần nào đó ???!!!
Trong chừng mực nào đó Mạnh quậy tầm bạy vô tình trúng vào chỗ nào đó cảm giác thấy giật mình luôn đó .... vì có mất chi mô mà ko quậy chứ -0-0-0--0-0-0-
Very good , mò ra được vui he, de xem anh mò tới đâu nữa.....
 
Upvote 0
Không phải tự nhiên hàm BS_SQL trả về mảng đâu :). Mảng bảo toàn vùng dữ liệu, người sử dụng, người xem số liệu không vô tình xóa hay sửa vài ô nào đó...
Cái này nghĩ di nghĩ lại em thấy anh noi hoan toan chinh xác
Tự dong co dãn công thức mảng cung không phải dễ. Em dang bí chỗ vùng dữ liệu moi thay doi hichic
 
Upvote 0
Ôi cái hàm đó nó lấy cả Access nữa mới sợ chứ -0-0-0--0-0-0-
Access.PNG
Bài đã được tự động gộp:

Cái này nghĩ di nghĩ lại em thấy anh noi hoan toan chinh xác
Tự dong co dãn công thức mảng cung không phải dễ. Em dang bí chỗ vùng dữ liệu moi thay doi hichic
Thử nghiên cứu theo hướng
1/ Duyệt qua RecordCount lấy số dòng của nó xong Insert số dòng tương ứng
2/ xem trong Name của nó là biết số dòng trước của nó bao nhiêu xong xóa đi tương ứng
....
Vậy coi sao
 
Upvote 0
Ôi cái hàm đó nó lấy cả Access nữa mới sợ chứ -0-0-0--0-0-0-
View attachment 211080
Bài đã được tự động gộp:


Thử nghiên cứu theo hướng
1/ Duyệt qua RecordCount lấy số dòng của nó xong Insert số dòng tương ứng
2/ xem trong Name của nó là biết số dòng trước của nó bao nhiêu xong xóa đi tương ứng
....
Vậy coi sao
Anh thử đi, khó là chỗ do do anh em chưa làm dược mà phải fill array nhé
Gần tới đích rồi, leo qua ngọn núi to này rồi qua vài ba ngọn núi nhỏ khác nữa là thỉnh đựợc bí kíp hihibi
 
Lần chỉnh sửa cuối:
Upvote 0
Anh thử đi, khó là chỗ do do anh em chưa làm dược mà phải fill array nhé
Duyet
Anh thử đi, khó là chỗ do do anh em chưa làm dược mà phải fill array nhé
Gần tới đích rồi, leo qua ngọn núi to này rồi qua vài ba ngọn núi nhỏ khác nữa là thỉnh đựợc bí kíp hihibi
yên tâm đi mai mạnh nghĩ cách còn hướng đó là chính xác
 
Lần chỉnh sửa cuối:
Upvote 0
To @thuyyeu99
Hướng làm có rồi đó
1/ Bằng các gì đó Delete đi số dòng trước đó của nó đã gán xuống Sheet
2/ dùng RecordCount để lấy số dòng xong Insert Shift:=xlDown theo số RecordCount .... có điều phải duyệt For next chèn dòng trước xong gán kết quả sau
....
Cũng mới khám phá thêm vài cái nhỏ vvv:p:p
 
Upvote 0
To @thuyyeu99
Hướng làm có rồi đó
1/ Bằng các gì đó Delete đi số dòng trước đó của nó đã gán xuống Sheet
2/ dùng RecordCount để lấy số dòng xong Insert Shift:=xlDown theo số RecordCount .... có điều phải duyệt For next chèn dòng trước xong gán kết quả sau
....
Cũng mới khám phá thêm vài cái nhỏ vvv:p:p
Ý 1 don giản,
ý 2 mỚi khó hihihi em chỉ cần lấy duoc so dòng và so cot truoc thoi.
hihih
 
Upvote 0
Ý 1 don giản,
ý 2 mỚi khó hihihi em chỉ cần lấy duoc so dòng và so cot truoc thoi.
hihih
Thử xài hàm sau xem mạnh Copy chỉnh sửa Từ GPE đó
Mã:
Public Function CheckRows(ByVal FilePath As String, ByVal SheetName As String)
    Dim Fso As Object, FullPath As String ''Ham IFERROR ko su dung cho Office 2003
    Set Fso = CreateObject("Scripting.FileSystemObject")
    If Fso.FileExists(FilePath) = False Then Exit Function
    FullPath = "'" & Fso.GetParentFolderName(FilePath) & "\[" _
        & Fso.GetFilename(FilePath) & "]" & SheetName & "'!"
    CheckRows = "=IFERROR(LOOKUP(2,1/(" & FullPath & "A1:A65536<>""""),ROW(1:65536)),0)" ''OK
    Set Fso = Nothing
    Application.AskToUpdateLinks = False
End Function

Public Sub test()
    Range("A1") = CheckRows(ThisWorkbook.Path & "\Mau thong ke 3.xlsx", "THA") ''THA = ten Sheet
End Sub
Lấy dòng cột = ADO nè
Mã:
Private Sub GetDataGetRows()
    Dim Rst As Object, SQL As String
    Dim Strcon As String, ExcelPath As String
    Dim RecCount  As Long
    Dim dong As Long, cot As Long
    Dim dArr(), Arr(), i As Long, j As Long, k As Long
    ExcelPath = ThisWorkbook.Path & "\Data.xlsb"
    Set Rst = CreateObject("ADODB.Recordset")
    SQL = "select * from [Data_Nhap$]" ''Tuy chon Mo Rong de lay du lieu
    Strcon = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelPath _
                & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";")
    Rst.Open SQL, Strcon, 3, 1
    RecCount = Rst.RecordCount
    ''MsgBox RecCount
    If Not Rst.EOF Then
        Arr = Rst.GetRows(RecCount)
        ''ReDim dArr(1 To UBound(Arr, 2) + 1, 1 To UBound(Arr, 1) + 1) ''Bỏ luôn
        dong = UBound(Arr, 2)
        cot = UBound(Arr, 1)
        MsgBox "Co So Cot La : " & Space(1) & cot
        MsgBox "Co So dong La : " & Space(1) & dong
'        For i = 0 To UBound(Arr, 2)
'            k = k + 1
'            For j = 0 To UBound(Arr, 1)
'                dArr(k, j + 1) = Arr(j, i)
'            Next j
'        Next i
'        Cells.ClearContents
'        Range("A2").Resize(UBound(dArr, 1), UBound(dArr, 2)) = dArr
    End If
End Sub

Từ từ thong thả ta thử các kiểu xem sao ... xong cái nào ưu việt nhất thì chốt hạ he hehehehe
 
Lần chỉnh sửa cuối:
Upvote 0
vậy xong ròi hả
 
Upvote 0
Vụ này lâu lâu có một chủ đề rồi mà. (link)

Microsoft chính chủ cũng có lâu rồi.

1547852564371.png
 
Upvote 0
Vụ này lâu lâu có một chủ đề rồi mà. (link)

Microsoft chính chủ cũng có lâu rồi.

View attachment 211275

Không phải lâu đâu. Microsoft mới chỉ update vào phiên bản mới nhất của Excel 2019 và Office 365 (bản nâng cấp 2019) thôi. Và mới chỉ có các hàm SORT, FILTER đơn giản. MS cố làm vụ này để không bị so sánh Google Sheet với hàm ArrayFormula (mặc dù rất chuối) và với một Add-in của Việt Nam đấy :D . Mấy bạn đang muốn làm SQL, INSERT=YES,.. và chạy trên mọi Excel cơ :)
 
Upvote 0
Thật ra trong Windows + Office của Bác Bill có sẳn hết rồi tại mình chưa biết lôi nó ra xài thôi !!!!!!!!!!! ===\.===\.Lôi nó ra ví dụ như ADO vậy thui

Mạnh đang suy nghĩ 1 cái tại sao Bác Bill không viết luôn cái Hàm Mãng đó luôn cho Excel Nhỉ ...???!!! Chắc phải có nguyên nhân chi đó chứ ???!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Thật ra trong Windows + Office của Bác Bill có sẳn hết rồi tại mình chưa biết lôi nó ra xài thôi !!!!!!!!!!! ===\.===\.Lôi nó ra ví dụ như ADO vậy thui

Mạnh đang suy nghĩ 1 cái tại sao Bác Bill không viết luôn cái Hàm Mãng đó luôn cho Excel Nhỉ ...???!!! Chắc phải có nguyên nhân chi đó chứ ???!!!

Vụ hàm mảng này không có sẵn đâu nhé! Hàm để trả ra mảng thì hiển nhiên là có còn điền mảng tự co giãn vừa khít trên sheet lại là chuyện khác hoàn toàn. Cách viết hàm này là giải thuật để lách của nhiều khe cửa chứ không ăn sẵn được đâu (dù lập trình trên ngôn ngữ nào cũng là phải lách) . Ngay cả Google Sheet bao lâu nay họ vẫn còn bị lỗi với hàm này khi co giãn vùng mảng, nếu có giá trị dưới phía mảng đó là bị N/A#. Bạn nào có Office 365 hoặc Excel 2109 thì thử FILTER xem có bị lỗi giống như vậy không biết ngay.
 
Upvote 0
Vụ hàm mảng này không có sẵn đâu nhé! Hàm để trả ra mảng thì hiển nhiên là có còn điền mảng tự co giãn vừa khít trên sheet lại là chuyện khác hoàn toàn. Cách viết hàm này là giải thuật để lách của nhiều khe cửa chứ không ăn sẵn được đâu (dù lập trình trên ngôn ngữ nào cũng là phải lách) . Ngay cả Google Sheet bao lâu nay họ vẫn còn bị lỗi với hàm này khi co giãn vùng mảng, nếu có giá trị dưới phía mảng đó là bị N/A#. Bạn nào có Office 365 hoặc Excel 2109 thì thử FILTER xem có bị lỗi giống như vậy không biết ngay.
Thì theo Mạnh thấy nó cũng chỉ khác nhau cái chỗ Co và Giản đó thôi ... cái đó do người lập trình Sáng tạo viết thêm thôi chứ suy cho cùng ko có cái công cụ kia của bác Bill thì lấy chi ra mà Co Với Giản chứ
Có gốc xong mới có ngọn chứ .... Mạnh nói vậy ko sai chứ .... có chi Vui vẻ nhé :oops::D
 
Upvote 0
Thì theo Mạnh thấy nó cũng chỉ khác nhau cái chỗ Co và Giản đó thôi ... cái đó do người lập trình Sáng tạo viết thêm thôi chứ suy cho cùng ko có cái công cụ kia của bác Bill thì lấy chi ra mà Co Với Giản chứ
Có gốc xong mới có ngọn chứ .... Mạnh nói vậy ko sai chứ .... có chi Vui vẻ nhé :oops::D

ĐÚng là thế, nó nằm ở chỗ "Sáng tạo" - giá trị của nó ở đây. Nhưng rủi ro vô cùng cũng ở đây. Excel hay Google Sheet phải tuân thủ luật công thức tự tính toán, mọi biến động lên vùng, tham chiếu đầu vào của hàm sẽ bị tính toán lại, vì thế cái sự "co giãn" kia nó làm cho mọi thứ rối tung lên, công thức sẽ chạy đi chạy lại loằng ngoằng dẫn đễn chậm hoặc bị đứt phụt. Tầm của họ phân phối sản phẩm rộng thế giới, có thể họ chưa dám mạo hiểm đụng sâu, sợ người sử dụng ham hố làm họ vất vả thêm :) .
(Chia sẻ thêm, code tôi viết hàm mảng co giãn trên Delphi ít nhất là 3k dòng code để có thể làm mọi sự êm đềm đấy :) )
 
Upvote 0
Thật ra trong Windows + Office của Bác Bill có sẳn hết rồi tại mình chưa biết lôi nó ra xài thôi !!!!!!!!!!! ===\.===\.Lôi nó ra ví dụ như ADO vậy thui

Mạnh đang suy nghĩ 1 cái tại sao Bác Bill không viết luôn cái Hàm Mãng đó luôn cho Excel Nhỉ ...???!!! Chắc phải có nguyên nhân chi đó chứ ???!!!
ANh Tuân làm hoàn toàn khác cách làm của em và anh đấy anh Mạnh, anh nhìn câu lệnh SQL của anh Tuân là thuần trong Delphi dùng TADOQuery
Giờ em phát hiện ra có nhiều cách để làm lắm, mà đúng cái vụ co dãn hàm mãn nghĩ đơn giản nhưng hơi phứt tạp, hy vong là em mò ra hihi
 
Upvote 0
ANh Tuân làm hoàn toàn khác cách làm của em và anh đấy anh Mạnh, anh nhìn câu lệnh SQL của anh Tuân là thuần trong Delphi dùng TADOQuery
Giờ em phát hiện ra có nhiều cách để làm lắm, mà đúng cái vụ co dãn hàm mãn nghĩ đơn giản nhưng hơi phứt tạp, hy vong là em mò ra hihi
Cứ thong thả làm đi nay tới qua tết kiểu chi cũng ok à nghiên cứu mà lo chi vấn đề thời gian he

Chân lý thì chỉ có 1 ... còn đường tới chân lý thì có muôn nẻo đường .... ai tới trước thì người đó là người chiến thắng ????!!!
...............
.....
Mạnh mò mấy ngày nay sợ rồi mắt dát và chạy nước ra ... tạm gác lại mấy ngày làm cái đống việc báo cáo thuế của cty và dự hội nghị cuối năm của các nhà mạng mời cái đã ... xong nghiên cứu tiếp he:p:p
 
Upvote 0
Cứ thong thả làm đi nay tới qua tết kiểu chi cũng ok à nghiên cứu mà lo chi vấn đề thời gian he

Chân lý thì chỉ có 1 ... còn đường tới chân lý thì có muôn nẻo đường .... ai tới trước thì người đó là người chiến thắng ????!!!
...............
.....
Mạnh mò mấy ngày nay sợ rồi mắt dát và chạy nước ra ... tạm gác lại mấy ngày làm cái đống việc báo cáo thuế của cty và dự hội nghị cuối năm của các nhà mạng mời cái đã ... xong nghiên cứu tiếp he:p:p
Hhihhi anh bán Sim ah có cái sim nào đẹp đẹp tặng em đi hihihih
 
Upvote 0
Đúng là viết hàm mãng thuần trong Delphi khó thật, em viết Fill được công thức mãng trong vùng được rồi, bây giờ lại nãy sinh 1 vấn đề. Em get record vào mãng Array (em khai báo là OleVariant) trong delphi đọc đựợc nhưng Result :=Array trong Excel nó lại không hiểu
 
Upvote 0
Đúng là viết hàm mãng thuần trong Delphi khó thật, em viết Fill được công thức mãng trong vùng được rồi, bây giờ lại nãy sinh 1 vấn đề. Em get record vào mãng Array (em khai báo là OleVariant) trong delphi đọc đựợc nhưng Result :=Array trong Excel nó lại không hiểu

Mảng trong Excel là chuẩn của API: PSafeArray. Mảng trong Delphi có hai loại Array thuần của Delphi thì chỉ dùng trong Delphi, còn Array để giao tiếp với các ứng dụng khác thì phải là PSafeArray. Em tạo bảng hàm VarArrayCreate() là tạo PSafeArray. Với Excel thì thì nó là mảng 2D. Làm theo hướng này là ok nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Mảng trong Excel là chuẩn của API: PSafeArray. Mảng trong Delphi có hai loại Array thuần của Delphi thì chỉ dùng trong Delphi, còn Array để giao tiếp với các ứng dụng khác thì phải là PSafeArray. Em tạo bảng hàm VarArrayCreate() là tạo PSafeArray. Với Excel thì thì nó là mảng 2D. Làm theo hướng này là ok nhé.
anh có thể cho em cai vi dụ nho nhỏ về làm sao để dưa recoset vào VarArrayCreate() là tạo PSafeArray , từ PSafeArray có thể Return (Olevariant) duoc không anh
 
Upvote 0
Thử đưa nó hết vào mãng xong duyệt xem sao lấy số dòng và cột ??!!
 
Lần chỉnh sửa cuối:
Upvote 0
anh có thể cho em cai vi dụ nho nhỏ về làm sao để dưa recoset vào VarArrayCreate() là tạo PSafeArray , từ PSafeArray có thể Return (Olevariant) duoc không anh

Em dùng biến Kiểu Variant thay cho OleVariant (về cơ bản 2 kiểu này gần tương đương).

var
arr: Variant;
begin
arr := VarArrayCreate([1, sodong, 1, so cot], varVariant);

dùng vòng lặp duyệt từng record trong recodeset và nhặt vào mảng Arr[I,J]

end;

Cách tạo mảng này có trong box học Delphi đó.
 
Upvote 0
Em dùng biến Kiểu Variant thay cho OleVariant (về cơ bản 2 kiểu này gần tương đương).

var
arr: Variant;
begin
arr := VarArrayCreate([1, sodong, 1, so cot], varVariant);

dùng vòng lặp duyệt từng record trong recodeset và nhặt vào mảng Arr[I,J]

end;

Cách tạo mảng này có trong box học Delphi đó.
Mã:
     Result := VarArrayCreate([1, oRs.RecordCount+1, 1, oRs.Fields.Count+1], varVariant);
      oRS.MoveFirst;
      row := 1;
        while not oRS.Eof do
        begin
          for col:=1 to oRS.Fields.Count do
          Result[row,col] := oRS.Fields[col-1].Value;
    inc(row);
    oRS.MoveNext;
   end;
loi.jpgNó vẫn báo #Value anh
 
Upvote 0
Bằng mọi giá bạn phải tạo đc mảng như mình nói trên thành công. Hãy test thử bằng cách viết hàm API trong DLL của Delphi theo bài hướng dẫn của anh đã. Nếu mảng đó em gán được ra sheet trong VBA là mảng đó Ok. Tron code trên em tạo số phần tử mảng bị thừa 1 cả số dòng và số cột.
 
Upvote 0
Bằng mọi giá bạn phải tạo đc mảng như mình nói trên thành công. Hãy test thử bằng cách viết hàm API trong DLL của Delphi theo bài hướng dẫn của anh đã. Nếu mảng đó em gán được ra sheet trong VBA là mảng đó Ok. Tron code trên em tạo số phần tử mảng bị thừa 1 cả số dòng và số cột.
Trong vba thì dễ rồi anh, làm cái ra liền mà cũng mã đó đưa vô Delphi nó lại vậy, em test trong Delphi thì ok mà cứ dùng bên Excel là bị vậy khng6 hiểu nổi
Em viet trong VBA cũng y chang như vậy
VBA.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Ý mình là bạn viết hàm tạo mảng, kiểu trả về là Variant (hàm được tạo bởi VarArrayCreate() ). Rồi khai báo API trong VBA , paste nó vào ô. Không cần dụng gì hàm mảng đâu. Nếu chạy được rồi bạn mới áp dụng hàm đó vào hàm mảng của bạn.

function GetArray(): Variant; stdcall;
begin
Result := VarArrayCreate(...);
//làm các lệnh lấy dữ liệu cho mảng
end;
excports
GetArray

Bây giờ khai báo API hàm đó trong VBA xem chạy được không?
Trong ví dụ tạo mảng của bạn, nếu mảng chứa cả dòng tiêu đề cột thì số phần tử dòng trong mảng là RecordCount + 1 là đúng.
 
Upvote 0
Ý mình là bạn viết hàm tạo mảng, kiểu trả về là Variant (hàm được tạo bởi VarArrayCreate() ). Rồi khai báo API trong VBA , paste nó vào ô. Không cần dụng gì hàm mảng đâu. Nếu chạy được rồi bạn mới áp dụng hàm đó vào hàm mảng của bạn.

function GetArray(): Variant; stdcall;
begin
Result := VarArrayCreate(...);
//làm các lệnh lấy dữ liệu cho mảng
end;
excports
GetArray

Bây giờ khai báo API hàm đó trong VBA xem chạy được không?
Trong ví dụ tạo mảng của bạn, nếu mảng chứa cả dòng tiêu đề cột thì số phần tử dòng trong mảng là RecordCount + 1 là đúng.
Ah để em test thử
 
Upvote 0
Ý mình là bạn viết hàm tạo mảng, kiểu trả về là Variant (hàm được tạo bởi VarArrayCreate() ). Rồi khai báo API trong VBA , paste nó vào ô. Không cần dụng gì hàm mảng đâu. Nếu chạy được rồi bạn mới áp dụng hàm đó vào hàm mảng của bạn.

function GetArray(): Variant; stdcall;
begin
Result := VarArrayCreate(...);
//làm các lệnh lấy dữ liệu cho mảng
end;
excports
GetArray

Bây giờ khai báo API hàm đó trong VBA xem chạy được không?
Trong ví dụ tạo mảng của bạn, nếu mảng chứa cả dòng tiêu đề cột thì số phần tử dòng trong mảng là RecordCount + 1 là đúng.
Delphi vba ok.jpg

Dạ Chạy ok anh
 
Upvote 0
Upvote 0
Hihi mới 80% thôi anh, có nhiều cái khó quá Em chưa nghiên cứu ra -+*/-+*/-+*/
có thể ứng dụng lấy dữ liệu Web + biểu đồ + ảnh linh tính đó ...
nhưng khả năng của mạnh khó quá tạm gác lại cứ để đó lâu lâu ngó 1 cái rồi một ngày đẹp trời nào đó nó hội đủ kiến thức Delphi thì có thể làm được đó !!!
 
Upvote 0
có thể ứng dụng lấy dữ liệu Web + biểu đồ + ảnh linh tính đó ...
nhưng khả năng của mạnh khó quá tạm gác lại cứ để đó lâu lâu ngó 1 cái rồi một ngày đẹp trời nào đó nó hội đủ kiến thức Delphi thì có thể làm được đó !!!
anh chịu khó nghiên cứu là được thôi, bí tới đâu em giúp được sẽ giúp nhưng phải chịu nghiên cứu nhé.
Có nhiều lúc 1 dòng code đơn giản em phải nghiên cứu gần nửa tháng đó
 
Upvote 0
Phận làm đồ đệ lật đật lẻo đẻo theo sau .... sau 2 tuần mờ mắt cuối cùng cũng mò viết ra cái sự kiện Hàm Mảng API xài sự kiện trên Sheet
Cảm giác mò trong hầm tới cuối con đường thấy Ánh sáng ..... thấy người nó dung rinh khó tả :clap2:,,,,,,,,,,,,,,,,,,,,,

Excel.PNG
 
Upvote 0
Phận làm đồ đệ lật đật lẻo đẻo theo sau .... sau 2 tuần mờ mắt cuối cùng cũng mò viết ra cái sự kiện Hàm Mảng API xài sự kiện trên Sheet
Cảm giác mò trong hầm tới cuối con đường thấy Ánh sáng ..... thấy người nó dung rinh khó tả :clap2:,,,,,,,,,,,,,,,,,,,,,

View attachment 211617
Híc anh đừng nói đồ đệ :blowup:Chẳng qua cái này em biết em hướng dẫn anh, chứ chưa chắc kiến thức em bằng anh @$@^#
Em đi ngũ xíu đây chiều đi chúc tết máy sếp nữa.
 
Upvote 0
Híc anh đừng nói đồ đệ :blowup:Chẳng qua cái này em biết em hướng dẫn anh, chứ chưa chắc kiến thức em bằng anh @$@^#
Em đi ngũ xíu đây chiều đi chúc tết máy sếp nữa.
mạnh mới Test lại các kiểu cơ bản là chạy ok rồi đó .... nhưng thấy Cells gán hàm nó ra : #VALUE!

THẤY xấu quá chỉ mạnh cách sửa các xấu đó :p
và viết thêm cái gì cho nó cập nhật cái Hàm trên Cells như trên VBA mạnh xài Application.Volatile
 
Upvote 0
mạnh mới Test lại các kiểu cơ bản là chạy ok rồi đó .... nhưng thấy Cells gán hàm nó ra : #VALUE!

THẤY xấu quá chỉ mạnh cách sửa các xấu đó :p
và viết thêm cái gì cho nó cập nhật cái Hàm trên Cells như trên VBA mạnh xài Application.Volatile
thì anh thử gán cái object trong delphi của anh cũng vậy Application.Volatile thử đi, tự em với anh viết trong 2 cái DLL khác nhau
 
Upvote 0
thì anh thử gán cái object trong delphi của anh cũng vậy Application.Volatile thử đi, tự em với anh viết trong 2 cái DLL khác nhau
thử rồi mà nó báo lỗi
Mạnh gán Object từ Excel vào nó nhận nhưng sao nó báo lỗi ???!!!
qua cái vụ mò code sự kiện này mạnh lại học thêm một cái rất hay là có thể viết các hàm chạy trên Cells hay sự kiện của Excel trong DLL
quả là 1 tên trúng 2 chim :p:p
 
Upvote 0
thử rồi mà nó báo lỗi
Mạnh gán Object từ Excel vào nó nhận nhưng sao nó báo lỗi ???!!!
qua cái vụ mò code sự kiện này mạnh lại học thêm một cái rất hay là có thể viết các hàm chạy trên Cells hay sự kiện của Excel trong DLL
quả là 1 tên trúng 2 chim :p:p
Anh goi cai đoan code update qua em di, de em xem thử
 
Upvote 0
-0-0-0--0-0-0-===\.===\.
Hình như nó có chức năng thêm dòng và cột đấy ... Nhưng mạnh chưa biết xài sao cả ... đang coi tài liệu thôi
Chỉ mạnh cái lỗi Hàm là #VALUE! ĐI
Hihihi theo cách cũ rất khó nhé anh, Ăn tiền là chỗ đó đấy.

Anh cứ đọc kỹ lại máy bài lập trình DLL của anh Tuân và Bài công thức mãng của em, nó có đủ đồ nghề và chìa khóa giải mã hết đó anh
 
Upvote 0
NÓI VẬY mạnh làm sao mò ra đây ????!!!!
Anh cứ đọc kỹ lại máy bài lập trình DLL của anh Tuân và Bài công thức mãng của em, nó có đủ đồ nghề và chìa khóa giải mã hết đó anh

Cái gì dễ đạt được quá nó không có ý nghĩa hihihih--=0--=0--=0
Chìa khóa nằm trong 2 bài đó đó.
Bài đã được tự động gộp:

NÓI VẬY mạnh làm sao mò ra đây ????!!!!
sửa lại code đó dùm với
Anh đi gần đúng hướng rồi chỉ cần linh động chút xíu là ra
 
Upvote 0
Anh cứ đọc kỹ lại máy bài lập trình DLL của anh Tuân và Bài công thức mãng của em, nó có đủ đồ nghề và chìa khóa giải mã hết đó anh

Cái gì dễ đạt được quá nó không có ý nghĩa hihihih--=0--=0--=0
Chìa khóa nằm trong 2 bài đó đó.
Bài đã được tự động gộp:


Anh đi gần đúng hướng rồi chỉ cần linh động chút xíu là ra
Thua ........................................................
 
Upvote 0
Giờ anh muốn em xửa sao
thì chỉ cho sao thì chỉ
trước mắt cải lỗi hàm #VALUE! ....
XONG CÁC BƯỚC TIẾP THEO SAO ????!!! GƠI Ý CHO MẠNH THỬ SỨC MÒ XEM ???
NHƯNG ĐỪNG GỌI Ý KIỂU ANH MANG CÁI CẦN RA SÔNG KIỂU GÌ CŨNG CÂU ĐƯỢC CON CÁ HE :p:p
 
Upvote 0
thì chỉ cho sao thì chỉ
trước mắt cải lỗi hàm #VALUE! ....
XONG CÁC BƯỚC TIẾP THEO SAO ????!!! GƠI Ý CHO MẠNH THỬ SỨC MÒ XEM ???
NHƯNG ĐỪNG GỌI Ý KIỂU ANH MANG CÁI CẦN RA SÔNG KIỂU GÌ CŨNG CÂU ĐƯỢC CON CÁ HE :p:p
Không đâu anh trong 2 bài đó là gói gọn rồi chứ không phải ra "SÔNG KIỂU GÌ CŨNG CÂU ĐƯỢC CON CÁ HE". (Em đọc tính ra hơn 1.000 trang tài liệu ý chứ)
Anh chụp cái hình lỗi #VALUE! của anh em xem thử, em không có chạy code của anh nên không biết.
 
Upvote 0
Không đâu anh trong 2 bài đó là gói gọn rồi chứ không phải ra "SÔNG KIỂU GÌ CŨNG CÂU ĐƯỢC CON CÁ HE". (Em đọc tính ra hơn 1.000 trang tài liệu ý chứ)
Anh chụp cái hình lỗi #VALUE! của anh em xem thử, em không có chạy code của anh nên không biết.
COI DÙM Mạnh
Capture.PNG
 
Upvote 0

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

Back
Top Bottom