Hàm VBA thao tác với ma trận

Liên hệ QC

NguyenNgocSon

KEEP WALKING
Tham gia
4/4/08
Bài viết
280
Được thích
833
Nghề nghiệp
Ths. Cầu hầm
Mình có vấn đề thao tác với mảng như file
không biết có cách nào giải quyết vấn đề này ?
Thân !
 

File đính kèm

  • Thao tac mang.xls
    33.5 KB · Đọc: 53
Bạn nói rằng:
+ Khi thực hiện hàm chỉ cần chọn 1 ô bất kỳ để gõ hàm, sau đó thì hàm sẽ tự chọn 6 hàng, 6 cột để tính ra kết quả của hàm này.
Chỉ gõ công thức tại 1 cell, có cần quét gì đâu mà bẫy lỗi
Dòng dứơi là e viết:"+ Có thể bẫy lỗi như sau không ạ: Khi mình quét chọn không đủ 6 hàng , 6 cột sẽ đưa ra thông báo lỗi" với mục đích là nếu không xử lý được như yêu cầu trên thì mình dùng cách chọn 6 hàng, 6 cột, nếu không được mới thông báo lỗi.
Thực ra 2 ý khác nhau ạ
Em cám ơn !
 
Upvote 0
Định dạng với mảng

Em có đoạn hai đoạn mã sau:
PHP:
' Ham danh so Thu tu
Public Function Vecto(SoAn As Integer)
Dim A(), n
n = SoAn
ReDim A(1 To n)
For i = 1 To n
A(i) = i
Next i
Vecto = A
Call Macro1
End Function
' Thu tuc dinh dang so
Sub Macro1()
    Selection.NumberFormat = """(""#0"")"""
End Sub
Em muốn hỏi cách đưa định dạng trong Macro1 vào Hàm Vecto để các giá trị trong Vecto có định dạng """(""#0"")"""
Em cám ơn !
 
Upvote 0
Em có đoạn hai đoạn mã sau:
PHP:
' Ham danh so Thu tu
Public Function Vecto(SoAn As Integer)
Dim A(), n
n = SoAn
ReDim A(1 To n)
For i = 1 To n
A(i) = i
Next i
Vecto = A
Call Macro1
End Function
' Thu tuc dinh dang so
Sub Macro1()
    Selection.NumberFormat = """(""#0"")"""
End Sub
Em muốn hỏi cách đưa định dạng trong Macro1 vào Hàm Vecto để các giá trị trong Vecto có định dạng """(""#0"")"""
Em cám ơn !
Bạn có 2 cách để lựa chọn:
- Hoặc là chuyển toàn bộ sang chuổi (dùng hàm Format để định dạng) trực tiếp trong các phần tử của mảng
- Hoặc là làm xong mọi việc, gán giá trị xuống sheet, sau đó sẽ định dạng các cell
 
Upvote 0
Hàm kiểm tra mảng đối xứng

Em mới viết hàm sau để kiểm tra xem mảng nhập vào có đối xứng không. Code như sau:
PHP:
Public Function MTDX(Matrakiemtra As Range)
Dim m, n, i, j As Integer
m = Matrakiemtra.Rows.Count
n = Matrakiemtra.Columns.Count
For i = 1 To m
For j = 1 To n
If Matrakiemtra(i, j) = Matrakiemtra(j, i) Then
MsgBox "Ma tran doi xung qua duong cheo chinh", vbCritical, "Nguyen Ngoc Son"
Else
MsgBox "Ma tran khong doi xung qua duong cheo chinh", vbCritical, "Nguyen Ngoc Son"
End If
Next j
Next i
End Function
Như vậy có cần thiết hàm trả về kết quả không? Mong các bác chỉ giúp ( Vì em dùng thông báo trên hàm khó thoát khỏi thông báo)
Em cám ơn!
Thân !
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Public Function MTDX(Matran As Range) As Boolean
Dim m, n, i, j As Integer
MTDX = True
m = Matran.Rows.Count
n = Matran.Columns.Count
For i = 1 To m
    For j = 1 To n
        If Matran(i, j) <> Matran(j, i) Then
            MTDX = False
            Exit Function
        End If
    Next j
Next i
End Function

