Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
can any one help me in writing my own code for this matrix functions?
please |
#2
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
An array function must be entered in a group of cells. Let us say you
have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11. Select A9:D11 Type in the formula bar: =MMULT(A1:C2, D1:G3) Press Shift+Ctrl+Enter Excel will place the resulting matrix in these cells. From this point on, A9:D11 is a formula array and you can not delete part of it, only the entire array (when in an formula array, Ctrl+/ will select the entire array). To edit, select the entire range, click in the formula bar, edit and Shift+Ctrl+Enter again. MINVERSE will work in a similar manner. Select the destination and enter =MINVERSE(range). In this case of course, range must be a square matrix as should the input. HTH Kostis Vezerides |
#3
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
hello thanks for the reply but what i want is something differrent i
want to see the internal coding i mean how mmult access variables in the code and multiply in the code. can you help me in this regard? vezerid wrote: An array function must be entered in a group of cells. Let us say you have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11. Select A9:D11 Type in the formula bar: =MMULT(A1:C2, D1:G3) Press Shift+Ctrl+Enter Excel will place the resulting matrix in these cells. From this point on, A9:D11 is a formula array and you can not delete part of it, only the entire array (when in an formula array, Ctrl+/ will select the entire array). To edit, select the entire range, click in the formula bar, edit and Shift+Ctrl+Enter again. MINVERSE will work in a similar manner. Select the destination and enter =MINVERSE(range). In this case of course, range must be a square matrix as should the input. HTH Kostis Vezerides |
#4
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]() vezerid wrote: An array function must be entered in a group of cells. Let us say you have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11. Select A9:D11 Type in the formula bar: =MMULT(A1:C2, D1:G3) Press Shift+Ctrl+Enter Excel will place the resulting matrix in these cells. From this point on, A9:D11 is a formula array and you can not delete part of it, only the entire array (when in an formula array, Ctrl+/ will select the entire array). To edit, select the entire range, click in the formula bar, edit and Shift+Ctrl+Enter again. MINVERSE will work in a similar manner. Select the destination and enter =MINVERSE(range). In this case of course, range must be a square matrix as should the input. HTH Kostis Vezerides |
#5
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Ramki
The following code will emulate MMULT(). I have included some error checking so that you see the code for returning an Excel error value. The code below is not necessarily the best available but it illustrates to some degree how ranges and variables can communicate. Further work would require search in the .programming newsgroup. Also, for more explicit handling of array variables inside a VBA routine the online help on the Dim statement will be a good start. ============== Option Base 1 Function MatrixMult(m1 As Range, m2 As Range) As Variant Dim m 'This is the variable that will become an array and will be returned Dim a1, a2 'These are the variables into which we will read m1 and m2 Dim c As Range 'To be used in various checks. ' Error checking ' Any blanks or text in the cells? For Each c In m1 If Not IsNumeric(c.Value) Or IsEmpty(c) Then MatrixMult = CVErr(xlErrValue) Exit Function End If Next c For Each c In m2 If Not IsNumeric(c.Value) Or IsEmpty(c) Then MatrixMult = CVErr(xlErrValue) Exit Function End If Next c ' Do the two arrays have compatible dimensions? If m1.Columns.Count < m2.Rows.Count Then MatrixMult = CVErr(xlErrValue) End If ' Everything OK, now the operations ' First dimensionalize the output matrix ReDim m(m1.Rows.Count, m2.Columns.Count) ' Assign the ranges to the variables. No ReDim necessary here b/c of assignment a1 = m1 a2 = m2 ' Now the loop to calculate the output matrix For i = LBound(a1, 1) To UBound(a1, 1) For j = LBound(a2, 2) To UBound(a2, 2) tot = 0 For k = LBound(a1, 2) To UBound(a1, 2) tot = tot + a1(i, k) * a2(k, j) Next k m(i, j) = tot Next j Next i ' Finally we assign the matrix to the function name MatrixMult = m End Function <======================= HTH Kostis Vezerides |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
VBA function for "Mean" using Array as argument | Excel Worksheet Functions | |||
Array Functions | Excel Discussion (Misc queries) | |||
Array functions | Excel Discussion (Misc queries) | |||
# of Functions per cell | Excel Worksheet Functions | |||
VBA Import of text file & Array parsing of that data | Excel Discussion (Misc queries) |