Viết hàm tự tạo theo kiểu Excel 365 (1 người xem)

Liên hệ QC

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

Ngô Hải Đăng

Thành viên hoạt động
Tham gia
31/8/17
Bài viết
183
Được thích
247
Giới tính
Nam
Nghiên cứu trên diễn đàn thì phát hiện được cái Application.Caller và sau đây là ý tưởng của mình:
1. Code trên ThisWorkbook
Mã:
Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If IsUDF Then
        SetResult
        rCaller.Formula = sFormula
    End If
End Sub

Private Sub SetResult()
    Dim r0&, c0&
    On Error Resume Next
    r0 = UBound(aResult, 1) - LBound(aResult, 1)
    c0 = UBound(aResult, 2) - LBound(aResult, 2)
    On Error GoTo 0
    If c0 = 0 Then
        rCaller.Resize(1, r0 + 1) = aResult
    Else
        rCaller.Resize(r0 + 1, c0 + 1) = aResult
    End If
End Sub

2. Code trên Module
Mã:
Option Explicit

Public IsUDF As Boolean
Public rCaller As Range
Public aResult As Variant
Public sFormula As String

Function MyUDF()
    If IsUDF Then
        MyUDF = aResult
        IsUDF = False
        Set rCaller = Nothing
        If IsArray(aResult) Then Erase aResult Else aResult = Empty
    Else
        IsUDF = True
        Set rCaller = Application.Caller
        sFormula = rCaller.Formula
        
        'Dim tmp As String: tmp = "1 GIA TRI"
        'Dim tmp: tmp = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
        Dim tmp(10, 15) As Long
        aResult = tmp
    End If
End Function

3. Gõ =MyUDF() trên Sheet để test.

Có thể thử với kết quả là 1 giá trị, mảng 1 chiều và mảng 2 chiều. Mong được học hỏi thêm kinh nghiệm từ mọi người.
 
Thử cho vài đối số của hàm vào xem sao ... xong tính tiếp
VD: [A1] = Hàm(value1, value2, value3)
 
Upvote 0
Như này được tính không chủ thớt?

 
Upvote 0
Chắc là chủ thớt chưa bao giờ tham khảo hàm do HeSanbi viết:
Toàn bộ link dưới đây đều là mảng động.


Và nhiều nữa, không copy nổi
(Hôm nào chắc tôi phải viết 1 macro lấy toàn bộ bài viết của chính mình)
Bạn tham khảo để viết hàm sao chép hàm có ở Excel 365.
 
Upvote 0
Nó cứ loanh quanh đâu đó trên VBA thôi ... chưa cần thiết phải dùng tới API
nếu dùng tới API vào chắc còn hay hơn nữa ... mà Mạnh chưa biết xài API của Bill trong trường họp này
 
Upvote 0
Upvote 0
Nó cứ loanh quanh đâu đó trên VBA thôi ... chưa cần thiết phải dùng tới API
nếu dùng tới API vào chắc còn hay hơn nữa ... mà Mạnh chưa biết xài API của Bill trong trường họp này

Kỹ thuật lập trình không phải cứ API là làm được tất cả. Người ta phải tạo ra những thứ mà API chưa có thì mới là độc. Add-in A-Tools tạo ra hàm mảng cơ động từ cách đây hơn 10 năm, từ cái thời Excel 97 thì đương nhiên Bill chưa hề có ý tưởng về hàm mảng, mãi gần đây GoogleSheet và Excel 365 mới có đưa ra cách làm việc hàm mảng. Tuy nhiên các cách hiện nay cả trên Excel 365 và GoogleSheets đều chỉ mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt. Còn các hàm mảng viết trên VBA hiện nay đâu đó cũng chưa đạt được yêu cầu sử dụng đâu. Cứ cho vài công thức mảng trên cùng một sheet, chèn, xóa dòng cột xem sẽ thấy ngay. Đến thời điểm này mình vẫn nói, kỹ thuật tạo hàm trả về mảng để đưa vào thực tế là rất rất khó chứ không phải dễ.
 
Upvote 0
Kỹ thuật lập trình không phải cứ API là làm được tất cả. Người ta phải tạo ra những thứ mà API chưa có thì mới là độc. Add-in A-Tools tạo ra hàm mảng cơ động từ cách đây hơn 10 năm, từ cái thời Excel 97 thì đương nhiên Bill chưa hề có ý tưởng về hàm mảng, mãi gần đây GoogleSheet và Excel 365 mới có đưa ra cách làm việc hàm mảng. Tuy nhiên các cách hiện nay cả trên Excel 365 và GoogleSheets đều chỉ mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt. Còn các hàm mảng viết trên VBA hiện nay đâu đó cũng chưa đạt được yêu cầu sử dụng đâu. Cứ cho vài công thức mảng trên cùng một sheet, chèn, xóa dòng cột xem sẽ thấy ngay. Đến thời điểm này mình vẫn nói, kỹ thuật tạo hàm trả về mảng để đưa vào thực tế là rất rất khó chứ không phải dễ.
sau này mạnh mới biết cái Hàm tự tạo gõ 1 Cells trả về dữ liệu 1 bên value nó có từ Office 97 .. có điều ít ai biết mà vận dụng nó
Còn những cái khác mạnh ko có biết
 
Upvote 0
GoogleSheets đều chỉ mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt
Google Sheets chứ không phải "GoogleSheets" nhé anh.

Anh viết vậy em tò mò quá. Anh có thể lập 01 bảng đối chiếu các chỗ [ chớm nỏ, giản đơn, thô ] ở trên em tham khảo được không anh, vì em thấy có người ca ngợi Google Sheets hay lắm.
 
Upvote 0
Google Sheets chứ không phải "GoogleSheets" nhé anh.

Anh viết vậy em tò mò quá. Anh có thể lập 01 bảng đối chiếu các chỗ [ chớm nỏ, giản đơn, thô ] ở trên em tham khảo được không anh, vì em thấy có người ca ngợi Google Sheets hay lắm.
Thực ra Google Sheet mới là đồ chơi thêm của hãng Google, không phải trọng tâm của công ty họ, nên còn có những hạt sạn, hoặc chưa hoàn hảo (tất nhiên mọi so sánh đều khập khiễng)
 
Upvote 0
Thực ra Google Sheet mới là đồ chơi thêm của hãng Google, không phải trọng tâm của công ty họ, nên còn có những hạt sạn, hoặc chưa hoàn hảo (tất nhiên mọi so sánh đều khập khiễng)
Em cần cụ thể, chi tiết như nào ấy. Nói khơi khơi, đại khái thế em bị ăn mắng ngay.
 
Upvote 0
Google Sheets chứ không phải "GoogleSheets" nhé anh.

Anh viết vậy em tò mò quá. Anh có thể lập 01 bảng đối chiếu các chỗ [ chớm nỏ, giản đơn, thô ] ở trên em tham khảo được không anh, vì em thấy có người ca ngợi Google Sheets hay lắm.

Đơn giản thôi. Có ai dùng hàm Filter của Google Sheets hay Excel 365 mà không muốn nó từ chèn dòng chèn cột, khi điều kiện lọc thay đổi? Có thể cái yêu cầu này chỉ là chủ quan của một nhóm nhu cầu trên thế giới. Mọi người đều đang phải chấp nhận cái lỗi #N/A hoặc #Spill khi phía dưới hay bên phải vùng công thức bị thiếu không gian để điền dữ liệu của hàm. Tôi cũng không biết đến bao giờ thì họ làm cái điều đó hoặc có thể họ không quan tâm. Chớm nở tôi nói ý ở đây mới chỉ đơn giản là đổ ra cái mảng chứ chưa có các đặc tính hỗ trợ tối thiểu như vừa nói. Chớm nở cũng là mới mẻ thôi. Xét về kỹ thuật còn lắm thứ họ phải hoàn thiện, mà cỗ máy khổng lồ không cẩn thận chỉ vì một chi tiết mà làm lỗi cả hệ thống thì họ không dại dấn vào.
 