Cú pháp hàm:
=MTDX(A1:C3)
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bác,
E là thành viên mới, đang phải tự học VBA vì công việc có liên quan. Hôm nay e có 1 vấn đề liên quan đến ma trận, mảng mà chưa biết cách giải quyết, mong các bác giúp e. Thank in advance.

Đề bài :(hơi dài 1 chút, mong các bác cố gắng đọc, rất thú vị :))
Cho 1 dẫy số : 2,4,3,5,1,4,3,6,5,7,2,6,3,5,2,3,1,8,2,4,1,8,6

Yêu cầu :
Lập trình thuật toán (Tên tiếng anh là Rainflow) cho dẫy số trên. Tính chất thuật toán Rainflown :
- Xét 4 số đầu tiên trong 1 dẫy nếu thỏa mãn điều kiện :số thứ 2 và 3 nằm trong khoảng số thứ 1 và 4. thì lấy số thứ 2 và 3 ra khỏi dẫy(remove) ĐẾM vào 1 ma trận n*n (n là số lớn nhất trong dẫy, ở đây n=8). Sau khi số thứ 2 và thứ 3 bị lấy ra khỏi dẫy thì ta lại xét từ đầu 4 số đầu tiên, nếu thỏa mãn điều kiện (thì làm như trên), nếu không thỏa mãn điều kiện ta xét tiếp 4 số tiếp theo (số đầu tiên tính từ số thứ 2)
- ĐẾM cặp số thỏa mãn vào ma trận như thế nào? Số thứ 2 = vị trí hàng trong ma trận(row), số thứ 3= vị trí cột trong ma trận. Nếu có 1 cặp số thì vị trí đó đếm 1, nếu có 2 cặp số giống nhau thì vị trí đó đếm 2....
- Cuối cùng ta in ra dẫy số rút gọn(là dẫy số còn lại của dẫy trên sau khi các cặp số thỏa mãn bị remove)

Thuật toán trình bầy hơi dài và khó hiểu 1 chút. E xin được tính toán bằng tay với dẫy số trên cho các bác hiểu :
- Dấy số đã cho 2,4,3,5,1,4,3,6,5,7,2,6,3,5,2,3,1,8,2,4,1,8,6
- Xét 4 số đầu tiên :2,4,3,5 Ta thấy 4,3 thuộc khoảng 2,5. Vậy remove 4,3 cho vào ma trận 8*8 trong đó vị trí 4*3(hàng 4 cột 3) trong ma trận sẽ đếm giá trị là 1
- Sau khi 4,3 bị remove. Dẫy số sẽ là 2,5,1,4,3,6,5,7,2,6,3,5,2,3,1,8,2,4,1,8,6
- Xét 4 số đầu tiên 2,5,1,4 ta thấy ko thỏa mãn (5,1 không nằm trong 2,4)
- Lại xét tiếp 4 số tiếp theo(tính từ số thứ 2) là 5,1,4,3 ta thấy cũng không thỏa mãn
- Lại xét tiếp 4 số tiếp theo(tính từ số thứ 2 của dẫy trên) là 1,4,3,6 ta thấy thỏa mãn. Vậy cặp số 4,3 được đếm lần 2 trong ma trận 8*8 ở vị trí 4*3
- Dẫy số mới sẽ là 2,5,1,6,5,7,2,6,3,5,2,3,1,8,2,4,1,8,6
Cứ tiếp tục xét như vậy.....

Thuật toán trên e đã code được rồi, nhưng phần ĐẾM ma trận e chưa biết code. Mong các bác cao thủ giúp e, xin cám ơn nhiều. Dưới đây là đoạn code của e về thuật toán :

Sub Button1_Click()

' Creates Input and Output arrays
Dim InputArray As Variant
Dim OutputCollection As Variant

' Set input array
InputArray = CreateArrayFromRange("A2:A24")

' Calculates
Set OutputCollection = CalcAlgorithm(InputArray)

' Prints the result collection out into the shells
PrintCollection OutputCollection

End Sub

' Copies cells to an array
Function CreateArrayFromRange(yourRange As String) As Variant

Dim arrRng()
Dim Rng As range

x = 0

For Each Rng In range(yourRange)
ReDim Preserve arrRng(x)
arrRng(x) = Rng.Value
x = x + 1
Next Rng

