Các Phép Tính Ma Trận Trong Excel

Giải Pháp Excel
  • Trang chủ Có gì mới Hoạt động gần nhất Tác giả
  • Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
  • Video New Video về Excel Video về tin học khác Tin tức về tin học chung
  • Thông tin mới Featured content Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
  • Tài nguyên Đánh giá mới nhất Tìm tài nguyên
  • Facebook
  • Đóng góp
Đăng nhập Đăng Ký Có gì mới? Tìm kiếm

Tìm kiếm

Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Note Bởi: Tìm kiếm Tìm nâng cao…
  • Tìm bài viết mới
  • Tìm theo chuyên mục
Menu Đăng nhập Đăng Ký Install the app Install How to install the app on iOS

Follow along with the video below to see how to install our site as a web app on your home screen.

Note: This feature may not be available in some browsers.

  • Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
  • Trang chủ
  • Diễn đàn
  • Excel và Kỹ Thuật
You are using an out of date browser. It may not display this or other websites correctly.You should upgrade or use an alternative browser. Các phép tính ma trận trong Excel (1 người xem)
  • Thread starter Thread starter PhanTuHuong
  • Ngày gửi Ngày gửi 24/6/06
Liên hệ QC

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

Đang trực tuyến: 2 (Thành viên: 0, Khách: 2) PhanTuHuong

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự Tham gia 13/6/06 Bài viết 7,238 Được thích 24,781 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ụ Chỉnh sửa lần cuối bởi điều hành viên: 25/6/06 PhanTuHuong

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự Tham gia 13/6/06 Bài viết 7,238 Được thích 24,781 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 :) PhanTuHuong

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự Tham gia 13/6/06 Bài viết 7,238 Được thích 24,781 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 aaa.jpg Lần chỉnh sửa cuối: 11/8/07 H

HAiNV

Thành viên mới
Tham gia 25/6/06 Bài viết 13 Được thích 5 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. SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80
HAiNV đã viết: . . . . 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. Nhấp chuột vào đây để mở rộng...
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 SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Bạn chép hàm vô module1 là được mà!
Nhờ bác tải file lên cho dễ hiểu. :. Nhấp chuột vào đây để mở rộng...
Vì là hàm mãng nên hao kinh phí quá!

File đính kèm

  • NhanMaTran.rar NhanMaTran.rar 62.3 KB · Đọc: 4,191
D

duongthanh85

Thành viên mới
Tham gia 14/12/06 Bài viết 8 Được thích 2 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. D

duongthanh85

Thành viên mới
Tham gia 14/12/06 Bài viết 8 Được thích 2 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. Q

qmanh

Thành viên mới
Tham gia 10/11/08 Bài viết 3 Được thích 1 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/12/08 nanabi

nanabi

Thành viên mới
Tham gia 19/3/08 Bài viết 19 Được thích 1 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 Po_Pikachu

Po_Pikachu

[email protected]
Tham gia 29/4/08 Bài viết 2,209 Được thích 3,572 Nghề nghiệp #VALUE! File ma trận của anh DaoDuy ở đây. Nếu ai muốn thì đăng ký diễn đàn rồi tải ha. http://www.ketcau.com/forum/showthread.php?p=12557 Bổ sung thêm 2 phần mềm toán học Maple 13 và Matlab 7 nữa nè! http://www.mediafire.com/?sharekey=0a6adf0944e19201ab1eab3e9fa335ca81ae225f8bb4244e Thân.

File đính kèm

  • matrix18.zip matrix18.zip 977.6 KB · Đọc: 972
Lần chỉnh sửa cuối: 23/10/09 Po_Pikachu

Po_Pikachu