Upvote 0
Upvote 0
Kỹ thuật lập trình không phải cứ API là làm được tất cả. Người ta phải tạo ra những thứ mà API chưa có thì mới là độc. Add-in A-Tools tạo ra hàm mảng cơ động từ cách đây hơn 10 năm, từ cái thời Excel 97 thì đương nhiên Bill chưa hề có ý tưởng về hàm mảng, mãi gần đây GoogleSheet và Excel 365 mới có đưa ra cách làm việc hàm mảng. Tuy nhiên các cách hiện nay cả trên Excel 365 và GoogleSheets đều chỉ mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt. Còn các hàm mảng viết trên VBA hiện nay đâu đó cũng chưa đạt được yêu cầu sử dụng đâu. Cứ cho vài công thức mảng trên cùng một sheet, chèn, xóa dòng cột xem sẽ thấy ngay. Đến thời điểm này mình vẫn nói, kỹ thuật tạo hàm trả về mảng để đưa vào thực tế là rất rất khó chứ không phải dễ.
Excel ngoài hàm và VBA còn có M language và Dax language trên Power query và Power pivot, bạn hãy tìm hiểu cách xử lý dynamic array trên 2 ngôn ngữ đó nó không phải là mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt như bạn nói đâu, DAX language có 10 năm rồi
 
Upvote 0
Excel ngoài hàm và VBA còn có M language và Dax language trên Powery và Power pivot, bạn hãy tìm hiểu cách xử lý dynamic array trên 2 ngôn ngữ đó nó không phải là mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt như bạn nói đâu, DAX language có 10 năm rồi

Tôi đang nói về kỹ thuật tạo hàm trả về mảng động trên Worksheet mà. Bạn có hiểu có chế của loại hàm này trên worksheet không? Nếu hiểu thì bạn có thể lấy ví dụ mà các công cụ hay ngôn ngữ bạn nói để tạo ra nó, chay trên các phiên bản Excel thấp hơn Excel 365 nhé.
 
Upvote 0
Em cần cụ thể, chi tiết như nào ấy. Nói khơi khơi, đại khái thế em bị ăn mắng ngay.
Mắng là việc của bạn, tìm hiểu là việc của mỗi người, Ai quan tâm thì phải tìm hiểu sâu, đây không phải chủ đề đó , nên viết vậy thôi nhế, thông cảm
 
Lần chỉnh sửa cuối:
Upvote 0
Có ai dùng hàm Filter của Google Sheets hay Excel 365 mà không muốn nó từ chèn dòng chèn cột, khi điều kiện lọc thay đổi?
Chắc chữ "từ" ở trên là chữ "tự" (tự động) phải không anh?
Có thể cái yêu cầu này chỉ là chủ quan của một nhóm nhu cầu trên thế giới.
Anh có thể dẫn chứng một số nước điển hình có nhu cầu như trên được không anh?
 
Upvote 0
Chắc chữ "từ" ở trên là chữ "tự" (tự động) phải không anh?

Anh có thể dẫn chứng một số nước điển hình có nhu cầu như trên được không anh?

Từ -> Tự động nhé. Chúng ta đâu cần thiết để phải dẫn chứng những nội dung lan man ở topic này đâu bạn. Nên tôi chỉ nói là "có thể", "trên thế giới" khi không có tính khẳng định. Ai mà dám nói hay khẳng định có hay không trên cả thế giới chứ :D
 
Upvote 0
Tôi đang nói về kỹ thuật tạo hàm trả về mảng động trên Worksheet mà. Bạn có hiểu có chế của loại hàm này trên worksheet không? Nếu hiểu thì bạn có thể lấy ví dụ mà các công cụ hay ngôn ngữ bạn nói để tạo ra nó, chay trên các phiên bản Excel thấp hơn Excel 365 nhé.
Bạn nói excel 365, exel 365 có sẵn 2 công cụ đó, phiên bản thấp hơn như 2013 vẫn có 2 công cụ đó, power pivot , power query cũng chạy trả kết qủa ở worksheet
Bài #12 tôi sử dụng power query và Dax trong Model, hàm Dax trong model sẽ bị biến đổi theo điều kiện chọn lựa, VBA hay công thức bên excel không làm được điều này
 
Upvote 0
họ xử lý co giãn không khó
Họ đặc biệt quan tâm, quan tâm cực kỳ sâu sắc nhé.
Google Sheets có đặc điểm riêng về số lượng cells trên một file, nó không phải là 1 hằng số.
Và mọi bài toán đều xuất phát từ lý thuyết cấu trúc bảng dữ liệu chuẩn. Không chơi trò đẩy cái đã có đi nơi khác để chiếm chỗ, những cái bị đẩy đi sẽ va lung tung.
Nên đồng ý cái từ "chủ quan" thôi.
 
Upvote 0
cái đó + cái bài số 1 + ...
Có thể có nhiều cách viết khác nhau Or xài nhiều Tools khác nhau của Bill ===> và cái đích hướng tới là cái gì mà cho ta kết quả là ok rồi
Ý bác dùng tools chắc là nhờ Solver



@Nguyễn Duy Tuân
Cái vụ co giãn dòng là viết cho vui thôi anh.
Một lập trình viên có kinh nghiệm không bao giờ làm như vậy.

Có những công thức người viết sử dụng INDIRECT, ... tức là không tham chiếu trực tiếp vùng đối tượng, thì việc co giản vùng dữ liệu dưới hoặc phải sẽ làm hỏng ứng dụng của người ta.

Excel cho mình có thể tạo nhiều Trang, Không ai dại đi để dữ liệu dưới hoặc phải hoặc trái hoặc trên vùng dữ liệu co giãn, mà không cho nó vào trang khác.

Người làm như vậy chắc là có tài xử lý dữ liệu động.

Theo em nếu bỏ chất xám ra làm điều như vậy thì nên để chất xám làm chuyện khác lại có ích hơn nhiều.

Cái vụ co giãn em sử dụng API làm 1 phát 1 nhờ các phương thức như:
UseRanged, CurrentRegion kết hợp Bắt sự kiện Worksheet_Change

Sau khi thử qua, em thấy thật phí sức. Để thời gian nguyên cứu Python, JavaScript hoặc Big Data còn có tương lai gấp bội.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn nói excel 365, exel 365 có sẵn 2 công cụ đó, phiên bản thấp hơn như 2013 vẫn có 2 công cụ đó, power pivot , power query cũng chạy trả kết qủa ở worksheet
Bài #12 tôi sử dụng power query và Dax trong Model, hàm Dax trong model sẽ bị biến đổi theo điều kiện chọn lựa, VBA hay công thức bên excel không làm được điều này

Tôi đã xem #12 bạn nói, đó là Tool đổ về vùng dữ liệu trên worksheet chứ không phải hàm trên worksheet. Ngôn ngữ hay cách viết công thức là trong bản thân tool, kết quả là data chứ không phải formula có tham gia của hàm.
 
Upvote 0
Ý bác dùng tools chắc là nhờ Solver
Ko cần tới cái đó ... mà mạnh cũng chưa biết xài nó như thế nào luôn :D
 
Upvote 0
Họ đặc biệt quan tâm, quan tâm cực kỳ sâu sắc nhé.
Google Sheets có đặc điểm riêng về số lượng cells trên một file, nó không phải là 1 hằng số.
Và mọi bài toán đều xuất phát từ lý thuyết cấu trúc bảng dữ liệu chuẩn. Không chơi trò đẩy cái đã có đi nơi khác để chiếm chỗ, những cái bị đẩy đi sẽ va lung tung.
Nên đồng ý cái từ "chủ quan" thôi.
Cũng có thể họ nghĩ như vậy
 
Upvote 0
Gửi @HeSanbi chỉ cần 3 cái sau là xong he ... còn cái khác mạnh ko có biết
1/ Application.Caller
2/ Evaluate
3/ Application.Index
 
Upvote 0
Ý bác dùng tools chắc là nhờ Solver



@Nguyễn Duy Tuân
Cái vụ co giãn dòng là viết cho vui thôi anh.
Một lập trình viên có kinh nghiệm không bao giờ làm như vậy.

Có những công thức người viết sử dụng INDIRECT, ... tức là không tham chiếu trực tiếp vùng đối tượng, thì việc co giản vùng dữ liệu dưới hoặc phải sẽ làm hỏng ứng dụng của người ta.

Excel cho mình có thể tạo nhiều Trang, Không ai dại đi để dữ liệu dưới hoặc phải hoặc trái hoặc trên vùng dữ liệu co giãn, mà không cho nó vào trang khác.

Người làm như vậy chắc là có tài xử lý dữ liệu động.

Theo em nếu bỏ chất xám ra làm điều như vậy thì nên để chất xám làm chuyện khác lại có ích hơn nhiều.

Cái vụ co giãn em sử dụng API làm 1 phát 1 nhờ các phương thức như:
UseRanged, CurrentRegion kết hợp Bắt sự kiện Worksheet_Change

Sau khi thử qua, em thấy thật phí sức. Để thời gian nguyên cứu Python, JavaScript hoặc Big Data còn có tương lại gấp bội.