CreateArrayFromRange = arrRng

End Function

' This function peforms the main algorithm.
Function CalcAlgorithm(InputArray As Variant) As Collection

' Result is an array that contains the matrix (2-dimensional array)
Dim Result As New Collection


' Checks whether the array's length satisfies the min. length
If UBound(InputArray) < LengthOfSegment Then
MsgBox "Cannot calculate!"
End If

' Copies the input array to a collection
Dim InputCollection As New Collection
Set InputCollection = CopyArrayToCollection(InputArray)

' BEGIN EXECUTE ALGORITHM

Dim CheckBegin, CheckEnd, CheckCount As Integer
CheckBegin = 1
CheckEnd = CheckBegin + 3
CheckCount = InputCollection.Count

Dim MatrixPointIndex As Integer
MatrixPointIndex = 0

Do While CheckEnd <= CheckCount

Dim LowerBound, UpperBound, CheckTarget1, CheckTarget2 As Double
LowerBound = InputCollection(CheckBegin)
UpperBound = InputCollection(CheckEnd)
CheckTarget1 = InputCollection(CheckBegin + 1)
CheckTarget2 = InputCollection(CheckBegin + 2)

Dim IsTarget1Satisfied, IsTarget2Satisfied As Boolean
IsTarget1Satisfied = Check(LowerBound, UpperBound, CheckTarget1)
IsTarget2Satisfied = Check(LowerBound, UpperBound, CheckTarget2)

Dim NewMatrixPoint As MatrixPoint

' If at least one targeted number is satified then reset the checking process (do at begin)
If IsTarget1Satisfied = True And IsTarget2Satisfied = True Then
' Adds a new matrix point to the result list
Set NewMatrixPoint = New MatrixPoint
NewMatrixPoint.DimensionX = CheckTarget1
NewMatrixPoint.DimensionY = CheckTarget2
MatrixPointIndex = MatrixPointIndex + 1
Result.Add NewMatrixPoint, CStr(MatrixPointIndex)
' Removes 2 targets out of the input collection
InputCollection.Remove (CheckBegin + 1)
InputCollection.Remove (CheckBegin + 1)
' Reset beginning check-position
CheckBegin = 1
Else
CheckBegin = CheckBegin + 1
End If

CheckEnd = CheckBegin + 3
CheckCount = InputCollection.Count

Loop



' END EXECUTE ALGORITHM

' Returns the calculated result
Set CalcAlgorithm = Result

End Function

' This function copies an array to a new collection
Function CopyArrayToCollection(InputArray As Variant) As Collection
Dim Output As New Collection

For i = 0 To UBound(InputArray)
Output.Add (InputArray(i))
Next i

Set CopyArrayToCollection = Output
End Function

' Checks whether the target number is in the given range (lowerbound <= x <= upperbound)
Function Check(ByVal LowerBound As Double, ByVal UpperBound As Double, ByVal Target As Double) As Boolean
If Target >= LowerBound And Target <= UpperBound Then
Check = True
ElseIf Target <= LowerBound And Target >= UpperBound Then
Check = True
Else
Check = False
End If

End Function

' Print a given collection to shells
Sub PrintCollection(ByRef InputCollection As Variant)
For Each Point In InputCollection
Debug.Print "(X = " + CStr(Point.DimensionX) + ", Y = " + CStr(Point.DimensionY) + ")"
MsgBox "(X = " + CStr(Point.DimensionX) + ", Y = " + CStr(Point.DimensionY) + ")"
' TODO the Count of Matrix????
Next Point
End Sub


-
 
Upvote 0
Chào các bác,
Đề bài :(hơi dài 1 chút, mong các bác cố gắng đọc, rất thú vị :))
Cho 1 dẫy số : 2,4,3,5,1,4,3,6,5,7,2,6,3,5,2,3,1,8,2,4,1,8,6