[email protected]
Tham gia 29/4/08 Bài viết 2,209 Được thích 3,572 Nghề nghiệp #VALUE! 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
'DOAN CHUONG TRINH TINH TOAN CAC GIA TRI RIENG CUA MTRAN 'HOAN THANH NGAY 05/03/2003. Trong ham nay khong xet den phan ao cua cac gia tri rieng Private Sub Balanc(A() As Double, ByVal n As Integer) Const RADIX = 2 Dim last As Integer, i As Integer, j As Integer Dim s As Double, r As Double, g As Double Dim f As Double, c As Double, sqrdx As Double DoEvents: If mdl01.tiep_tuc = False Then Exit Sub frmSTATUS.lblstatus01(1).Caption = mdl01.StrTbao & Chr(10) & "(Transform to Balanc matric)" frmSTATUS.ProgressBar1.max = n frmSTATUS.ProgressBar1.Value = 0 frmSTATUS.lblstatus01(1).Refresh sqrdx = RADIX * RADIX last = 0 While last = 0 frmSTATUS.ProgressBar1.Value = frmSTATUS.ProgressBar1.Value + 1 last = 1 For i = 1 To n r = 0 c = 0 For j = 1 To n If Not (i = j) Then c = c + Abs(A(j, i)) r = r + Abs(A(i, j)) End If Next If (c And r) Then g = r / RADIX f = 1 s = c + r Do While c < g f = f * RADIX c = c * sqrdx Loop g = r * RADIX While c > g f = f / RADIX c = c / sqrdx Wend If ((c + r) / f < 0.95 * s) Then last = 0 g = 1 / f For j = 1 To n A(i, j) = A(i, j) * g Next For j = 1 To n A(j, i) = A(j, i) * f Next End If End If Next Wend frmSTATUS.ProgressBar1.Value = frmSTATUS.ProgressBar1.max End Sub Private Sub Hessenberg(A() As Double, ByVal n As Integer) Dim m As Integer, i As Integer, j As Integer Dim x As Double, y As Double, tg As Double frmSTATUS.lblstatus01(1).Caption = mdl01.StrTbao & Chr(10) & "(Transforming to Hessenberg matric form)" frmSTATUS.ProgressBar1.max = n - 3 frmSTATUS.ProgressBar1.Value = 0 frmSTATUS.lblstatus01(1).Refresh For m = 2 To n - 1 DoEvents If mdl01.tiep_tuc = False Then Exit Sub x = 0 i = m For j = m To n If Abs(A(j, m - 1)) > Abs(x) Then x = A(j, m - 1) i = j End If Next If Not (i = m) Then For j = m - 1 To n tg = A(i, j) A(i, j) = A(m, j) A(m, j) = tg Next For j = 1 To n tg = A(j, i) A(j, i) = A(j, m) A(j, m) = tg Next End If If Not (x = 0) Then For i = m + 1 To n y = A(i, m - 1) / x For j = m To n A(i, j) = A(i, j) - y * A(m, j) Next For j = 1 To n A(j, m) = A(j, m) + y * A(j, i) Next Next End If frmSTATUS.ProgressBar1.Value = m - 2 Next End Sub Private Function Sign(ByVal A As Double, ByVal B As Double) As Double If B > 0 Then Sign = Abs(A) Else Sign = -Abs(A) End If End Function Public Function Eig(A() As Double, ByVal n As Integer) As Double() Dim nn As Integer, m As Integer, l As Integer Dim k As Integer, j As Integer, its As Integer Dim i As Integer, mmin As Integer, status As Integer Dim z As Double, y As Double, x As Double Dim w As Double, v As Double, u As Double Dim t As Double, s As Double, r As Double Dim p As Double, q As Double, anorm As Double Dim wr() As Double '======================================== Balanc A, n Hessenberg A, n '======================================== 'BAT DAU TINH CAC GIA TRI RIENG: '======================================== ReDim wr(1 To n) As Double frmSTATUS.lblstatus01(1).Caption = mdl01.StrTbao & Chr(10) & "(Computing EigValues)" frmSTATUS.ProgressBar1.max = n frmSTATUS.ProgressBar1.Value = 0 frmSTATUS.lblstatus01(1).Refresh anorm = Abs(A(1, 1)) For i = 2 To n For j = (i - 1) To n anorm = anorm + Abs(A(i, j)) Next Next status = 0 nn = n t = 0 While nn >= 1 DoEvents If mdl01.tiep_tuc = False Then Exit Function its = 0 Do For l = nn To 2 Step -1 s = Abs(A(l - 1, l - 1)) + Abs(A(l, l)) If s = 0 Then s = anorm If Abs(A(l, l - 1)) + s = s Then Exit For Next x = A(nn, nn) If l = nn Then wr(nn) = x + t nn = nn - 1 status = status + 1 frmSTATUS.ProgressBar1.Value = status Else y = A(nn - 1, nn - 1) w = A(nn, nn - 1) * A(nn - 1, nn) If l = (nn - 1) Then p = 0.5 * (y - x) q = p * p + w z = Sqr(Abs(q)) x = x + t If q >= 0 Then z = p + Sign(z, p) wr(nn - 1) = x + z wr(nn) = x + z If Not (z = 0) Then wr(nn) = x - w / z Else wr(nn - 1) = x + p wr(nn) = x + p End If nn = nn - 2 status = status + 2 frmSTATUS.ProgressBar1.Value = status Else If (its = 10) Or (its = 20) Then t = t + x For i = 1 To nn A(i, i) = A(i, i) - x Next s = Abs(A(nn, nn - 1)) + Abs(A(nn - 1, nn - 2)) y = 0.75 * s x = 0.75 * s w = -0.4375 * s * s End If its = its + 1 For m = (nn - 2) To l Step -1 z = A(m, m) r = x - z s = y - z p = (r * s - w) / A(m + 1, m) + A(m, m + 1) q = A(m + 1, m + 1) - z - r - s r = A(m + 2, m + 1) s = Abs(p) + Abs(q) + Abs(r) p = p / s q = q / s r = r / s If m = l Then Exit For u = Abs(A(m, m - 1)) * (Abs(q) + Abs(r)) v = Abs(p) * (Abs(A(m - 1, m - 1)) + Abs(z) + Abs(A(m + 1, m + 1))) If u + v = v Then Exit For Next For i = m + 2 To nn A(i, i - 2) = 0 If Not (i = (m + 2)) Then A(i, i - 3) = 0 Next For k = m To nn - 1 If Not (k = m) Then p = A(k, k - 1) q = A(k + 1, k - 1) r = 0 If Not (k = (nn - 1)) Then r = A(k + 2, k - 1) x = Abs(p) + Abs(q) + Abs(r) If Not (x = 0) Then p = p / x q = q / x r = r / x End If End If s = Sign(Sqr(p * p + q * q + r * r), p) If Not (s = 0) Then If k = m Then If Not (l = m) Then A(k, k - 1) = -A(k, k - 1) End If Else A(k, k - 1) = -s * x End If p = p + s x = p / s y = q / s z = r / s q = q / p r = r / p For j = k To nn p = A(k, j) + q * A(k + 1, j) If Not (k = (nn - 1)) Then p = p + r * A(k + 2, j) A(k + 2, j) = A(k + 2, j) - p * z End If A(k + 1, j) = A(k + 1, j) - p * y A(k, j) = A(k, j) - p * x Next If nn < k + 3 Then mmin = nn Else mmin = k + 3 End If For i = l To mmin p = x * A(i, k) + y * A(i, k + 1) If Not (k = (nn - 1)) Then p = p + z * A(i, k + 2) A(i, k + 2) = A(i, k + 2) - p * r End If A(i, k + 1) = A(i, k + 1) - p * q A(i, k) = A(i, k) - p Next End If Next End If End If Loop While l < (nn - 1) Wend Eig = wr End Function Nhấp chuột vào đây để mở rộng...
Thân. P