Chính vì thế mình mới nói là nó không phải dễ khi xét cả những đặc tính hỗ trợ. Vì chơi với Excel nên mọi người cũng muốn khai thác cho thỏa đam mê và hiểu biết thôi, bao năm nay chỉ hàm và công thức thuần túy mọi người vẫn yêu Excel. Những bài toán cụ thể mà muốn chạy độc lập thì người ta dùng các công cụ hay ngôn ngữ lập trình khác tạo ra thì khỏe quá rồi.
 
Upvote 0
Tôi đã xem #12 bạn nói, đó là Tool đổ về vùng dữ liệu trên worksheet chứ không phải hàm trên worksheet. Ngôn ngữ hay cách viết công thức là trong bản thân tool, kết quả là data chứ không phải formula có tham gia của hàm.
1603510319760.png
Vâng , bạn nói về mảng động thì tôi vẫn viết hàm để tạo mạng động đó thôi, tôi chỉ dùng Filter 1 lần nhưng khi đưa vào hoàn cảnh và điều kiện nó sẽ tự động filter theo nhiều chiều khác nữa, công thức đó tôi cũng kéo ra worksheet y như hàm excel
Bạn nói mới chớm nở ,đơn giản thô, là chỉ bao gồm VBA và hàm của excel??? Các công cụ trên Microsoft viết hỗ trợ cho excel có từ lâu nên không tính ???
Có lẽ tôi hiểu sai bạn, nên xin phép dừng ở đây
 
Upvote 0
Gửi @HeSanbi chỉ cần 3 cái sau là xong he ... còn cái khác mạnh ko có biết
1/ Application.Caller
2/ Evaluate
3/ Application.Index
Hết hồn
Bác biết Evaluate cứ gọi nó là nó gọi lại một thủ tục hai lần chưa.
Bác tìm hiểu thêm đi rồi sẽ biết vì sao Microsoft làm như vậy.

Và Evaluate không thể tác động lên Đối tượng tĩnh.
Chẳng hạn như tô màu nền, chữ, ...., hoặc xóa vùng.
 
Upvote 0
Hết hồn
Bác biết Evaluate cứ gọi nó là nó gọi lại một thủ tục hai lần chưa.
Bác tìm hiểu thêm đi rồi sẽ biết vì sao Microsoft làm như vậy.

Và Evaluate không thể tác động lên Đối tượng tĩnh.
Chẳng hạn như tô màu nền, chữ, ...., hoặc xóa vùng.
Có thể Mạnh chưa hiểu hết nhưng Mạnh đang xài 3 cái đó... thật đấy có điều làm biếng úp code xong họ lại cho vào dll xong úp cho xem phim nhột lắm .... sự thật là thế

Code két quan trọng nhất là ý tưởng và sự khởi đầu ... có thể sau này ai đó viết lại hay gấp 10 lần nhưng đó cũng chỉ là thứ lông vịt ... không phải là người khai phá ra nó

Vì lý do đó nên Mạnh Ko úp code chứ ko hẹp hòi chi mấy thứ đó -0-0-0-
 
Lần chỉnh sửa cuối:
Upvote 0
Có những công thức người viết sử dụng INDIRECT, ... tức là không tham chiếu trực tiếp vùng đối tượng, thì việc co giản vùng dữ liệu dưới hoặc phải sẽ làm hỏng ứng dụng của người ta.
Excel cho mình có thể tạo nhiều Trang, Không ai dại đi để dữ liệu dưới hoặc phải hoặc trái hoặc trên vùng dữ liệu co giãn, mà không cho nó vào trang khác.
Theo như tôi được xem demo ATool của Tuân về kết quả động (co giãn tức là động đậy rồi) và tự nghiên cứu hàm mảng của Excel 365 như Filter, SortBy, ... thì có sự giống và khác biệt:
- Cả 2 đều có thể co giãn kích thước trên bảng tính
- Khi giãn dòng hoặc cột, hàm mảng của 365 nếu đụng dữ liệu khác bên dưới hoặc bên phải sẽ bị lỗi Spill, ATool thì không. Đây là niềm tự hào của anh Tuân và đó là chính đáng.

Quay lại ý chính:
Nói về cấu trúc dữ liệu thì các table dữ liệu nên để ở những sheet khác nhau. Trường hợp có ba bốn cái danh mục mà mỗi danh mục có 3 cột quất cho 3, 4 sheet thì cũng phí, nên có thể để trên cùng 1 sheet nhưng cần trải ra theo hàng ngang và cách nhau ít nhất 1 cột trống. Không chơi kiểu trải xuống theo hàng dọc.
Ý chính của chính:
Đã là dữ liệu gốc thì không hề có công thức, chứ đừng nói công thức mảng. Công thức mảng (dù của 365 hay của ATool) chỉ nên xài trên báo cáo, trên mẫu trang in. Báo cáo phức tạp sẽ có thể có nhiều những SubReport là những bảng kết quả khác nhau, bổ sung cho nhau, hoặc mô tả chi tiết cho nhau. Do nhu cầu in báo cáo sẽ có tình trạng các bảng kết qủa trên cần trải dọc xuống chứ không theo hàng ngang.
Về điều này thì đúng là sẽ cần bỏ qua lỗi Spill của 365, và khi tôi xem demo thì anh Tuân đã làm được.
 
Upvote 0
Lưu lại 1 tấm hình sau này nhắc lại cho Vui he -0-0-0- -0-0-0- -0-0-0-

1603524819663.png
 
Upvote 0
Bác xem file giùm em xem tính tiếp được không?
1/ Viết lại thành 1 cái Hàm chung nhất có thể gán bất cứ cái Array nào đã tính toán xong vào đó xong gán lên Sheet là Xong
2/ bỏ hết code trong ThisWorkbook đi ... thừa ko cần thiết

VD: cái Hàm Sau
[A1] =TaoArr(10,10) thì nó ra 10 dòng và 10 cột
Mã:
Function TaoArr(dong As Long, cot As Long) As Variant
    Rem Cu Phap: =TaoArr(10,10) Tao ra 10 dong x 10 cot
    Dim i As Long, J As Long
    ReDim Arr(1 To dong, 1 To cot)
    For i = 1 To dong
        For J = 1 To cot
            Arr(i, J) = i & "_" & J
        Next
    Next
    TaoArr = ResizeArray(Arr)
End Function
Khó nhất cái Hàm ResizeArray này .... chỉ cần viết 1 cái đó thôi còn bỏ hết đi cho sạch
 
Upvote 0
thì ngoài cái ý kiếm của bài 30 đấy ... sau này mò ra mới thấy Mạnh nói đúng thế thôi
Cái bài 30 đấy, Tôi hết hồn là vì, chỉ có Evaluate thôi mà bác làm thế giới tưởng cái gì ghê gớm, mà bác giấu bấy lâu.

Còn Evaluate chạy hai lần khi gọi thì tôi đang đố bác vì sao lại như vậy.
Nó còn chức năng ghê gớm trong đấy.

Nếu bác không tin thì các hàm viết vào ô Excel đều chạy hai lần. Bác thử tìm hiểu xem có gì "hot"!

Tìm hiểu xong rồi ứng dụng luôn cho những gì bác chưa biết.
 
Upvote 0
Cái bài 30 đấy, Tôi hết hồn là vì, chỉ có Evaluate thôi mà bác làm thế giới tưởng cái gì ghê gớm, mà bác giấu bấy lâu.

Còn Evaluate chạy hai lần khi gọi thì tôi đang đố bác vì sao lại như vậy.
Nó còn chức năng ghê gớm trong đấy.

Nếu bác không tin thì các hàm viết vào ô Excel đều chạy hai lần. Bác thử tìm hiểu xem có gì "hot"!

Tìm hiểu xong rồi ứng dụng luôn cho những gì bác chưa biết.
có thể là vầy
cái thứ đó ứng dụng nhiều thứ mà mạnh làm theo hướng này còn bạn làm theo hướng kia
và ta chưa hiểu nhau cái gì đó trong cách trình bày và abcdxyz thế thôi .... nên ====> có sự lệch pha + suy nghĩ thế thôi

Thôi ko bàn lại cái nữa he ... vậy thôi và để đấy nó mới vui
 
