Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Đăng ký học Excel và phân tích số liệu cùng GPE tháng 12 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Các phép tính ma trận trong Excel

Thảo luận trong 'Excel và Kỹ Thuật' bắt đầu bởi PhanTuHuong, 24 Tháng sáu 2006.

  1. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    1. Tính tổng ma trận, hiệu ma trận và tích ma trận:

    Để tính tổng (hiệu, tích) cho ma trận (VD là 2), bạn cần thực hiện các bước sau:
    - Bước 1: Nhập số liệu từng ma trận (ma trận A và B)
    - Bước 2: Chọn các khối ô chứa kết quả (bôi đen). Sau đó di chuyển con trỏ đến ô bên trái khối ô.
    - Bước 3: Nhập công thức tính, cụ thể như sau
    + Tính tổng: =VùngmatrậnA+VùngmatrậnB
    + Tính hiệu: =VùngmatrậnA-VùngmatrậnB
    + Tính tích: =MMULT(VùngmatrậnA,VùngmatrậnB)
    - Bước 4: Nhấn phím Ctrl+Shift+Enter, các phép tính sẽ được thực hiện.


    2. Nghịch đảo ma trận:

    Để nghịch đảo ma trận, bạn cần thực hiện các bước sau:
    - Bước 1: Nhập số liệu cho ma trận trận cần nghịch đảo.
    - Bước 2: Chọn các khối ô chứa kết quả (bôi đen). Sau đó di chuyển con trỏ đến ô bên trái khối ô.
    - Bước 3: Nhập công thức nghịch đảo ma trận
    =MINVERSE(VùngmatrậnA)
    - Bước 4: Nhấn phím Ctrl+Shift+Enter, các phép tính sẽ được thực hiện.

    Hình ví dụ

    [​IMG]
     
    Chỉnh sửa lần cuối bởi điều hành viên: 25 Tháng sáu 2006
  2. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    Vấn đề này đã đề cập trong diễn đàn, nhưng được gọi là "mảng". Còn bên khối kỹ thuật gọi là "ma trận", nghe có vẻ "chuyên nghiệp" hơn :)
     
  3. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    3. Giải hệ phương trình tuyến tính bằng ma trận:

    Có hệ phương trình Ax=B. Tính ma trận nghịch đảo của A và tính (A-1).B, đó chính là véc tơ X cần tìm.
    Ví dụ: hệ phương trình
    ax+by= e, cx+dy= f

    Để xác định giá trị x,y thì thực hiện như sau:
    - Nhập giá trị a, b, c, d vào khối ô (A5:B6)- ma trận A.
    - Nhập giá trị e, f vào khối ô (A8:A9)- ma trận B.
    - Chọn vùng chứa ma trận nghịch đảo của A (D5:E6). Sau đó tính ma trận nghịch đảo như mục 2.
    - Chọn vùng chứa nghiệm x, y (D8:D9). Nhập công thức =MMULT(VungA-1,VungB), sau đó nhấn phím Ctrl+Shift+Enter. Nghiệm x, y sẽ xuất hiện.
    Bạn có thể kiểm tra lại nghiệm bằng cách tính mà trận Ax rồi so sánh với véc tơ B.
    Từ ví dụ trên, bạn có thể giải hệ phương trình có nhiều nghiệm.
    Chúc thành công! :_
    Hình anh minh hoạ kèm theo

    hình minh họa
    [​IMG]
     
    Lần chỉnh sửa cuối: 11 Tháng tám 2007
  4. HAiNV

    HAiNV Thành viên mới

    Bác nào quan tâm đến các phép toán ma trận trong excel thì có thể liên hệ với anh daoduy bên ketcau.com. Anh Duy co 1 file *.xla rất hay, khoảng 120 hàm về ma trận, lại ko có pass bảo vệ. Tha hồ mà cày xới.
     
  5. SA_DQ

    SA_DQ Thành viên danh dự

    Rất hay nếu bạn liên hệ giúp; Nghe nó`i đến hơn trăm hàm thì quả là bữa tiệt no nê đây;
    Tò mò muốn hỏi trước HAINV là có cách giải hệ loại này không:
    2aX + 3(a-b)Y = 4
    bX - (a -1 ) Y = a
     
  6. SA_DQ

    SA_DQ Thành viên danh dự

    Bạn chép hàm vô module1 là được mà!

    Vì là hàm mãng nên hao kinh phí quá!
     

    Các file đính kèm:

  7. duongthanh85

    duongthanh85 Thành viên mới

    em không đem theo usb và máy hàng net cũng không cài excel. em hỏi nhanh 1 phát:
    em tham khảo các hàm nhưng chưa tìm được phép chuyển vị ma trận.
    anh nào hướng dẫn em chút.

    em định làm bằng cách chuyển 1 vùng( là matrix) từ dọc sang ngang.
     
  8. duongthanh85

    duongthanh85 Thành viên mới

    ok. em làm xong hàm này rồi, chuyển vị vô tư, giữ nguyên công thức và tham chiếu đến các ô.
    chỉ việc chọn vùng theo chuột và xoay nó là xong.
     
  9. qmanh

    qmanh Thành viên mới

    cho tui đóng góp, khi chuyển vị ma trận thì copy vùng rồi chọn paste special/transpose
    nếu ma trận chuyển vị có công thức thì cho dùng tọa độ tuyệt đối rồi chọn them formulas.
    cho tui thấy nó rất hữu ích cho bạn nào chuẩn bị thi môn cơ kết cấu 3 trường dhxd. cám ơn mọi người.
     
    Lần chỉnh sửa cuối: 10 Tháng mười hai 2008
  10. nanabi

    nanabi Thành viên mới

    em đã đọc nhiều bài về nhân ma trận nhưng vẫn không thấy có bài nào viết về cách nhân nhiều ma trận cùng 1 lúc. Em toàn phải nhân 2 matrận rồi nhân tiếp đến matrận khác ...
    Có bác nào biết cách nhân nhiều matrận cùng lúc chỉ cho em với. Em cảm ơn
     
  11. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    Các file đính kèm:

    Lần chỉnh sửa cuối: 23 Tháng mười 2009
  12. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    Có ai có thể rút gọn được hàm này không? Em nhìn vào muốn tẩu hỏa luôn.-+*/
    Tác giả: Le Viet Thanh
    Nguồn: http://www.ketcau.com/forum/showpost.php?p=9591&postcount=87
    Thân.
     
  13. phhuongthanh

    phhuongthanh Thành viên mới

    mình đang học môn kinh tế lượng nhưng khi nhân một ma trận với một số không biết nhân như thế nào? Xin các anh chị chỉ giúp em với. Xin chân thành cảm ơn
     
  14. nguyenthuan

    nguyenthuan Thành viên mới

    Sử dụng hàm Add in như worksheetfunction

    Rất cảm ơn bạn đã chia sẽ file VBA về các hàm ma trận rất hay.
    Cho mình hỏi mình muốn sử dụng những hàm này trong VBE thì làm như thế nào?
    http://www.ozgrid.com/forum/showthread.php?t=14530
    Trang web đó có 1 cách giải đáp nhưng mình không hiểu tại sao :Mình đã tham chiếu đến VBAmatrix rồi nhưng những hàm tính về ma trận như M_Mult_C mình vẫn chưa tính được.
    Khi mở Object Browser ra chọn thư viện VBAmatrix, trong cửa sổ Project Window nếu để chuột vào thành phần nào trong VBAmatrix thì tất cả những đối tượng (bao gồm cả đối tượng matrix chứa hàm M_Mult_C) xuất hiện đầy đủ, nhưng khi để chuột đến VBAProject (Book 1) chẳng hạn thì đối tượng matrix chứa hàm M_Mult_C và nhiều đối tượng khác nữa lại biến mất.
    Kính mong các bạn giải đáp giúp mình!
    Mình mới biết VBA nên chưa hiểu nhiều!
    Chân thành cảm ơn!!!
     
  15. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    VBAProject(Book 1) là 1 Workbook khác rồi bạn à?!
    Khi tham chiếu đến Workbook nào thì nó chỉ thấy dữ liệu trên Workbook đó thôi!
    Vậy thì tất nhiên bạn sẽ không thấy rồi. Bạn mở quyển sách nào thì văn bản trên quyển sách đó đâu thể thấy trên quyển sách khác được.
    Còn việc thực thi lệnh thì giống như bạn đọc cùng lúc nhiều quyền sách vậy đó. Giữ liệu nằm ngay trong đầu thì có thể thao tác trên nhiều quyển sách được chứ. Nhưng nó không giống như con người, nó chỉ thao tác tức thời ngay trên màn hình những gì mình có thôi.
    Còn việc truy xuất sâu hơn đòi hỏi bạn phải chỉ cho nó cơ.
    Thân.
     
  16. nguyenthuan

    nguyenthuan Thành viên mới

    Cảm ơn bạn đã trả lời mình

    1. Thật sự là khi mở quyển sách này nhưng mình lại thấy một phần của quyển sách kia bạn ạ, còn mở quyển sách kia thì thấy hoàn chỉnh quyển đó. Cảm tưởng như nó giấu một số đối tượng không cho mình tham chiếu đến đó vậy.Chứ không phải mở quyển nào thì chỉ thấy quyển đó.
    2. Bạn có thể bớt chút thời gian hiếm hoi ví dụ 1 hàm bất kì trong đối tượng matrix ( như hàm M_Mult_C chẳng hạn) cho mình xem cách làm được không. Mình mò mẫm cả ngày hôm nay mà vẫn chưa được. Cái hàm này nếu dùng trong bảng tình thì ko có gì bàn cãi cả, nhưng dùng hàm đó để phát triển việc làm của mình trên VBE thì mình chưa làm được (không biết cách tham chiếu đến hàm đó).Có gì ngớ ngẫn đừng cười mình nhé! Chân thành cảm ơn! Mong nhận được hồi âm sớm!+-+-+-++-+-+-+
     
  17. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    Thì bạn chỉ cần lấy 2 đoạn code Mat_Complex_Conv(A, ConvType, Optional RetErr) M_MULT_C(Mat1, Mat2, Optional CFormat) để dùng thôi. Vì trong M_MULT_C nó có tham chiếu đến Mat_Complex_Conv nên bạn phải lấy nó theo thôi.
    Còn quá trình sử dụng thì nó chỉ sử lý trên mãng thôi. Bạn phải áp dụng hàm mãng nha!
    Bạn xem file nha!
    Thân.
     

    Các file đính kèm:

    • VD.xls
      Kích thước:
      36.5 KB
      Đọc:
      90
  18. nguyenthuan

    nguyenthuan Thành viên mới

    Một lần nữa cảm ơn bạn nhiệt tình giúp đỡ.
    1. Cách làm này mình cũng biết, đó là chép phần hàm và tham chiếu của code có sẵn trong đó vào trong code của mình để phát triển. Tương tự như tạo một hàm bằng VBA rồi dùng và có vẻ như cách này dùng nhiều hơn nhỉ, có lẽ mình nên nghĩ dùng cách này để làm phần của minh.Coi như tới đây là công việc không bị dừng lại và mình có thể làm tiếp được rồi. Chân thành cảm ơn!
    2. Nếu mình không chép phần code của addins đó vào code mình( trường hợp addins có đặt pass thì không thể dùng code của nó được) khi đó không thể có code mà chép.Trong khi đó mình vẫn muốn dùng hàm trong addins đó ,điều đó có nghĩa là mình phải tham chiếu đến addins đó (tương tự như tham chiếu đến một chương trình khác như VBA cho Autocad chẳng hạn) và dùng những hàm trong đó như hàm của worksheetfunction và đó là cái mà mình chưa làm được.
    3. Khi mình mày mò tham chiếu đến nó rồi (reference tới VBAmatrix) thì lúc đó hàm M_Mult_Cvà tất cả những hàm của đối tượng matrix không thấy nữa trong khi đó một số đối tượng khác vẫn thấy được và tham chiếu được (như là bị giấu mất một số đối tượng mình đã đề cập ở trên.Nếu bạn có thể dùng hàm M_Mult_C mà không cần chép code của nó thì đó chính là cái mình đã hỏi! Chân thành cảm ơn và nếu được bạn giúp thêm cách đó nữa thì mình rất đa tạ.
    +-+-+-++-+-+-++-+-+-+
     
  19. MNThao

    MNThao Thành viên mới

    Các bạn ơi có thể cho mình hỏi.
    Mình cũng đang rất cần viết một số addins để phục vụ cho công việc của mình cũng có liên quan đến mảng (ma trận). Mình cũng đã tham khảo nhiều bài viết của các bạn và cũng đã có thể tùy biến đc theo nhu cầu của mình.
    Tuy nhiên có một vấn đề mình chưa thể giải quyết đc mong các bạn chỉ giáo. Số là trong cái addins của mình, một quá trình tính toán mình cần yêu cầu trả về tối thiểu 02 giá trị. Có thể thực hiện việc này bằng cách thực hiện lại hàm nhiều lần và mỗi lần cho trả về một giá trị khác nhau theo yêu cầu của mình. Tuy nhiên có một vấn nếu như file của mình quá lớn thì việc lặp lại quá trình tính toán sẽ làm cho chương trình của mình chạy rất lâu và khi cần trả về nhiều giá trị (Chứ không phải 2 hay 3 giá trị) thì sẽ thực hiện lại rất nhiều lần cho cùng 1 câu lệnh sẽ rất phức tạp.
    Mình không biết đã có ai thử trả về giá trị là một mảng (ma trận) hay chưa. Mình đang tìm cách để trả về giá trị cho 1 addins là một mảng (ma trận) và display được cái ma trận trả về ấy trên một worksheet (có thể cùng hoặc có thể khác worksheet với nơi cung cấp dữ liệu). Có bạn nào biết cách trả về một mảng (ma trận) cho một addins thì chỉ giúp mình với.
    Cảm ơn các bạn nhiều!
     
  20. HYen17

    HYen17 Thành viên cằn cỗi.

    Hàm mảng người dùng đã có trên diễn đàn;

    Nhưng đó là trả về mảng các giá trị cùng lúc, chứ không như bạn mô tả: trả về lần lượt theo từng đối số nhận được;

    Bạn có thể đưa ra ví dụ cụ thể hơn được không? Nãy giờ chúng ta nói suông không à, hơn chán, bạn nhỉ?!

    Ví dụ hàm mảng giải phương trình bậc 2, như sau:
    Cú pháp hàm : =PTB2(Aa As Double, Bb As Double, Cc As Double) As Variant

    Khi đó, bạn chọn 3 ô (ví dụ A1:C1), nhập vô thanh công thức =PTB2(1, -3, 2) & kết thúc bằng tổ hợp fím dành cho hàm mảng ta sẽ thu được nghiệm trên các ô đã chọn.

    Còn sau khi đọc iêu cầu của bạn, mình thấy hình như bạn cần là 1 macro thì đúng hơn!

    Hãy thảo luận tiếp nha!
     

Chia sẻ trang này