Yêu cầu :
Lập trình thuật toán (Tên tiếng anh là Rainflow) cho dẫy số trên. Tính chất thuật toán Rainflown :
- Xét 4 số đầu tiên trong 1 dẫy nếu thỏa mãn điều kiện :số thứ 2 và 3 nằm trong khoảng số thứ 1 và 4. thì lấy số thứ 2 và 3 ra khỏi dẫy(remove) ĐẾM vào 1 ma trận n*n (n là số lớn nhất trong dẫy, ở đây n=8). Sau khi số thứ 2 và thứ 3 bị lấy ra khỏi dẫy thì ta lại xét từ đầu 4 số đầu tiên, nếu thỏa mãn điều kiện (thì làm như trên), nếu không thỏa mãn điều kiện ta xét tiếp 4 số tiếp theo (số đầu tiên tính từ số thứ 2)
- ĐẾM cặp số thỏa mãn vào ma trận như thế nào? Số thứ 2 = vị trí hàng trong ma trận(row), số thứ 3= vị trí cột trong ma trận. Nếu có 1 cặp số thì vị trí đó đếm 1, nếu có 2 cặp số giống nhau thì vị trí đó đếm 2....
- Cuối cùng ta in ra dẫy số rút gọn(là dẫy số còn lại của dẫy trên sau khi các cặp số thỏa mãn bị remove)
Tôi làm mới hoàn toàn chứ không làm theo code của bạn. Test code bằng file đính kèm.
PHP:
Sub GPE()
ActiveSheet.UsedRange.Offset(, 1).ClearContents
Dim InputArr, Result(), S1 As Long, S2 As Long, S3 As Long, S4 As Long, n As Long
InputArr = Range([A2], [A65536].End(xlUp)).Value
n = Application.WorksheetFunction.Max(Range([A2], [A65536].End(xlUp)))
ReDim Result(1 To n, 1 To n)
S1 = 1: S2 = 2: S3 = 3: S4 = 4
Do
    If (InputArr(S2, 1) >= InputArr(S1, 1)) And (InputArr(S3, 1) >= InputArr(S1, 1)) And (InputArr(S2, 1) <= InputArr(S4, 1)) And (InputArr(S3, 1) <= InputArr(S4, 1)) Then
        Result(InputArr(S2, 1), InputArr(S3, 1)) = Result(InputArr(S2, 1), InputArr(S3, 1)) + 1
        InputArr(S2, 1) = "":   InputArr(S3, 1) = ""
        S2 = S2 + 2: S3 = S3 + 2: S4 = S4 + 2
    Else
        S4 = S4 + 1: S3 = S4 - 1: S2 = S3 - 1: S1 = S2 - 1
    End If
Loop Until S4 > UBound(InputArr, 1)
[D2].Resize(n, n).Value = Result
With Application.WorksheetFunction
    InputArr = .Transpose(Split(.Trim(Join(.Transpose(InputArr)))))
End With
[B2].Resize(UBound(InputArr, 1)).Value = InputArr
End Sub
 

File đính kèm

  • GPE.rar
    9.7 KB · Đọc: 20
Upvote 0
Cám ơn bác huuthang_bd!
Phần code của bác có 1 chỗ chưa đúng ở chỗ điều kiện(IF) cho các S1, S2, S3, S4. Em đã sửa và thêm vào điều kiện Elseif nhưng cũng không ra đúng kết quả. Em cũng ko biết tại sao.
Theo tính toán bằng tay của em, với dẫy số trên thì kết quả phải trả về lần lượt :(4,3), (4,3),(6,5),(3,5),(2,6),(2,3),(7,1),(2,4),(1,8). Và dẫy số rút gọn là 2 5 1 8 6
Kết quả này cũng trùng với đoạn code e đã tự viêt.

Mong bác huuthang_bd xem lại giúp e. Cám ơn nhiều.

Sau đây là đoạn code của bác e đã sửa (Chỗ in mầu đỏ):