phhuongthanh

Thành viên mới
Tham gia 3/11/09 Bài viết 1 Được thích 0 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 nguyenthuan

nguyenthuan

Thành viên mới
Tham gia 12/12/06 Bài viết 28 Được thích 4 Nghề nghiệp Đi học lóm Sử dụng hàm Add in như worksheetfunction
Po_Pikachu đã viết: File ma trận của anh DaoDuy ở đây. Nếu ai muốn thì đăng ký diễn đàn rồi tải ha. http://www.ketcau.com/forum/showthread.php?p=12557 Bổ sung thêm 2 phần mềm toán học Maple 13 và Matlab 7 nữa nè! http://www.mediafire.com/?sharekey=0a6adf0944e19201ab1eab3e9fa335ca81ae225f8bb4244e Thân. Nhấp chuột vào đây để mở rộng...
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!!! Po_Pikachu

Po_Pikachu

[email protected]
Tham gia 29/4/08 Bài viết 2,209 Được thích 3,572 Nghề nghiệp #VALUE! 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. nguyenthuan

nguyenthuan

Thành viên mới
Tham gia 12/12/06 Bài viết 28 Được thích 4 Nghề nghiệp Đi học lóm
Po_Pikachu đã viết: 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. Nhấp chuột vào đây để mở rộng...
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!+-+-+-++-+-+-+
Po_Pikachu