Upvote 0
Add-in A-Tools tạo ra hàm mảng cơ động từ cách đây hơn 10 năm, từ cái thời Excel 97 thì đương nhiên Bill chưa hề có ý tưởng về hàm mảng, mãi gần đây GoogleSheet và Excel 365 mới có đưa ra cách làm việc hàm mảng. Tuy nhiên các cách hiện nay cả trên Excel 365 và GoogleSheets đều chỉ mới chớm nở, làm giản đơn, thô chứ chưa phải linh hoạt.
Thực tế là 1 triệu người thì có 2 triệu nhu cầu, mỗi người có những yêu cầu khác nhau. Có những cái mình tưởng là quan trọng thì người khác không cho là vậy và ngược lại. Tại sao thế giới không có Add-in A-Tools mà người ta phát triển ầm ầm? Tôi không nghĩ là người Ba Lan hàng ngày khóc ròng vì khổ quá do không có Add-in A-Tools. Mà Ba Lan chưa phải là nhất.
Không thể làm mọi cái để thỏa mãn nhu cầu của tất cả triệu, tỷ người được. Và có thể ở giai đoạn nào đó thì người ta bỏ qua vấn đề A, mãi tới những năm sau sau họ mới xét vấn đề A. Đó là chuyện thường. Mình cho vấn đề A là nhất nhưng ở một giai đoạn nào đó họ không cho là thế. Và còn điều nữa. Nếu người ta làm từ A tới Z, từ Z tới A và nhiều hơn nữa thì làm sao còn đường sống cho những công ty như công ty của bạn? Tôi thấy riêng ở Ba Lan người ta không có sản phẩm của bạn mà người ta vẫn làm việc được, chả ai kêu khổ. Không phải họ chịu được khổ. Rất có thể họ có những thứ khác không kém gì Add-in A-Tools?

Mà chả riêng gì Ba Lan. Tôi không nghĩ là mọi công ty ở Việt Nam đều dùng Add-in A-Tools. Nếu đúng thế thì tại sao họ không kêu ca nhỉ? Tại sao họ khổ thế mà vẫn cam chịu nhỉ?
 
Upvote 0
- Khi giãn dòng hoặc cột, hàm mảng của 365 nếu đụng dữ liệu khác bên dưới hoặc bên phải sẽ bị lỗi Spill, ATool thì không. Đây là niềm tự hào của anh Tuân và đó là chính đáng.
Tùy theo nhu cầu, tiêu chí của mỗi người thôi anh. Có thể 365 nếu đụng dữ liệu khác bên dưới hoặc bên phải sẽ bị lỗi Spill vì nó KHÔNG CHẤP NHẬN cách hành xử đó. Nếu đẩy dữ liệu đang có xuống dưới thì sẽ làm hỏng cấu trúc, tương quan giữa các dữ liệu. Là tôi tôi cũng không chấp nhận cách hành xử như thế. Đừng thấy người ta không làm như mình mà nghĩ là người ta không nghĩ được dài như mình, không có năng lực xử lý những cái khó như mình. Rất có thể nguyên nhân cực kỳ đơn giản: người ta có "phương châm" khác mình?
 
Lần chỉnh sửa cuối:
Upvote 0
Tùy theo nhu cầu, tiêu chí của mỗi người thôi anh. Có thể 365 nếu đụng dữ liệu khác bên dưới hoặc bên phải sẽ bị lỗi Spill vì nó KHÔNG CHẤP NHẬN cách hành xử đó. Nếu đẩy dữ liệu đang có xưuống dưới thì sẽ làm hỏng cấu trúc, tương quan giữa các dữ liệu. Là tôi tôi cũng không chấp nhận cách hành xử như thế. Đừng thấy người ta không làm như mình mà nghĩ là người ta không nghĩ được dài như mình, không có năng lực xử lý những cái khó như mình. Rất có thể nguyên nhân cực kỳ đơn giản: người ta có "phương châm" khác mình?
Oh đọc bài này em mới bất chợt nhận ra
VD : cái vùng dữ liệu đó đang làm tham số Or đối số của hàm của 1 sheet khác mà nó link tới ... khi co và dãn nó đẩy xuống thì điều gì xẩy ra ???????????!!!!!!!!!!
 
Upvote 0
Oh đọc bài này em mới bất chợt nhận ra
VD : cái vùng dữ liệu đó đang làm tham số Or đối số của hàm của 1 sheet khác mà nó link tới ... khi co và dãn nó đẩy xuống thì điều gì xẩy ra ???????????!!!!!!!!!!
Chỉ ảnh hưởng các hàm dạng Indirect hay kiểu lấy địa chỉ làm tham số

Tuy thế đúng là người dùng hay thích làm tắt, đi lên lề, chèn ngang chèn dọc, cuối cùng tan ở đâu không biết- Nếu hàm mà ta cũng làm thế thì khác chi người sử dụng dạng vậy - thiếu chỉnh chu, đặc biệt là chèn ô thì rất dễ phá cấu trúc chung của Sheet, đến lúc rối , Hàm tự động làm việc này thì còn nguy hiểm hơn nhiều, vì người dùng sẽ không biết đâu mà lần
 
Upvote 0
Chỉ ảnh hưởng các hàm dạng Indirect hay kiểu lấy địa chỉ làm tham số

Tuy thế đúng là người dùng hay thích làm tắt, đi lên lề, chèn ngang chèn dọc, cuối cùng tan ở đâu không biết- Nếu hàm mà ta cũng làm thế thì khác chi người sử dụng dạng vậy - thiếu chỉnh chu, đặc biệt là chèn ô thì rất dễ phá cấu trúc chung của Sheet, đến lúc rối , Hàm tự động làm việc này thì còn nguy hiểm hơn nhiều, vì người dùng sẽ không biết đâu mà lần
Bài số 38 link sau có lẻ câu phán đó đúng đấy ... không sai tí nào -0-0-0-

1603541598585.png
 
Upvote 0
Tùy theo nhu cầu, tiêu chí của mỗi người thôi anh. Có thể 365 nếu đụng dữ liệu khác bên dưới hoặc bên phải sẽ bị lỗi Spill vì nó KHÔNG CHẤP NHẬN cách hành xử đó. Nếu đẩy dữ liệu đang có xuống dưới thì sẽ làm hỏng cấu trúc, tương quan giữa các dữ liệu. Là tôi tôi cũng không chấp nhận cách hành xử như thế.
Tôi cũng đồng ý vậy, và trong bài tôi cũng viết rằng (chỉ) cần khi sử dụng trong Report có nhiều sub report và muốn giới hạn trang in, không sử dụng trong các sheet dữ liệu gốc. Thêm 1 điều kiện là: "đẩy xuống" mang nghĩa là chèn nguyên dòng chứ không chèn 1 vài cells, để không làm mất tham số công thức bên dưới. (Indirect vẫn bị mất trong 1 số trường hợp)
 
Upvote 0
...Tôi không nghĩ là mọi công ty ở Việt Nam đều dùng Add-in A-Tools. Nếu đúng thế thì tại sao họ không kêu ca nhỉ? Tại sao họ khổ thế mà vẫn cam chịu nhỉ?
Em mà được nhiều người dùng Excel biết đến A-Tools là em đã giàu lắm rồi đấy. Excel là môi trường phục vụ đa dạng nhu cầu, A-Tools là phục vụ cho một nhóm nhu cầu báo cáo và chia sẻ mạng vậy thôi anh. Nói vui chút về chuyện không có cái A ta vẫn sông ổn là trước đây công việc đâu có máy tính thì người ta vẫn làm việc được đó thôi.

Với anh Mỹ thì anh có cách nhìn khác, cái anh nói em có thể tự hào về A-Tools là em đã làm cố gắng hết sức để đáp ứng một nhóm nhu cầu và khá triệt để chứ không đơn giản chỉ như game. Em chia sẻ lại một phần nội dung mà em chinh phục một nhóm nhu cầu làm báo cáo để ai đó biết vì sao có người lại cần động đậy. Video tại đây.
 
Lần chỉnh sửa cuối:
Upvote 0
trà trong đây toàn nhân tài không.
So sánh A-Tool với cả Excel365 khác nào nói "Đèn khoe đèn tỏ hơn Trăng"
:bicycle:
theo tớ nghĩ ai làm ra sản phẩm điều có quyền Pro sản phẩm của mình cũng là điều dễ hiểu (tớ mà làm ra được thì tới cũng nổ banh xác luôn đó chứ). Cũng giống như vụ Bphone thôi.
Các bác bớt ném gạch đá đi. Tập trung vào chỉ Code cho chủ thớt hay hơn
 
Upvote 0
So sánh A-Tool với cả Excel365 khác nào nói "Đèn khoe đèn tỏ hơn Trăng"

Người hiểu biết ai lại đi so sánh một tính năng của một add-in với cả một phần mềm lớn chứ. Nếu muốn so sánh thì cũng chỉ giới hạn đối tượng cụ thể chứ.
 
Upvote 0
trà trong đây toàn nhân tài không.