Sub GPE()
ActiveSheet.UsedRange.Offset(, 1).ClearContents
Dim InputArr, Result(), S1 As Long, S2 As Long, S3 As Long, S4 As Long, n As Long
InputArr = Range([A2], [A65536].End(xlUp)).Value
n = Application.WorksheetFunction.Max(Range([A2], [A65536].End(xlUp)))
ReDim Result(1 To n, 1 To n)
S1 = 1: S2 = 2: S3 = 3: S4 = 4
Do
If (InputArr(S4, 1) >= InputArr(S2, 1) >= InputArr(S1, 1)) And (InputArr(S4, 1) >= InputArr(S3, 1) >= InputArr(S1, 1)) Then
Result(InputArr(S2, 1), InputArr(S3, 1)) = Result(InputArr(S2, 1), InputArr(S3, 1)) + 1
InputArr(S2, 1) = "": InputArr(S3, 1) = ""
S2 = S2 + 2: S3 = S3 + 2: S4 = S4 + 2
ElseIf (InputArr(S4, 1) <= InputArr(S2, 1) <= InputArr(S1, 1)) And (InputArr(S4, 1) <= InputArr(S3, 1) <= InputArr(S1, 1)) Then
Result(InputArr(S2, 1), InputArr(S3, 1)) = Result(InputArr(S2, 1), InputArr(S3, 1)) + 1
InputArr(S2, 1) = "": InputArr(S3, 1) = ""
S2 = S2 + 2: S3 = S3 + 2: S4 = S4 + 2
Else
S1 = S1 + 1: S2 = S2 + 1: S3 = S3 + 1: S4 = S4 + 1
End If
Loop Until S4 > UBound(InputArr, 1)
[D2].Resize(n, n).Value = Result
With Application.WorksheetFunction
InputArr = .Transpose(Split(.Trim(Join(.Transpose(InputArr)))))
End With
[B2].Resize(UBound(InputArr, 1)).Value = InputArr
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bác huuthang_bd!
Phần code của bác có 1 chỗ chưa đúng ở chỗ điều kiện(IF) cho các S1, S2, S3, S4. Em đã sửa và thêm vào điều kiện Elseif nhưng cũng không ra đúng kết quả. Em cũng ko biết tại sao.
Theo tính toán bằng tay của em, với dẫy số trên thì kết quả phải trả về lần lượt :(4,3), (4,3),(6,5),(3,5),(2,6),(2,3),(7,1),(2,4),(1,8). Và dẫy số rút gọn là 2 5 1 8 6
Bạn trình bày lại cách bạn thực hiện thủ công xem từng bước xem như thế nào chứ theo những gì bạn mô tả tôi không làm ra kết quả như bạn được.
Nếu sửa lại code và theo như những gì bạn mô tả thì kết quả sẽ như thế này:
Có: 2, 4, 3, 5, 1, 4, 3, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 4, 3
Còn: 2, 5, 1, 4, 3, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 4, 3
Còn: 2, 5, 1, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 6, 5
Còn: 2, 5, 1, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 3, 5
Còn: 2, 5, 1, 7, 2, 6, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 2, 3
Còn: 2, 5, 1, 7, 2, 6, 1, 8, 2, 4, 1, 8, 6
Lấy: 2, 4
Còn: 2, 5, 1, 7, 2, 6, 1, 8, 1, 8, 6
 
Upvote 0
Cám ơn bác huuthang_bd !
E xin tính thủ công thuật toán của e cho bác xem!
Có: 2, 4, 3, 5, 1, 4, 3, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 4, 3
Còn: 2, 5, 1, 4, 3, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 4, 3
Còn: 2, 5, 1, 6, 5, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 6, 5
Còn: 2, 5, 1, 7, 2, 6, 3, 5, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 3, 5
Còn: 2, 5, 1, 7, 2, 6, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 2, 6
Còn: 2, 5, 1, 7, 2, 3, 1, 8, 2, 4, 1, 8, 6
Lấy: 2, 3
Còn: 2, 5, 1, 7, 1, 8, 2, 4, 1, 8, 6
Lấy: 7, 1
Còn: 2, 5, 1, 8, 2, 4, 1, 8, 6
Lấy: 2, 4
Còn: 2, 5, 1, 8, 1, 8, 6
Lấy: 8,1
Còn: 2, 5, 1, 8, 6

Mong bác xem lại phần code. E mới tìm hiểu về VBA nên cũng ko biết phải sửa đoạn code của bác như nào hic hic
 