Po_Pikachu

[email protected]
Tham gia 29/4/08 Bài viết 2,209 Được thích 3,572 Nghề nghiệp #VALUE! Thì bạn chỉ cần lấy 2 đoạn code Mat_Complex_Conv(A, ConvType, Optional RetErr) và 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.

File đính kèm

  • VD.xls VD.xls 36.5 KB · Đọc: 105
nguyenthuan

nguyenthuan

Thành viên mới
Tham gia 12/12/06 Bài viết 28 Được thích 4 Nghề nghiệp Đi học lóm
Po_Pikachu đã viết: Thì bạn chỉ cần lấy 2 đoạn code Mat_Complex_Conv(A, ConvType, Optional RetErr) và 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. Nhấp chuột vào đây để mở rộng...
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ạ.
+-+-+-++-+-+-++-+-+-+ M

MNThao

Thành viên mới
Tham gia 16/12/09 Bài viết 17 Được thích 6 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! SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80
Các bạn ơi có thể cho mình hỏi: Đã 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! Nhấp chuột vào đây để mở rộng...
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! M

MNThao

Thành viên mới
Tham gia 16/12/09 Bài viết 17 Được thích 6
HYen17 đã viết: 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! Nhấp chuột vào đây để mở rộng...
Đúng là ý mình thế mà. Mình muốn chỉ viết công thức 1 lần để nó trả về cùng 2 giá trị một lúc. Mình gửi kèm theo đây file ví dụ với nội dung như thế này: - Mình có một danh sách các trạm (vị trí) có tọa độ (kinh độ và vĩ độ). Đối với mỗi vị trí, mình muốn tìm vị trí gần nó nhất và cự ly giữa các vị trí ấy. Có thể viết 2 hàm khác nhau cho 2 cột để đưa ra 2 yêu cầu khác nhau ấy nhưng như thế sẽ phải chạy hàm chính 2 lần làm cho chương trình chạy chậm lại. Nếu có thể trả về đồng thời 2 giá trị ấy thì sẽ không phải chạy hàm 2 lần. - Vì mình không thể attack đc file nên mình gửi lên host khác và post link tại đây. Mong bạn down file dùm. http://rapidshare.com/files/331125593/Khoang_cach.xls.html P/s: Vì là file ví dụ nên số lượng trạm ít nhưng khi số lượng lên đến vài nghìn thậm chí vài chục nghìn trạm thì việc tính toán sẽ rất tốn thời gian P/s2: Có ai có thể giúp mình xem tại sao mình không thể attack file lên đc. Toàn báo fail thôi &&&%$R SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Bạn thử kiểm lại theo cách tính mình đúng chưa nha! Thật ra mình theo cảm tính thôi!
Đúng là ý mình thế mà. Mình muốn chỉ viết công thức 1 lần để nó trả về cùng 2 giá trị một lúc. Mình gửi kèm theo đây file ví dụ với nội dung như thế này: - Mình có một danh sách các trạm (vị trí) có tọa độ (kinh độ và vĩ độ). Đối với mỗi vị trí, mình muốn tìm vị trí gần nó nhất và cự ly giữa các vị trí ấy. Nhấp chuột vào đây để mở rộng...
PHP: Sao chép. Option Explicit: Option Base 1 Function TramGanNhat(Tram As Range, LookupRange As Range) Dim Long_ As Double, Lat_ As Double, Min_ As Double, Temp As Double Dim Xx As Double, yY As Double Dim Clls As Range: Dim MyAdd As String Long_ = Tram.Offset(, 1).Value: Lat_ = Tram.Offset(, 2).Value Min_ = 10 ^ 6 For Each Clls In LookupRange.Cells(1, 1).Resize(LookupRange.Rows.Count) If Clls.Value <> Tram.Value Then Xx = Clls.Offset(, 1).Value: yY = Clls.Offset(, 2).Value Temp = Abs(((Xx - Long_) ^ 2 + (yY - Lat_) ^ 2) ^ (1 / 2)) If Temp < Min_ Then Min_ = Temp: MyAdd = Clls.Address End If End If Next Clls ReDim MDL(1, 2) As Variant MDL(1, 1) = MyAdd: MDL(1, 2) = Min_ TramGanNhat = MDL End Function