:bicycle:
theo tớ nghĩ ai làm ra sản phẩm điều có quyền Pro sản phẩm của mình cũng là điều dễ hiểu (tớ mà làm ra được thì tới cũng nổ banh xác luôn đó chứ). Cũng giống như vụ Bphone thôi.
Các bác bớt ném gạch đá đi. Tập trung vào chỉ Code cho chủ thớt hay hơn

Bạn nói "các bác" mà bạn lại trích dẫn mỗi bải của tôi? Tôi ném gạch? Nếu chỉ so sánh một khía cạnh nào đó thôi tôi chẳng nói làm gì.. đằng này tự nhiên lôi Bill vào đây để so sánh.
Mỗi người khi tạo ra sản phẩm của mình đều hướng đến một mục đích riêng theo ý muốn của họ, chứ không phải là họ không đủ trình độ để làm tại thời điểm đó hay là một thời điểm nào cả.
Tóm lại tôi chỉ nói thế thôi,để cùng nhìn vào nhu cầu và vấn đề thực tế.,còn nói nữa lại cãi nhau, nên xin phép dừng ở đây.
 
Upvote 0
Bạn nói "các bác" mà bạn lại trích dẫn mỗi bải của tôi? Tôi ném gạch? Nếu chỉ so sánh một khía cạnh nào đó thôi tôi chẳng nói làm gì.. đằng này tự nhiên lôi Bill vào đây để so sánh.
Mỗi người khi tạo ra sản phẩm của mình đều hướng đến một mục đích riêng theo ý muốn của họ, chứ không phải là họ không đủ trình độ để làm tại thời điểm đó hay là một thời điểm nào cả.
Tóm lại tôi chỉ nói thế thôi,để cùng nhìn vào nhu cầu và vấn đề thực tế.,còn nói nữa lại cãi nhau, nên xin phép dừng ở đây.
Bài của cậu là câu trên, không thấy tớ chấm xuống hàng hả.
Tớ cũng dừng tại đây nhà tớ 2 tầng rồi không muốn lên lầu nữa đâu
 
Upvote 0
Tổng kết lại trên GPE này có mấy cái khá độc

1/ cái *.OCX ..... CustomTaskPane có trước đây 10 năm ... sau 10 năm Mạnh cũng đã làm ok
2/ cái lấy dữ liệu qua Internet cũng thế ... mà Mạnh còn làm lấy được rất nhiều Files trên 1 lần kết nối tới Server đấy
3/ cái hàm kiểu Office 365 thì cũng thế code loanh quanh trên VBA thui ( cái đó như ăn kẹo mút vậy ... mò đi )
4/ còn cái co và dãn Mạnh chỉ xem nó như bài 46 mà thôi ... cái khoanh màu đỏ ý
....
...
đi quá xa ròi đấy ... nên quay lại với cái tiêu đề của thớt này sẻ tốt cho ai đó hay bạn đó -0-0-0-

Tranh cải nếu mang lại trí tuệ thì nên ... còn làm mất lòng thì nên thui ... ko đi tới đâu cả

bất cứ một kết quả nào thì cũng điều có nguyên nhân sinh ra nó ... và tại sao lại thế ???!!!!
Nếu hiểu được câu nói trên thì tự biết điều chỉnh lại hành vi của mình cho phù hợp ...
đừng có để cái tôi của mình lên trên tất cả thì cũng chỉ dừng lại khả năng trí tuệ có thế mà thôi
 
Lần chỉnh sửa cuối:
Upvote 0
Cậu này đúng là mạnh. Mạnh hơn cả Nga, Mỹ cộng lại :new_russian:-0-/.. Trên đây tớ thấy dân nghề code két cũng nhiều, bớt bùng lại đi-0-/.
 
Upvote 0
Cậu cũng tài thật tớ sài đồ mẽo mà cũng dò ra được. Ok có dịp ghé bình dương làm vài chai
xem thường mạnh ròi đấy ... mạnh ko cần dò mà nhìn là biết ngay à .... ngày xưa rất xưa mạnh đi theo mấy tay A21 và B40 nó chỉ cho đấy
còn A21 và B40 là gì thì dò đi he ... thì biết mạnh là ai
 
Upvote 0
Em mà được nhiều người dùng Excel biết đến A-Tools là em đã giàu lắm rồi đấy. Excel là môi trường phục vụ đa dạng nhu cầu, A-Tools là phục vụ cho một nhóm nhu cầu báo cáo và chia sẻ mạng vậy thôi anh. Nói vui chút về chuyện không có cái A ta vẫn sông ổn là trước đây công việc đâu có máy tính thì người ta vẫn làm việc được đó thôi.

Với anh Mỹ thì anh có cách nhìn khác, cái anh nói em có thể tự hào về A-Tools là em đã làm cố gắng hết sức để đáp ứng một nhóm nhu cầu và khá triệt để chứ không đơn giản chỉ như game. Em chia sẻ lại một phần nội dung mà em chinh phục một nhóm nhu cầu làm báo cáo để ai đó biết vì sao có người lại cần động đậy. Video tại đây.
Tôi không nói là cái bạn làm là tầm thường. Tôi chỉ cho rằng có nhiều cái người ta không làm không hẳn là người ta nghĩ ngắn, không phải người ta không biết làm, hay cố gắng làm cũng không bằng mình. Vì thế đừng nên nói những lời như tôi đã trích.
 
Upvote 0
xem thường mạnh ròi đấy ... mạnh ko cần dò mà nhìn là biết ngay à .... ngày xưa rất xưa mạnh đi theo mấy tay A21 và B40 nó chỉ cho đấy
còn A21 và B40 là gì thì dò đi he ... thì biết mạnh là ai
Thấy B40 thì chắc bạn là người Mặt Trận Giải Phóng Miền Nam. :D
Thêm cái Beretta 21A Bobcat thì chắc chuyên làm mật thám.
Ủa mà không phải, khoảng năm 70-71 thì Mẽo nó dùng thiết giáp cao cấp hơn, B40 hạ không nổi. Bộ đội chuyển qua B41. B40 chỉ dùng để bắn tàu nhỏ lượn trên sông (thiệt ra chỉ dùng để doạ thôi chứ cũng chả hiệu quả, 10 quả trật hết 8-9).
Riêng 21A Bobcat thì khoảng giữa thập niên 80 mới có. Lúc ấy Mặt Trận đã hết rồi.
 
Upvote 0
xem thường mạnh ròi đấy ... mạnh ko cần dò mà nhìn là biết ngay à .... ngày xưa rất xưa mạnh đi theo mấy tay A21 và B40 nó chỉ cho đấy
còn A21 và B40 là gì thì dò đi he ... thì biết mạnh là ai
Bạn có thể chia sẻ cái mà mấy tay A21 và B40 đã chỉ cho bạn được không? Nếu không thể chia sẻ cho nhiều người thì bạn có thể chia sẻ riêng cho tôi được không?
 
Upvote 0
Tôi không nói là cái bạn làm là tầm thường. Tôi chỉ cho rằng có nhiều cái người ta không làm không hẳn là người ta nghĩ ngắn, không phải người ta không biết làm, hay cố gắng làm cũng không bằng mình. Vì thế đừng nên nói những lời như tôi đã trích.

Có gì sai lắm hay nghiêm trọng bác nhỉ? Đoạn bác trích câu của em có gì mà nên hay không nên đâu? Vài câu bác nói cũng chỉ là bác đang tự suy luận mà em hay ai đó cho là chủ quan, có thể đúng hoặc sai vậy bác nên hay không nên nói thế? Ai cũng có thể đoán rằng một hãng công nghệ khổng lồ thì cái gì chả làm được? Không làm được thì đi mua. Nhưng có những ý tưởng lại là đi sau là bình thường. Không nhẽ cứ làm theo cái người ta làm trước rồi tự nhủ chỉ là trước đây ta không quan tâm, ta không coi trọng cái ý tưởng đó.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn có thể chia sẻ cái mà mấy tay A21 và B40 đã chỉ cho bạn được không? Nếu không thể chia sẻ cho nhiều người thì bạn có thể chia sẻ riêng cho tôi được không?
có thể ta dừng ở đây được không anh vì cái đó liên quan tới 20 năm trước Em làm việc ở Hà Nội đó anh mà
 
Upvote 0
Upvote 0
Đã sử dụng được cái số 1 và 2, còn cái số 3 chắc là để tính toán điền kết quả lên sheet cho chuẩn 365.
Ngoài bộ hàm của Anh Tuân làm trên DelPhi ra thì như bài 46 Anh Mạnh có nói cái này mình có làm cho vui thôi. Mình làm sao qua được mấy cái hàm cảu Anh Bil đâu
 