Upvote 0
Vậy bạn lấy code này dùng:
PHP:
Sub GPE()
ActiveSheet.UsedRange.Offset(, 1).ClearContents
Dim InArr, MyArr(), Result(), s As Long, n As Long, i As Long
InArr = Range([A2], [A65536].End(xlUp)).Value
n = Application.WorksheetFunction.Max(Range([A2], [A65536].End(xlUp)))
ReDim Result(1 To n, 1 To n)
s = 1
Do
    If (InArr(s + 1, 1) >= InArr(s, 1)) And (InArr(s + 2, 1) >= InArr(s, 1)) And (InArr(s + 1, 1) <= InArr(s + 3, 1)) And (InArr(s + 2, 1) <= InArr(s + 3, 1)) Or (InArr(s + 1, 1) < InArr(s, 1)) And (InArr(s + 2, 1) < InArr(s, 1)) And (InArr(s + 1, 1) > InArr(s + 3, 1)) And (InArr(s + 2, 1) > InArr(s + 3, 1)) Then
        Result(InArr(s + 1, 1), InArr(s + 2, 1)) = Result(InArr(s + 1, 1), InArr(s + 2, 1)) + 1
        ReDim MyArr(1 To UBound(InArr, 1) - 2, 1 To 1)
        For i = 1 To s
            MyArr(i, 1) = InArr(i, 1)
        Next
        For i = s + 3 To UBound(InArr, 1)
            MyArr(i - 2, 1) = InArr(i, 1)
        Next
        InArr = MyArr
        Erase MyArr
        s = 1
    Else
        s = s + 1
    End If
Loop Until s + 3 > UBound(InArr, 1)
[D2].Resize(n, n).Value = Result
[B2].Resize(UBound(InArr, 1)).Value = InArr
End Sub
 
Upvote 0
Góp thêm một code nữa
Mã:
Public Sub Ma()
    Dim Vung, I, J, K, Tam(1 To 4), Wf, Mg(), M
    Set Wf = Application.WorksheetFunction
    Vung = Range([a2], [a100].End(xlUp)).Value
    ReDim Mg(1 To Wf.Max(Vung), 1 To Wf.Max(Vung))
        For I = 1 To UBound(Vung) - 4
            If I = K - 3 Then Exit Sub
                For J = 1 To 4
                    Tam(J) = Vung(I + J - 1, 1)
                Next J
                    If Tam(1) = Wf.Min(Tam) And Tam(4) = Wf.Max(Tam) Or Tam(1) = Wf.Max(Tam) And Tam(4) = Wf.Min(Tam) Then
                        Mg(Tam(2), Tam(3)) = Mg(Tam(2), Tam(3)) + 1
                        Vung(I + 1, 1) = "": Vung(I + 2, 1) = "": K = 0: [b2:b23].ClearContents
                            For J = 1 To UBound(Vung) - M
                                If Vung(J, 1) <> "" Then
                                    K = K + 1
                                    Vung(K, 1) = Vung(J, 1)
                                End If
                            Next J
                                I = 1: M = M + 2
                                [b2].Resize(K) = Vung
                                [c3].Resize(Wf.Max(Vung), Wf.Max(Vung)) = Mg
                    End If
        Next I
End Sub
Đang định Do...Loop thì Hữu Thắng đã "Đu" rồi. Quê quê, hổng thèm "Đu" nữa. Híc, tuổi trẻ nhanh thật
 

File đính kèm

  • CaiGiKhongBiet.xls
    34 KB · Đọc: 13
Upvote 0
Em muốn đặt tên vùng bằng VBA cho vùng: An-60:Bn ( Với n=61) thì khai báo bằng VBA như thế nào ?
 
Upvote 0
Em muốn đặt tên vùng bằng VBA cho vùng: An-60:Bn ( Với n=61) thì khai báo bằng VBA như thế nào ?
Đây là một trong các cách:
Mã:
Sub Test()
Dim Vung As Range, n As Long
n = 61
Set Vung = Range("A" & n - 60 & ":B" & n)
MsgBox Vung.Address
End Sub
 
Upvote 0
Khi thao tác với Textbox để nhớ lại kết quả của lần nhập trước vào textbox mình làm như nào ?
 
Upvote 0
Các câu hỏi càng ngày càng đi xa chủ đề "Hàm VBA thao tác với ma trận"
Sơn nên mở chủ đề mới hoặc tìm chủ đề khác thích hợp để hỏi.
 
Upvote 0
Theo cách xử lý ma trận của bạn chắc bạn đang nghiên cứu về tính toán kết cầu theo phương pháp Phần tử hữu hạn phải không?
 
Upvote 0
Web KT
Back
Top Bottom