File đính kèm

  • GPE.rar GPE.rar 9.9 KB · Đọc: 101
M

MNThao

Thành viên mới
Tham gia 16/12/09 Bài viết 17 Được thích 6
HYen17 đã viết: PHP: Sao chép. Option Explicit: Option Base 1 Function TramGanNhat(Tram As Range, LookupRange As Range) Dim Long_ As Double, Lat_ As Double, Min_ As Double, Temp As Double Dim Xx As Double, yY As Double Dim Clls As Range: Dim MyAdd As String Long_ = Tram.Offset(, 1).Value: Lat_ = Tram.Offset(, 2).Value Min_ = 10 ^ 6 For Each Clls In LookupRange.Cells(1, 1).Resize(LookupRange.Rows.Count) If Clls.Value <> Tram.Value Then Xx = Clls.Offset(, 1).Value: yY = Clls.Offset(, 2).Value Temp = Abs(((Xx - Long_) ^ 2 + (yY - Lat_) ^ 2) ^ (1 / 2)) If Temp < Min_ Then Min_ = Temp: MyAdd = Clls.Address End If End If Next Clls ReDim MDL(1, 2) As Variant MDL(1, 1) = MyAdd: MDL(1, 2) = Min_ TramGanNhat = MDL End Function Nhấp chuột vào đây để mở rộng...
Thật sự là mình rất rất cảm ơn bạn HYen17 đã cho mình đoạn code thật sự rất đơn giản và đúng là cái mà mình đang cần. Tuy nhiên bạn có thể cho mình hỏi một số điểm mà thật sự mình chưa hiểu hết về đoạn code này: 1. Câu lệnh "For Each Clls In LookupRange.Cells(1, 1).Resize(LookupRange.Rows.Count)" bản chất của nó là gì hả bạn? Mình có thể hiểu là lặp lại với mỗi một cell trong cái lookuprange nhưng phần sau từ chỗ resize thì mình chịu, chẳng hiểu mô tê gì nữa cả :-= 2. phần ở dưới cùng ReDim MDL(1, 2) As Variant. Tại sao lại dùng Redim hả bạn :-=. vì biến MDL mình đã dùng đến bao h đâu? 3. Trong file bạn gửi kèm theo có thêm cái sub cuối cùng (Sub Mmm(): End Sub) mình không biết nó có ý nghĩa gì không? 4. Còn câu này có lẽ hơi ngớ ngẩn :-=. Mình thấy nhiều khi trên cùng 1 dòng bạn viết 2 câu lệnh ngăn cách nhau bởi dấu ":". Cho mình hỏi nó có khác gì với việc mình viết trên cùng một dòng không hả bạn? Mình viết code cho excel cũng nhiều nhưng thực sự mình viết thuần VB quá. Hôm nay mới đc mở mang tầm mắt, dùng nhiều cái có sẵn trong excel hỗ trợ cho mình. Một lần nữa thanks bạn nhiều nhiều.}}}}} À, còn cái mà bạn nói là tổ hợp phím dành cho mảng có phải là Ctrl+Shift+Enter không hả bạn :-=. Mình không biết tổ hợp phím này, dùng file của bạn mãi mà không trả về 2 giá trị đc, hỏi cụ Google mãi mới biết nhưng không biết liệu đã chuẩn chưa. Mong bạn chỉ giáo thêm SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Thật ra ban đầu mình không muốn trả lời bài này, vì Bạn đưa lên tại 2 nơi cùng 1 nội dung http://giaiphapexcel.com/forum/showthread.php?t=32427
1. Câu lệnh "For Each Clls In LookupRange.Cells(1, 1).Resize(LookupRange.Rows.Count)" bản chất của nó là gì hả bạn? Mình có thể hiểu là lặp lại với mỗi một cell trong cái lookuprange nhưng phần sau từ chỗ resize thì mình chịu, chẳng hiểu mô tê gì nữa cả Nhấp chuột vào đây để mở rộng...
Câu này có nghĩa là lặp lại với ô đầu tiên của vùng LookUpRange, nhưng mở rọng với số hàng = với số hàng tính được của LookUpRange (Thực chất là vùng cột đầu tiên của LookUpRange đó mà.
2. phần ở dưới cùng ReDim MDL(1, 2) As Variant. Tại sao lại dùng Redim hả bạn. vì biến MDL mình đã dùng đến bao h đâu? Nhấp chuột vào đây để mở rộng...
Bạn muốn ngâm cứu về mảng thì tự ngâm cứu tìm hiểu thôi; Trên GPE cũng đã đề cập đến; Để sau & tự tìm nha!
3. Trong file bạn gửi kèm theo có thêm cái sub cuối cùng (Sub Mmm(): End Sub) mình không biết nó có ý nghĩa gì không? Nhấp chuột vào đây để mở rộng...
Có cái nớ, mình sẽ tìm đấn nội dung hàm nhanh hơn với {F8}; Nếu không thì chỉ {F11} mà thôi
4. Còn câu này: Mình thấy nhiều khi trên cùng 1 dòng bạn viết 2 câu lệnh ngăn cách nhau bởi dấu ":". Nhấp chuột vào đây để mở rộng...
Để macro nằm toàn bộ trên trang màn hình mà ta khỏi dùng con trượt biên fải - Lười í mà!
À, còn cái mà bạn nói là tổ hợp phím dành cho mảng có phải là Ctrl+Shift+Enter không hả bạn Nhấp chuột vào đây để mở rộng...
Đó cũng là 1 cách nói; Tiếng Việt ta cũng hay & fong fú lắm đó nha. cavoi54

cavoi54

Thành viên mới
Tham gia 18/7/11 Bài viết 31 Được thích 0 Ma trậ n Excel, cá c bạ n chỉ dùm thêm

File đính kèm

  • Book1.xls Book1.xls 57 KB · Đọc: 48
SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Mình thấy vài chổ còn lấn cấn, như (*) Sao bạn không khai báo kiểu của các biến là Double cho hàm của bạn tổng quát hơn? (*) . . . . . Thân ái! quocgiacan

quocgiacan

-⍟-
Tham gia 22/3/08 Bài viết 3,392 Được thích 5,910 Giới tính Nam
LêXuânQuý đã viết: có thể giải quyết vấn đề nối các ký tự trong 1 ma trận bằng công thức không nhỉ: VD: ma trận gốc là {1,2,3,4} cho kết quả là 1234 Nhấp chuột vào đây để mở rộng...
Thử: =SUM({1,2,3,4}*10^(4-{1,2,3,4})) quocgiacan

quocgiacan

-⍟-
Tham gia 22/3/08 Bài viết 3,392 Được thích 5,910 Giới tính Nam
LêXuânQuý đã viết: anh cho em hỏi nguyên tắc của phép tính này là gì vậy ạ, sao lại ra được kết quả như vậy, em cảm ơn Nhấp chuột vào đây để mở rộng...
Là cách nhân hai mảng 1 chiều ngang: {1,2,3,4} x {1000,100,10,1} = {1000, 200, 30, 4} --> SUM({1000, 200, 30, 4})= 1234 Chúc bạn ngày vui. quocgiacan

quocgiacan

-⍟-
Tham gia 22/3/08 Bài viết 3,392 Được thích 5,910 Giới tính Nam
LêXuânQuý đã viết: vậy nếu phần tử mảng là dạng text thì có cách nào không anh Nhấp chuột vào đây để mở rộng...
"Thay lời muốn nói" xoành xoạch há! Nối mảng chuỗi thì dùng 'bùa phép' của anh @huuthang_bd. Xem file kèm nha bạn.

File đính kèm

  • Noichuoi.xlsx Noichuoi.xlsx 8.7 KB · Đọc: 10
Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.

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

K Các nút Buttom, Combobox, Textbox bị thay đổi kích thước ... (1 người xem)
  • kaoehtkid
  • Thứ hai lúc 19:04
  • Những vấn đề chung
Trả lời 13 Đọc 258 Hôm nay lúc 19:07 ongke0711 ongke0711 HeSanbi Thuật ngữ "Đối chiếu Unicode" quan trọng trong việc xử lý chuỗi ký tự
  • HeSanbi
  • Thứ bảy lúc 15:41
  • Xử lý chuỗi ký tự
Trả lời 2 Đọc 205 Hôm nay lúc 17:38 HeSanbi HeSanbi huuthang_bd Cùng xây dựng file Gia Phả
    • Thích
  • huuthang_bd
  • 30/12/13
  • Xây dựng ứng dụng.
Trả lời 43 Đọc 21K Hôm nay lúc 15:48 Maika8008 Maika8008 Nguyenkhang2404 Tính định mức sản phẩm
    • Chấp nhận
  • Nguyenkhang2404
  • 24/7/25
  • Hàm và công thức Excel
Trả lời 11 Đọc 900 Hôm nay lúc 14:27 nguyenanhtruong2409 N T Lọc dự liệu với hai điều kiện
  • tiny1010
  • 16/3/10
  • Cấu trúc dữ liệu Excel và việc Xử lý dữ liệu
Trả lời 18 Đọc 7K Hôm nay lúc 14:11 nguyenanhtruong2409 N N Tổng hợp 2 sheet khác nhau (có 1 cột dữ liệu trùng) trong goole sheet (3 người xem)
  • Na7979
  • Hôm nay lúc 14:01
  • Google Sheets
Trả lời 0 Đọc 4 Hôm nay lúc 14:01 Na7979 N D
  • Question Question
Tách dòng tự động theo điều kiện bằng VBA
    • Cười
  • duongnhuxuyen
  • 12/12/25
  • Lập Trình với Excel
Trả lời 17 Đọc 395 Hôm nay lúc 12:04 ptm0412 ptm0412 P Lỗi hàm VBA phải add-in sau mỗi lần mở file (1 người xem)
  • phamdinh.huy.aladin@gmail
  • Thứ hai lúc 10:18
  • Hàm và công thức Excel
Trả lời 7 Đọc 226 Hôm nay lúc 08:11 minhnghia123 M PhanTuHuong Nếu diễn đàn GPE đóng cửa?
    • Thích
    • Yêu thích
  • PhanTuHuong
  • Chủ nhật lúc 23:46
  • Thư giãn
Trả lời 18 Đọc 616 Hôm nay lúc 00:08 Gà Con yêu VBA Gà Con yêu VBA M Sai lệch vùng dữ liệu khi tạo Name Range bằng VBA
    • Buồn
  • Mr_Siro
  • Thứ tư lúc 10:57
  • Giải thích, gỡ rối, xử lý lỗi công thức
Trả lời 5 Đọc 142 Hôm qua, lúc 13:23 Mr_Siro M P Tìm giá trị tồn kho đầu ngày (1 người xem)
  • ptthuongtn
  • Thứ tư lúc 15:15
  • Hàm và công thức Excel
Trả lời 3 Đọc 144 Hôm qua, lúc 11:22 Duy Tùng 9x Duy Tùng 9x skygatevn Xin giúp đỡ về việc áp dụng hàm phù hợp để phân tách dữ liệu
  • skygatevn
  • Thứ tư lúc 11:59
  • Hướng dẫn sử dụng các hàm trong Excel
Trả lời 3 Đọc 105 Thứ tư lúc 13:52 skygatevn skygatevn PhanTuHuong Bán sách Excel nâng cao để ủng hộ đồng bào bão lũ năm 2025!
    • Yêu thích
  • PhanTuHuong
  • 10/12/25
  • Câu lạc bộ hoạt động xã hội
Trả lời 5 Đọc 323 Thứ tư lúc 12:43 GPE-Trợ Lý GPE-Trợ Lý D Xin giúp.......Kết hợp countifs và Sumproduct để đếm dữ liệu và tính số lượng tổng không trùng lặp với nhiều điều kiện
  • dieppk.nb92
  • Chủ nhật lúc 01:22
  • Hàm và công thức Excel
Trả lời 14 Đọc 430 Thứ tư lúc 10:20 dieppk.nb92 D GPE-Trợ Lý CHUNG TAY HƯỚNG VỀ MIỀN TRUNG NĂM 2025
    • Thích
  • GPE-Trợ Lý
  • 24/11/25
  • Câu lạc bộ hoạt động xã hội
Trả lời 12 Đọc 902 Thứ tư lúc 07:38 PhanTuHuong PhanTuHuong HeSanbi
  • Đã giải quyết
WeatherXL - Ứng dụng lấy dữ liệu Thời tiết siêu nhanh (***Đang phát triển lại)
    • Thích
    • Yêu thích
  • HeSanbi
  • 30/5/20
  • Lập Trình với Excel
Trả lời 92 Đọc 27K Thứ ba lúc 19:57 Maika8008 Maika8008 ongke0711
  • Question Question
Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (2 người xem)
    • Thích
    • Yêu thích
    • Cảm ơn
  • ongke0711
  • 6/10/24
  • Lập Trình với Excel
4 5 6 Trả lời 580 Đọc 83K Thứ ba lúc 08:39 pycckuu410 pycckuu410 E
  • Đã giải quyết
VBA code thay thế cho pivot-table lấy top 10, bottom 10
    • Thích
  • eagle12
  • 8/12/25
  • Lập Trình với Excel
Trả lời 24 Đọc 590 Thứ hai lúc 16:19 eagle12 E H tìm kiếm nội dung liên kết giữa cac bảng , cac sheet trong excel
  • H_P
  • Thứ bảy lúc 14:23
  • Tìm kiếm, dò tìm và tham chiếu
Trả lời 2 Đọc 156 Thứ hai lúc 05:30 DeTong D N Công thức trích xuất riêng các ký tự trong chuỗi họ tên
  • Ngựa con 2002
  • Thứ bảy lúc 23:07
  • Xử lý chuỗi ký tự
Trả lời 7 Đọc 192 Chủ nhật lúc 18:57 Ngựa con 2002 N Xem thêm… Chia sẻ: Facebook X Bluesky LinkedIn Reddit Pinterest Tumblr WhatsApp Email Chia sẻ Link

Thành viên có số lượng bài viết cao nhất tháng

  • Maika8008 37
  • thanthanhan 22
  • dungpham01 19
  • ongke0711 19
  • eagle12 16
  • ptm0412 16
  • nguyenanhtruong2409 16
  • Phan Thế Hiệp 13
  • HUONGHCKT 12
  • vic_it 11
  • nhhnam 10
  • pycckuu410 10
  • Vũ Hải Sơn 9
  • HeSanbi 9
  • dieppk.nb92 8
  • Gà Con yêu VBA 8
  • bsbnhh 7
  • duongnhuxuyen 7
  • Hana2610 6
  • kaoehtkid 6

Thành viên có điểm tương tác cao nhất tháng

  • Phan Thế Hiệp 64
  • Maika8008 31
  • thanthanhan 18
  • ongke0711 17
  • ptm0412 16
  • HeSanbi 12
  • dungpham01 11
  • HUONGHCKT 9
  • eagle12 9
  • Cúc Hr 8
  • dieppk.nb92 6
  • Mr.hieudoanxd 5
  • befaint 5
  • pycckuu410 5
  • SA_DQ 5
  • Phuocam 4
  • nguyenanhtruong2409 4
  • nhhnam 2
  • Mr_Siro 2
  • Gà Con yêu VBA 2

Thời gian đếm ngược.

000 Ngày 00 Giờ 00 phút 00 giây Thân mời tham dự sự kiện sinh nhật GPE 2025
  • Trang chủ
  • Diễn đàn
  • Excel và Kỹ Thuật
  • Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Back Top Bottom

Từ khóa » Cách Nhân Ma Trận Trong Excel