Upvote 0
Ngoài bộ hàm của Anh Tuân làm trên DelPhi ra thì như bài 46 Anh Mạnh có nói cái này mình có làm cho vui thôi. Mình làm sao qua được mấy cái hàm cảu Anh Bil đâu
hình như khoản máy năm trước có 1 anh dấu tên cho mình cái hàm co giản cũng dễ mà không Pro nên không dám Share
 
Upvote 0
Có gì sai lắm hay nghiêm trọng bác nhỉ? Đoạn bác trích câu của em có gì mà nên hay không nên đâu? Vài câu bác nói cũng chỉ là bác đang tự suy luận mà em hay ai đó cho là chủ quan, có thể đúng hoặc sai vậy bác nên hay không nên nói thế? Ai cũng có thể đoán rằng một hãng công nghệ khổng lồ thì cái gì chả làm được? Không làm được thì đi mua. Nhưng có những ý tưởng lại là đi sau là bình thường. Không nhẽ cứ làm theo cái người ta làm trước rồi tự nhủ chỉ là trước đây ta không quan tâm, ta không coi trọng cái ý tưởng đó.
Tôi không chỉ nói về 2 ông lớn công nghệ. Tôi nói về toàn thế giới trừ công ty của bạn. Không có sản phẩm của bạn người ta vẫn phát triển tốt. Nhưng bạn nói cũng có lý. Rất có thể toàn thế giới kia không nghĩ ra được cái mà bạn đã nghĩ ra. Nhưng có điều rõ ràng là ngoài 2 ông lớn đã kể thì có rất rất rất nhiều công ty tầm cỡ thế giới, được phần lớn (không phải tất cả) biết tới. Còn công ty của bạn nổi tiếng đến cỡ nào thì tự bạn hiểu.

Tôi dừng tại đây.
 
Upvote 0
Ngoài bộ hàm của Anh Tuân làm trên DelPhi ra thì như bài 46 Anh Mạnh có nói cái này mình có làm cho vui thôi. Mình làm sao qua được mấy cái hàm cảu Anh Bil đâu
Mình không có ý định qua mặt đâu. Lúc đầu chỉ là tính bắt chước theo mấy cái hàm của anh Bill thôi, chỉ làm phần nổi thôi, còn phần chìm thì chắc không đủ sức.
 
Upvote 0
Mình không có ý định qua mặt đâu. Lúc đầu chỉ là tính bắt chước theo mấy cái hàm của anh Bill thôi, chỉ làm phần nổi thôi, còn phần chìm thì chắc không đủ sức.
Cái này năm ngoái trên diễn đàn nhà mình cũng bàn rôm rả cả một thời gian rồi mà
 
Upvote 0
Cái này năm ngoái trên diễn đàn nhà mình cũng bàn rôm rả cả một thời gian rồi mà
Mình mới tham gia GPE nên không biết. Chắc cái này đang hot nên mỗi năm đều có người nhắc lại, hoặc là ai đang học VBA đến thời điểm nào đó đều nghĩ đến vấn đề này hay sao đó.
 
Upvote 0
Tôi không chỉ nói về 2 ông lớn công nghệ. Tôi nói về toàn thế giới trừ công ty của bạn. Không có sản phẩm của bạn người ta vẫn phát triển tốt. Nhưng bạn nói cũng có lý. Rất có thể toàn thế giới kia không nghĩ ra được cái mà bạn đã nghĩ ra. Nhưng có điều rõ ràng là ngoài 2 ông lớn đã kể thì có rất rất rất nhiều công ty tầm cỡ thế giới, được phần lớn (không phải tất cả) biết tới. Còn công ty của bạn nổi tiếng đến cỡ nào thì tự bạn hiểu.

Tôi dừng tại đây.
Đúng là cái ta nghĩ mà tây chưa nghĩ ra (có thể)
Nhưng có 1 điều là thường đa số Họ nghĩ cái to và cái hệ thống hơn, còn ta - dân ta thường nghĩ cái tiểu tiết và phát triển cái đó ... lại dựa trên cái hệ thống kia,... và trong khi đó họ lại tiếp tục ... phát triển cái hệ thống hơn khác khắc phục các nhược điểm của cái hệ thống cũ.
Nên trên hết là cái nhìn, góc nhìn khác nhau khó so sánh
 
Upvote 0
Đúng là cái ta nghĩ mà tây chưa nghĩ ra (có thể)
Nhưng có 1 điều là thường đa số Họ nghĩ cái to và cái hệ thống hơn, còn ta - dân ta thường nghĩ cái tiểu tiết và phát triển cái đó ... lại dựa trên cái hệ thống kia,... và trong khi đó họ lại tiếp tục ... phát triển cái hệ thống hơn khác khắc phục các nhược điểm của cái hệ thống cũ.
Nên trên hết là cái nhìn, góc nhìn khác nhau khó so sánh
Xuất sắc ... chính xác ... 9,5 điểm lần thứ 2 cho Bạn -0-0-0-
 
Lần chỉnh sửa cuối:
Upvote 0
Nên trên hết là cái nhìn, góc nhìn khác nhau khó so sánh
Khó so sánh thì đúng rồi vì nhiều khi quan điểm khác nhau.
Việc đẩy dữ liệu đang có xuống dưới có khó không? Không khó, và trên GPE chốc chốc lại có yêu cầu như thế. Không khó, mà chỉ là không được phép. Tức bạn tự làm được nhưng anh Bill chỉ cho phép bạn làm trong SUB. Khi bạn làm trong FUNCTION thì anh Bill tuýt còi. Như vậy việc "đẩy dữ liệu xuống dưới" không khó, chỉ là anh Bill không cho phép làm trong FUNCTION. Chắc chắn việc làm trên đã "xung đột" với cái gì đấy trong việc quản lý, xử lý dữ liệu. Là người tạo ra bảng tính chắc chắn anh Bill biết "xung đột" đó nằm ở đâu, mặt mũi thế nào. Là người viết code của bảng tính anh Bill biết dữ liệu được đọc vào bộ nhớ như thế nào, chúng được tổ chức trong bộ nhớ ra sao, được phát hiện thay đổi và chỉnh sửa thế nào. Anh Bill biết từng đường đi lối lại trong code của mình mà không biết chỉnh sửa code đó để cho phép "đẩy dữ liệu xuống dưới"? Phải chăng ở giai đoạn thời gian đó anh Bill có quan điểm khác? Là không chấp nhận việc "đẩy dữ liệu xuống dưới" vì nó phá vỡ cấu trúc dữ liệu, sự tương quan giữa chúng?

Cứ thấy người khác không làm cái việc mình làm thì nghĩ là người ta không biết làm? Tôi không biết làm, bạn không biết làm, nhưng các ông lớn công nghệ, các đầu óc lập trình siêu đẳng của nhân loại không biết làm? Chắc ai đó định đùa thôi. Thay vào đó nên mừng thầm là người ta không làm hết những việc đó nên mình mới có cơ hội kiếm tiền.

Tôi có thể tiếp tục tham gia tranh luận với các bạn khác, còn tranh luận với Tuân tôi đã dừng rồi. Những cái trên tôi không viết cho Tuân. Nói rõ thế để tránh hiểu lầm.
 
Upvote 0
...Việc đẩy dữ liệu đang có xuống dưới có khó không? Không khó, và trên GPE chốc chốc lại có yêu cầu như thế. Không khó, mà chỉ là không được phép. Tức bạn tự làm được nhưng anh Bill chỉ cho phép bạn làm trong SUB. Khi bạn làm trong FUNCTION thì anh Bill tuýt còi. Như vậy việc "đẩy dữ liệu xuống dưới" không khó, chỉ là anh Bill không cho phép làm trong FUNCTION. Chắc chắn việc làm trên đã "xung đột" với cái gì đấy trong việc quản lý, xử lý dữ liệu. ....
Ở trong môi trường macro, Function muốn làm gì thì làm.
Khi Function được đưa lên bảng tính thì mới phải tuân thủ theo cái giới hạn kia. Theo tôi thì đây là luật có từ đời Excel 4, hoặc cổ lắm thì cũng là Excel 95/97. Hồi ấy kiểm soát bộ nhớ rất khó (điển hình, Windows muốn đưa lên mấy cái cửa sổ debug cũng không dễ) cho nên giới sử dụng Excel cho đó là điều cần thiết.

Đại khái thì khi một Function được dùng ở bảng tính thì nó phải đi qua một lớp bảo vệ. Trước mắt thì lớp bảo vệ này có nhiệm vụ biến Function thành công cụ làm việc in hệt như hàm thông thường của bảng tính. Và vì vậy nó có hai công việc nhiển nhiên:
1. không cho phép sửa đổi bảng tính.
2. không cho phép crash. Nói cách khác, lỗi sẽ bị bẫy hết.

Những tay nghề xịn thì có cách đi vòng qua lớp bảo vệ này. Có lẽ vì vậy mà MS cứ để mặc câu chuyện diễn tiến.
 
Upvote 0
Ở trong môi trường macro, Function muốn làm gì thì làm.
Khi Function được đưa lên bảng tính thì mới phải tuân thủ theo cái giới hạn kia. Theo tôi thì đây là luật có từ đời Excel 4, hoặc cổ lắm thì cũng là Excel 95/97. Hồi ấy kiểm soát bộ nhớ rất khó (điển hình, Windows muốn đưa lên mấy cái cửa sổ debug cũng không dễ) cho nên giới sử dụng Excel cho đó là điều cần thiết.

Đại khái thì khi một Function được dùng ở bảng tính thì nó phải đi qua một lớp bảo vệ. Trước mắt thì lớp bảo vệ này có nhiệm vụ biến Function thành công cụ làm việc in hệt như hàm thông thường của bảng tính. Và vì vậy nó có hai công việc nhiển nhiên:
1. không cho phép sửa đổi bảng tính.
2. không cho phép crash. Nói cách khác, lỗi sẽ bị bẫy hết.

Những tay nghề xịn thì có cách đi vòng qua lớp bảo vệ này. Có lẽ vì vậy mà MS cứ để mặc câu chuyện diễn tiến.
Tôi không đi vào chi tiết. Chỉ thống nhất với nhau là bác Bill cấm. Còn tại sao, lý do lý trấu không bàn.
Ý tôi là bác Bill là tác giả code nên nếu bác ta muốn thì bác ta có quyền (ai trên bác để cấm?), bác biết phải sửa gì, ở đâu, sửa thế nào, và tôi tin là bác có đủ trình độ để chỉnh sửa code của chính mình. Thế thôi.
 
Upvote 0
Khó so sánh thì đúng rồi vì nhiều khi quan điểm khác nhau.
Việc đẩy dữ liệu đang có xuống dưới có khó không? Không khó, và trên GPE chốc chốc lại có yêu cầu như thế. Không khó, mà chỉ là không được phép. Tức bạn tự làm được nhưng anh Bill chỉ cho phép bạn làm trong SUB. Khi bạn làm trong FUNCTION thì anh Bill tuýt còi. Như vậy việc "đẩy dữ liệu xuống dưới" không khó, chỉ là anh Bill không cho phép làm trong FUNCTION. Chắc chắn việc làm trên đã "xung đột" với cái gì đấy trong việc quản lý, xử lý dữ liệu. Là người tạo ra bảng tính chắc chắn anh Bill biết "xung đột" đó nằm ở đâu, mặt mũi thế nào. Là người viết code của bảng tính anh Bill biết dữ liệu được đọc vào bộ nhớ như thế nào, chúng được tổ chức trong bộ nhớ ra sao, được phát hiện thay đổi và chỉnh sửa thế nào. Anh Bill biết từng đường đi lối lại trong code của mình mà không biết chỉnh sửa code đó để cho phép "đẩy dữ liệu xuống dưới"? Phải chăng ở giai đoạn thời gian đó anh Bill có quan điểm khác? Là không chấp nhận việc "đẩy dữ liệu xuống dưới" vì nó phá vỡ cấu trúc dữ liệu, sự tương quan giữa chúng?

Cứ thấy người khác không làm cái việc mình làm thì nghĩ là người ta không biết làm? Tôi không biết làm, bạn không biết làm, nhưng các ông lớn công nghệ, các đầu óc lập trình siêu đẳng của nhân loại không biết làm? Chắc ai đó định đùa thôi. Thay vào đó nên mừng thầm là người ta không làm hết những việc đó nên mình mới có cơ hội kiếm tiền.

Tôi có thể tiếp tục tham gia tranh luận với các bạn khác, còn tranh luận với Tuân tôi đã dừng rồi. Những cái trên tôi không viết cho Tuân. Nói rõ thế để tránh hiểu lầm.
Với Ngài Bill giải quyết xung đột (nếu có) là chuyện nhỏ, function trên bảng tính là thao tác thủ công trên vùng chọn, muốn đẩy xuống đẩy ngang tới đâu đã có các công cụ khác, chỉ cần thêm vài thao tác copy là xong, hoặc chọn tool Table để tự điền công thức xuống. Nếu cài sẵn chức năng nầy vào function cấu trúc lệnh sẽ phức tạp, quan trọng là tốc độ xử lý giảm đáng kể, khách hàng la khắp làng xóm "Excel quá tệ chạy như rùa bò" rủ nhau chạy sang anh Google.
Túm lại lợi nhỏ xíu hại to đùng
 
Upvote 0
Trong quá trình viết code thì mình chợt nhận ra là thay vì viết nhiều hàm tự tạo thì chỉ cần viết 1 hàm hỗ trợ cho các hàm mảng là được rồi. Tận dụng luôn các hàm mảng của Excel. Một số hình ảnh sau khi sử dụng hàm hỗ trợ này:
1.
1603690261126.png
1603690294134.png
2.
1603690372598.png
1603690585911.png
3.
1603690623817.png
1603690649549.png
Một số hàm mảng khác chỉ cần nhập công thức vô 1 ô rồi CTR+SHIFT+ENTER là nó tự nhảy kết quả mà không cần phải chọn hết nguyên 1 vùng.
 
Upvote 0
Trong quá trình viết code thì mình chợt nhận ra là thay vì viết nhiều hàm tự tạo thì chỉ cần viết 1 hàm hỗ trợ cho các hàm mảng là được rồi. Tận dụng luôn các hàm mảng của Excel. Một số hình ảnh sau khi sử dụng hàm hỗ trợ này:
1.
View attachment 248060
View attachment 248061
2.
View attachment 248062
View attachment 248064
3.
View attachment 248065
View attachment 248066
Một số hàm mảng khác chỉ cần nhập công thức vô 1 ô rồi CTR+SHIFT+ENTER là nó tự nhảy kết quả mà không cần phải chọn hết nguyên 1 vùng.
Ra rồi he ... chúc mừng nha
 
Upvote 0
Cách đây khoảng 1 tháng chi đó có ai đó keo viết rể thôi mà ... thế mà tới hôm nay vẫn chưa thấy úp phim buồn thế nhỉ ...
 
Upvote 0
Mình chỉ viết dựa trên những gì bác @Kiều Mạnh gợi ý, chưa đụng tới hàm API. Cách thức hoạt động hàm cũng tương tự như mấy hàm trong 365. Có thể bác Bill làm sẵn từ trước mà bác Bill ... quên. Cảm ơn bác Kiều Mạnh rất nhiều.
 
Upvote 0
Mình chỉ viết dựa trên những gì bác @Kiều Mạnh gợi ý, chưa đụng tới hàm API. Cách thức hoạt động hàm cũng tương tự như mấy hàm trong 365. Có thể bác Bill làm sẵn từ trước mà bác Bill ... quên. Cảm ơn bác Kiều Mạnh rất nhiều.
Mạnh hỏi tư duy logic + trắc nghiệm chút he ... sau đó mạnh sẻ đánh giá cho điểm he
1/ Nhưng cái mạnh nói bạn thấy có đúng ko ... loanh quanh trên VBA thui
2/ Khi bạn viết ra như vậy bạn có xem thường bill là người đi sau và ko có tầm nhìn không !!!???
3/ bạn cảm thấy thế nào khi viết xong nó ... cảm giác thôi

quan trọng nhất câu thứ 2 ấy là mình đánh giá được bạn ngay và luôn
 
Upvote 0
Mình chỉ viết dựa trên những gì bác @Kiều Mạnh gợi ý, chưa đụng tới hàm API. Cách thức hoạt động hàm cũng tương tự như mấy hàm trong 365. Có thể bác Bill làm sẵn từ trước mà bác Bill ... quên. Cảm ơn bác Kiều Mạnh rất nhiều.

Không giống gì Excel 365 cả. Mảng Excel 365 tạo ra bởi công thức ta không xóa được phần tử trong mảng, cũng như mảng tạo bởi CSTRL+SHIFT+ENTER. Những ai tìm hiểu mảng sẽ nhận thấy điều này ngay. Dù sao bạn cũng đã làm được chút xíu và tự thấy hứng thú là được rồi.
 
Upvote 0
Upvote 0
Mình chỉ viết dựa trên những gì bác @Kiều Mạnh gợi ý, chưa đụng tới hàm API. Cách thức hoạt động hàm cũng tương tự như mấy hàm trong 365. Có thể bác Bill làm sẵn từ trước mà bác Bill ... quên. Cảm ơn bác Kiều Mạnh rất nhiều.
eo ôi mới xem kỹ lại vẫn còn xài 2 cái dấu to sau đó sao ???
{ ............ }
 
Upvote 0
Có chuẩn chỉ như vậy không anh?

Câu này nghĩa cụ thể là sao anh?

Đó là đặc điểm của Excel 365 cũng như mảng được điền vào vùng có nhiều ô bởi CTRL + SHIFT + ENTET. Vì bạn đó bảo như Excel 365 thì mình nói đặc điểm có nó mà thôi.
 
Upvote 0
bỏ 2 cái đấu to ấy đi chọn gọn he
 
Upvote 0
Trên Excel 365, khi xóa một phần kết quả thì có tự động điền lại phần đã xóa không bạn?
Excel 365 thì em chỉ mới xem qua phần giới thiệu trên diễn đàn chứ chưa từng sử dụng bao giờ. Ở đây ý của em là giống cách thể hiện công thức trên 1 ô, các ô còn lại không có công thức. Còn vụ xóa rồi tự động điền lại phần đã xóa thì em không biết là trên Excel 365 có hay không nữa, chắc bác đã xài rồi nên mới hỏi đúng không?
Mạnh hỏi tư duy logic + trắc nghiệm chút he ... sau đó mạnh sẻ đánh giá cho điểm he
1/ Nhưng cái mạnh nói bạn thấy có đúng ko ... loanh quanh trên VBA thui
2/ Khi bạn viết ra như vậy bạn có xem thường bill là người đi sau và ko có tầm nhìn không !!!???
3/ bạn cảm thấy thế nào khi viết xong nó ... cảm giác thôi

quan trọng nhất câu thứ 2 ấy là mình đánh giá được bạn ngay và luôn
1/ Những cái bác nói em thấy đúng ý thì em có like. Mà nói thật là trong chủ đề này em chỉ để ý những phần nào giúp cho em đạt được kết quả của mình, còn những chuyện tranh luận em chỉ đọc lướt qua. Nhiều khi em còn không hiểu là mọi người tranh luận cái gì nữa. Em chỉ nghĩ như vậy, Bill làm ra cái Excel + VBA, mọi người tùy theo khả năng của mình mà khai thác sức mạnh của nó thôi.
2/ Em đang viết bằng hàm của ổng thì sao dám coi thường ổng.
3/ Cảm thấy vui. Nhưng còn chưa ưng ý lắm cái xử lý mảng lúc gán kết quả xuống sheet.
 
Upvote 0
Excel 365 thì em chỉ mới xem qua phần giới thiệu trên diễn đàn chứ chưa từng sử dụng bao giờ. Ở đây ý của em là giống cách thể hiện công thức trên 1 ô, các ô còn lại không có công thức. Còn vụ xóa rồi tự động điền lại phần đã xóa thì em không biết là trên Excel 365 có hay không nữa, chắc bác đã xài rồi nên mới hỏi đúng không?

1/ Những cái bác nói em thấy đúng ý thì em có like. Mà nói thật là trong chủ đề này em chỉ để ý những phần nào giúp cho em đạt được kết quả của mình, còn những chuyện tranh luận em chỉ đọc lướt qua. Nhiều khi em còn không hiểu là mọi người tranh luận cái gì nữa. Em chỉ nghĩ như vậy, Bill làm ra cái Excel + VBA, mọi người tùy theo khả năng của mình mà khai thác sức mạnh của nó thôi.
2/ Em đang viết bằng hàm của ổng thì sao dám coi thường ổng.
3/ Cảm thấy vui. Nhưng còn chưa ưng ý lắm cái xử lý mảng lúc gán kết quả xuống sheet.

9,5 điểm cho bạn .... xài đồ của bill ... chạy ké trên Ứng dụng của bill mà chê bill nữa thì chỉ là đồ bỏ đi thôi
và tư duy cũng chỉ dùng lại ở đó mà thôi .... trừ khi bạn viết chạy độc lập mọi thứ thì có thể chê bill cũng ko sao cả

Bạn rất tuyệt Vời
 
Upvote 0
9,5 điểm cho bạn .... xài đồ của bill ... chạy ké trên Ứng dụng của bill mà chê bill nữa thì chỉ là đồ bỏ đi thôi
và tư duy cũng chỉ dùng lại ở đó mà thôi
.... trừ khi bạn viết chạy độc lập mọi thứ thì có thể chê bill cũng ko sao cả

Bạn rất tuyệt Vời

Tôi có chút tò mò nên tôi hỏi riêng bạn:
Bạn ấy nói gì động chạm đến cái chữ màu đỏ đâu mà bạn nói gì ghê vậy? Không biết mọi người nghĩ sao chứ tôi thấy nghe thấy lạ lạ.
Nếu là tôi mà bị bạn nói vậy thì tôi cho rằng bạn ăn nói bừa bãi. Ở đây không ai chê đồ của Bill, có tôi nói là "chớm nở", còn vài đặc tính mà chưa thỏa mãn thì cũng là ý riêng của tôi thấy vậy. Trong việc sử dụng đánh giá sản phẩm, việc người ta nói tính năng này mới nhưng chưa được như ý tôi ý bạn là bình thường chứ không phải chê bai cả sản phẩm là đồ bỏ đi. Kẻ vô ơn nới ăn nói vậy.

Bạn có thể trả lời câu hỏi của tôi hoặc không. Tôi mong ý của bạn không liên quan đến tôi. Nếu có thì bạn muốn nói thêm gì tôi vẫn nghe và phản hồi trên tinh thần trao đổi cho rõ ràng.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi có chút tò mò nên tôi hỏi riêng bạn:
Bạn ấy nói gì động chạm đến cái chữ màu đỏ đâu mà bạn nói gì ghê vậy? Không biết mọi người nghĩ sao chứ tôi thấy nghe thấy lạ lạ.
Nếu là tôi mà bị bạn nói vậy thì tôi cho rằng bạn ăn nói bừa bãi. Ở đây không ai chê đồ của Bill, có tôi nói là "chớm nở", còn vài đặc tính mà chưa thỏa mãn thì cũng là ý riêng của tôi thấy vậy. Trong việc sử dụng đánh giá sản phẩm, việc người ta nói tính năng này mới nhưng chưa được như ý tôi ý bạn là bình thường chứ không phải chê bai cả sản phẩm là đồ bỏ đi. Kẻ vô ơn nới ăn nói vậy.

Bạn có thể trả lời câu hỏi của tôi hoặc không. Tôi mong ý của bạn không liên quan đến tôi. Nếu có thì bạn muốn nói thêm gì tôi vẫn nghe và phản hồi trên tinh thần trao đổi cho rõ ràng.
ồ mà mình có nói chi tới bạn đâu he .... ta dừng lại ở đây sẻ rất tốt đấy
Mình ko nói gì thêm ... và để đấy .. thế thôi
 
Upvote 0
tới đó thôi ... thế là vừa tới đủ để hiểu và nhận ra vấn đề ... Mạnh dừng mọi cái ở đây
Còn ai thích bàn cứ bàn he ... -0-0-0-
 
Lần chỉnh sửa cuối:
Upvote 0
Excel 365 thì em chỉ mới xem qua phần giới thiệu trên diễn đàn chứ chưa từng sử dụng bao giờ. Ở đây ý của em là giống cách thể hiện công thức trên 1 ô, các ô còn lại không có công thức. Còn vụ xóa rồi tự động điền lại phần đã xóa thì em không biết là trên Excel 365 có hay không nữa, chắc bác đã xài rồi nên mới hỏi đúng không?
Hàm mảng 365 cho phép chèn dòng, xoá dòng ngang qua giữa mảng kết quả, Excel tự điền lại mảng nguyên vẹn như cũ
Trong các ô còn lại của mảng kết quả nhìn thấy công thức mờ hơn ô đầu tiên, nhưng khi click vào thì trên thanh công thức trống trơn. Cố tình xoá cũng được phục hồi. Tuy nhiên khi sửa lại thành dữ liệu khác thì nguyên mảng biến mất và bị lỗi #SPILL
Tôi có 1 bài nói về Tính chất động của hàm mảng, công thức mảng trong Excel 365 trong đó có đoạn cuối là:

1603712340312.png
 
Upvote 0

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

Back
Top Bottom