Hỏi công thức mảng kiểm tra bằng ấn F9, hàm mảng VBA làm cách nào để biết kết quả?

Liên hệ QC

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Trước kia khi học công thức mảng em rất lúng túng, khi được sư phụ ndu chỉ muốn biết thành phần nào kêt quả như thế nào chỉ việc bôi đen rồi ấn F9 là xong. Rất dễ kiểm soát.

Vất đề của em bây giờ em muốn học VBA, xem đoạn Code này ý nghĩa thế nào, viết thế nó sẽ tác động đến phần nào, sai hay đúng thì có cách nào kiểm soát được nó không?

Em thấy có bài toán trên diễn đàn, đề bài của nó như thế này:

TongTPbangVBA.jpg


Em chạy Code của bác nmhung49, kết quả rất chuẩn nhưng em không biết ý nghĩa của đoạn Cells(kqrow + 1, 3).Value = arrkq trong đoạn sau:
PHP:
Sub testtong()
Dim arr, arrkq, lRow As Long, kqrow As Long
Range("c2,c6").ClearContents
arr = Range("c2:c10").Value
For lRow = 1 To UBound(arr, 1)

    If arr(lRow, 1) = "" Then
        kqrow = lRow
        arrkq = 0
    End If
    
    arrkq = arrkq + arr(lRow, 1)
    Cells(kqrow + 1, 3).Value = arrkq
    
Next

End Sub
có nghĩa là gì?

Em thắc mắc Câu lệnh nào thể hiện điền giá trị vào 2 ô C2, C10?
(Khi lRow=4 tức nó đang xét ở dòng 5, tại sao nó lại dùng kết quả đó quay lại điền ở ô C2 nhỉ?)

Em rất muốn trau rồi kiến thức VBA, nếu có thể xin mọi người giải thích giúp em những đoạn Code trên với.

Em xin cảm ơn nhiều.
 
Lần chỉnh sửa cuối:
PHP:
Sub testtong()
Dim arr, arrkq, lRow As Long, kqrow As Long ' khai báo biến chắc bạn biết rồi arr, arrkq khai biến dạng mạng
Range("c2,c6").ClearContents ' xóa dữ liệu ở 2 ô c2, c6
arr = Range("c2:c10").Value 'gán giá trị vùng C2:C10 vào mảng Arr
For lRow = 1 To UBound(arr, 1) ' dùng vòng lặp duyệt giá trị trong mạng

    If arr(lRow, 1) = "" Then ' Nếu giá trị mảng thứ lRow thứ là mảng dòng lRow, cột 1 bằng rỗng thì
        kqrow = lRow ' gán biến kqrow bằng dòng thứ lRow
        arrkq = 0 ' cho biến arrkq bằng = 0 nếu giá trị mảng thứ lRow đó bằng rỗng
    End If 'kết thúc câu lện if
    
    arrkq = arrkq + arr(lRow, 1) 'gán trị arr(lRow,1) vào arrkq cộng dồn 
    Cells(kqrow + 1, 3).Value = arrkq ' gán trị arrkq vào vị trị ô cần xuất ra kết quả ở đây là C2, C6
    
Next

End Sub 'kết thúc 1 thủ tục
Mình giải thích mong bạn hiểu, tức là khi nào nó thấy ô đó trống thi nó sẽ ghi nhớ giá trị của ô đó rồi, gán trị vào trong đó, cái đoạn code này chỉ mang tính cục bộ chưa bao quát hết nếu có dữ liệu thật thì dễ hơn
 
Upvote 0
Trước kia khi học công thức mảng em rất lúng túng, khi được sư phụ ndu chỉ muốn biết thành phần nào kêt quả như thế nào chỉ việc bôi đen rồi ấn F9 là xong. Rất dễ kiểm soát.

Vất đề của em bây giờ em muốn học VBA, xem đoạn Code này ý nghĩa thế nào, viết thế nó sẽ tác động đến phần nào, sai hay đúng thì có cách nào kiểm soát được nó không?

Em thấy có bài toán trên diễn đàn, đề bài của nó như thế này:

TongTPbangVBA.jpg


Em chạy Code của bác nmhung49, kết quả rất chuẩn nhưng em không biết ý nghĩa của đoạn Cells(kqrow + 1, 3).Value = arrkq trong đoạn sau:
PHP:
Sub testtong()
Dim arr, arrkq, lRow As Long, kqrow As Long
Range("c2,c6").ClearContents
arr = Range("c2:c10").Value
For lRow = 1 To UBound(arr, 1)

    If arr(lRow, 1) = "" Then
        kqrow = lRow
        arrkq = 0
    End If
    
    arrkq = arrkq + arr(lRow, 1)
    Cells(kqrow + 1, 3).Value = arrkq
    
Next

End Sub
có nghĩa là gì?

Em thắc mắc Câu lệnh nào thể hiện điền giá trị vào 2 ô C2, C10?
(Khi lRow=4 tức nó đang xét ở dòng 5, tại sao nó lại dùng kết quả đó quay lại điền ở ô C2 nhỉ?)

Em rất muốn trau rồi kiến thức VBA, nếu có thể xin mọi người giải thích giúp em những đoạn Code trên với.

Em xin cảm ơn nhiều.
Em chạy Code của bác nmhung49
Bạn nmhung49 còn rất trẻ & rất đẹp trai, không phải sinh năm 1949 đâu mà bạn gọi bằng .....bác (coi chừng bạn í buồn đấy)
.......muốn biết thành phần nào kêt quả như thế nào chỉ việc bôi đen rồi ấn F9 là xong. Rất dễ kiểm soát......
Ở công thức thì bấm F9, còn trong VBA thì bấm......F8
Trong của sổ Code, bạn bấm View ==> Locals Window
Thò anh tý vào của sổ Code ==> bấm một phát ==> bấm F8 một phát ==> code bôi vàng một dòng ==> nhìn xuống cửa sổ Locals xem các biến, các kết quả........nó làm trò gì ở đó
Cứ tuần tự bấm F8 cho tới khi hết code bạn sẽ hiểu code làm việc như thế nào, có đúng như ý của mình viết hông và .......sẽ hiểu lý do tại sao Khi lRow=4 tức nó đang xét ở dòng 5, tại sao nó lại dùng kết quả đó quay lại điền ở ô C2
Quá đã
Híc
 
Upvote 0
Mình giải thích mong bạn hiểu, tức là khi nào nó thấy ô đó trống thi nó sẽ ghi nhớ giá trị của ô đó rồi, gán trị vào trong đó, cái đoạn code này chỉ mang tính cục bộ chưa bao quát hết nếu có dữ liệu thật thì dễ hơn

Thực ra em không phải là không hiểu chút nào, em có suy nghĩ nhiều về các dòng lệnh này. Em chỉ thắc mắc là cái biến tạm arrkq nó chỉ xuất hiện ở những ô C thoả mãi điều kiện (cụ thể là C2, C6)? những ô C khác không xuất hiện khái niệm arrkg chăng.
 
Upvote 0
Bạn nmhung49 còn rất trẻ & rất đẹp trai, không phải sinh năm 1949 đâu mà bạn gọi bằng .....bác (coi chừng bạn í buồn đấy)

Ở công thức thì bấm F9, còn trong VBA thì bấm......F8
Trong của sổ Code, bạn bấm View ==> Locals Window
Thò anh tý vào của sổ Code ==> bấm một phát ==> bấm F8 một phát ==> code bôi vàng một dòng ==> nhìn xuống cửa sổ Locals xem các biến, các kết quả........nó làm trò gì ở đó
Cứ tuần tự bấm F8 cho tới khi hết code bạn sẽ hiểu code làm việc như thế nào, có đúng như ý của mình viết hông và .......sẽ hiểu lý do tại sao Khi lRow=4 tức nó đang xét ở dòng 5, tại sao nó lại dùng kết quả đó quay lại điền ở ô C2
Quá đã
Híc

Nhờ có thày chỉ cách, Em hiểu rồi thày ah. Hoá ra em hiểu nhầm công thức:
Cells(kqrow + 1, 3).Value = arrkq mà em cứ nghĩ nó là Cells(lRow + 1, 3).Value = arrkq.

Em cảm ơn thày rất nhiều.
 
Upvote 0
Nhờ có thày chỉ cách, Em hiểu rồi thày ah. Hoá ra em hiểu nhầm công thức:
Cells(kqrow + 1, 3).Value = arrkq mà em cứ nghĩ nó là Cells(lRow + 1, 3).Value = arrkq.

Em cảm ơn thày rất nhiều.
Qua đây mói thấy rằng việc đặt tên biến 1 cách khoa học cũng là 1 nghệ thuật... Bạn thích đặt gì thì code vẫn chạy, nhưng đặt sao để cho ta và mọi người khác cũng có thể tiện theo dỏi thì không phải ai cũng biết
Ta viết, ta hiểu là điều đương nhiên... nhưng liệu người khác có "theo" nỗi quá trình thông qua các tên biến hay không? (hay là nhìn 1 hồi rồi "chóng mặt" luôn?)
Thật ra, đặt tên biến cũng có những quy luật riêng, mục đích để ai cũng có thể hiểu phần nào ý nghĩa của biến thông qua tên biến
Ẹc... Ẹc... vụ này e rằng bạn và nmhung49 còn phải "đầu tư" thêm mới được
 
Upvote 0
Đây là lỗi đặt tên biến giống nhau quá gây nhầm lẫn.

Thí dụ lrow và kqrow: Vừa Anh, vừa Việt
nếu Việt thì là DongKQ ("KQ" đứng sau), nếu Anh thì là ResultRow. Tuy vậy, khi sử dụng, nó lại là số thứ tự của dòng (RowNumber), chứ không phải cả 1 dòng (ResultRow).

Thí dụ 2: tên biến arrkq gây nhầm lẫn là 1 biến mảng trong khi thực chất nó là 1 biến đơn.

Toàn bộ đoạn code của nmanhhung đẹp trai rất đơn giản, nhưng chính vì tên biến không tượng hình tượng thanh, thậm chí tượng hình sai, làm cho đọc khó hiểu.

Cả 2 thí dụ trên lại không có chữ nào viết hoa. Nếu tên biến viết tắt từ 2 từ trở lên, chữ cái đầu từ phải viết hoa. Viết hoa 1 vài ký tự còn có điều lợi khác mà GPE cũng đã nói nhiều lần.
 
Lần chỉnh sửa cuối:
Upvote 0
Em thấy có bài toán trên diễn đàn, đề bài của nó như thế này:

TongTPbangVBA.jpg


Em chạy Code của bác nmhung49:
PHP:
Sub testtong()
Dim arr, arrkq, lRow As Long, kqrow As Long
Range("c2,c6").ClearContents
arr = Range("c2:c10").Value
For lRow = 1 To UBound(arr, 1)

    If arr(lRow, 1) = "" Then
        kqrow = lRow
        arrkq = 0
    End If
    
    arrkq = arrkq + arr(lRow, 1)
    Cells(kqrow + 1, 3).Value = arrkq
    
Next

End Sub
Em nhận thấy nếu dòng đầu tiên không phải là vùng thì ("c2:c10") thì Cells(kqrow + 1, 3).Value = arrkq sẽ không còn đúng nữa. Vậy thì mình phải làm thế nào để các mảng sẽ tự động thay đổi tham chiếu ah?
 
Lần chỉnh sửa cuối:
Upvote 0
Em nhận thấy nếu dòng đầu tiên không phải là vùng thì ("c2:c10") thì Cells(kqrow + 1, 3).Value = arrkq sẽ không còn đúng nữa. Vậy thì mình phải làm thế nào để các mảng sẽ tự động thay đổi tham chiếu ah?
Bài toán này cũng khá đơn giản mà bạn!
- Chuyển toàn bộ sang mảng
- Làm việc và tính toán trên mảng này
- Cuối cùng, gán kết quả từ mảng xuống trờ lại bảng tính
- Lưu ý rằng với bài toán tính tổng các phân đoạn thì việc dùng vòng lập nên quét ngược từ dưới lên, cộng dồn vào 1 biến tạm, đến khi gập giá trị rổng thì gán giá trị tạm ấy vào chổ rổng ----> Và cứ tiếp tục thế cho đến trên cùng... đại khái thế này:
PHP:
Sub Test()
  Dim sArray, Arr, lR As Long, tmp As Double
  sArray = Range("C2:C10").Value
  For lR = UBound(sArray, 1) To 1 Step -1
    tmp = tmp + sArray(lR, 1)
    If sArray(lR, 1) = "" Then
      sArray(lR, 1) = tmp
      tmp = 0
    End If
  Next
  Range("C2:C10").Formula = sArray
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bài toán này cũng khá đơn giản mà bạn!
- Chuyển toàn bộ sang mảng
- Làm việc và tính toán trên mảng này
- Cuối cùng, gán kết quả từ mảng xuống trờ lại bảng tính
- Lưu ý rằng với bài toán tính tổng các phân đoạn thì việc dùng vòng lập nên quét ngược từ dưới lên, cộng dồn vào 1 biến tạm, đến khi gập giá trị rổng thì gán giá trị tạm ấy vào chổ rổng ----> Và cứ tiếp tục thế cho đến trên cùng... đại khái thế này:
PHP:
Sub Test()
  Dim sArray, Arr, lR As Long, tmp As Double
  sArray = Range("C2:C10").Value
  For lR = UBound(sArray, 1) To 1 Step -1
    tmp = tmp + sArray(lR, 1)
    If sArray(lR, 1) = "" Then
      sArray(lR, 1) = tmp
      tmp = 0
    End If
  Next
  Range("C2:C10").Formula = sArray
End Sub
Code này Thầy ndu viết gọn & sang quá
Gọn vì nó ngắn "tẻo tèo teo"
Sang vì nó chỉ cho chạy .......một lần
Híc
 
Upvote 0
Code này Thầy ndu viết gọn & sang quá
Gọn vì nó ngắn "tẻo tèo teo"
Sang vì nó chỉ cho chạy .......một lần
Híc
Bài toán này chạy 1 lần chứ mấy lần?
Nhớ lại, bài toán này làm 2 lần rồi:
http://www.giaiphapexcel.com/forum/...p-lọc-để-tính-tổng-có-thể-copy-nhanh-không-ạh
http://www.giaiphapexcel.com/forum/showthread.php?8641-Sum-có-điểm-dừng

Riêng về việc chạy nhiều lần thì dùng code trong bài này, trống thì ghi công thức vào, có công thức rồi thì ghi đè lên. Có cả video minh hoạ:

http://www.giaiphapexcel.com/forum/showthread.php?8641-Sum-có-điểm-dừng&p=363673#post363673

PHP:
Sub SubSum1(ByVal CriteriaRng As Range, ByVal SumRng As Range, ByVal FormulaRng As Range)
Dim FirstR, SumCol, LastR, CriteriaCol
FirstR = 3
SumCol = SumRng.Column
CriteriaCol = CriteriaRng.Column
LastR = Cells(65000, SumCol).End(xlUp).Row
FormulaCol = FormulaRng.Column
EndSumR = LastR
For i = LastR To FirstR Step -1
    
    If Cells(i, CriteriaCol) <> "" Then
        Cells(i, FormulaCol).Formula = "=sum(R[1]C" & SumCol & ":R" & EndSumR & "C" & SumCol & ")"
        EndSumR = i - 1
    End If
Next
End Sub
PHP:
Sub DoIt()
Set CriRng = Application.InputBox(prompt:="Give Criteria Range", Type:=8)
Set SumRng = Application.InputBox(prompt:="Give Sum Range", Type:=8)
Set FormulaRng = Application.InputBox(prompt:="Give Formula Range", Type:=8)
SubSum1 CriRng, SumRng, FormulaRng
End Sub
 
Upvote 0
Ở công thức thì bấm F9, còn trong VBA thì bấm......F8
Trong của sổ Code, bạn bấm View ==> Locals Window
Thò anh tý vào của sổ Code ==> bấm một phát ==> bấm F8 một phát ==> code bôi vàng một dòng ==> nhìn xuống cửa sổ Locals xem các biến, các kết quả........nó làm trò gì ở đó
Cứ tuần tự bấm F8 cho tới khi hết code bạn sẽ hiểu code làm việc như thế nào, có đúng như ý của mình viết hông và ......

Cảm ơn thày, từ trước đến nay em toàn phải mò mãi mà không biết có được chức năng tuyệt vời này.
 
Lần chỉnh sửa cuối:
Upvote 0
Bài toán này cũng khá đơn giản mà bạn!
PHP:
Sub Test()
  Dim sArray, Arr, lR As Long, tmp As Double
  sArray = Range("C2:C10").Value
  For lR = UBound(sArray, 1) To 1 Step -1
    tmp = tmp + sArray(lR, 1)
    If sArray(lR, 1) = "" Then
      sArray(lR, 1) = tmp
      tmp = 0
    End If
  Next
  Range("C2:C10").Formula = sArray
End Sub

Thuật toán trước chữ next em hiểu. Tuy nhiên, em cứ...ngu ngu trong đoạn gán này thế nào ý thày ah. Xin đươc nhờ thày và mọi người giải thích cho:

Chẳng là khi khai báo đầu tiên: sArray = Range("C2:C10").Value cũng tức là đã hiểu sArray vốn là vùng C2:C10 rồi; tại sao cuối cùng lại phải nhắc lại Range("C2:C10").Formula = sArray thế có phải thừa không?


Em có nhớ bài này em đã từng đề cập rồi, trước kia hỏi các thày sau đó em áp luôn vào thực tế để kiểm tra chứ hoàn toàn không hiểu Code. Nay em muốn xem lại thuật toán không biết bài đó nó nằm ở đâu trên diễn đàn nữa, đợt này em xác định phải học A, B, C từ đầu thôi thày ah, chứ nếu cứ ỷ lại vào việc nhờ các sư phụ, sau đó áp dụng theo kiểu Mì ăn liền thì bị động trong công việc lắm.

Ngồi nghiền ngẫm mấy hôm nay, em đã quen với thuật toán rồi, nhưng em vẫn hơi bỡ ngỡ khi làm việc về mảng, cụ thể: Tại sao lại phải làm động tác gán mảng trở lại mà em đã đề cập ở trên thôi ah.

Ở công thức thì bấm F9, còn trong VBA thì bấm......F8
Trong của sổ Code, bạn bấm View ==> Locals Window
Thò anh tý vào của sổ Code ==> bấm một phát ==> bấm F8 một phát ==> code bôi vàng một dòng ==> nhìn xuống cửa sổ Locals xem các biến, các kết quả........nó làm trò gì ở đó
Cứ tuần tự bấm F8 cho tới khi hết code bạn sẽ hiểu code làm việc như thế nào.
Híc

Em muốn tìm hiểu cái dòng sArray(lR, 1) = tmp chẳng hạn, em bôi đen nó sau đó nhấn F8 thì kết quả như hình này,
123-3.png

sao kết quả ở dưới hình Tmp giá trị (value) lại là 23.000 nhỉ. Em chưa được hiểu lắm
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Xin đươc nhờ thày và mọi người giải thích cho:

Chẳng là khi khai báo đầu tiên: sArray = Range("C2:C10").Value cũng tức là đã hiểu sArray vốn là vùng C2:C10 rồi; tại sao cuối cùng lại phải nhắc lại Range("C2:C10").Formula = sArray thế có phải thừa không?
Hai việc khác nhau chứ có giống nhau đâu mà thừa? Một cái lấy giá trị C2:C10 gán vào mảng, 1 cái gán mảng (sau khi xử lý) xuống C2:C10.
Mảng trước khi xử lý trống 2 phần tử, mảng sau khi xử lý đã được lấp đầy.

sao kết quả ở dưới hình Tmp giá trị (value) lại là 23.000 nhỉ. Em chưa được hiểu lắm

Khi sử dụng F8 thì code sẽ chạy và bị pause từng dòng lệnh. Ghi nhớ 1 điều là code pause ngay trước khi dòng tô vàng được thực thi, chứ không phải sau khi dòng tô vàng thực thi.
Nếu đã dùng F8 thì phải theo dõi hết bằng ấy vòng lặp mới thấy được kết quả cuối cùng. Ngay tại bước trong hình trên, nhấn F8 vài lần nữa sẽ thấy chứ gì!
 
Upvote 0
Em làm nhưng cứ bị lỗi, xin mọi người chỉ giúp em sai ở đâu:
PHP:
Sub Tinhtong()
Dim VungDK, VungKQ, iR As Long, kqR As Long
VungDK = Range("a2:c10").Value
VungKQ = Range("c2:c10").Value
For iR = 1 To UBound(VungDK, 1)
    If VungDK(iR, 1) <> "" Then
        kqR = iR
           End If
   VungKQ(kqR, 1).Formulla = "=SUM(R[1]C:R[" & (iR - kqR) & "]C)"
    Next
    Range("c2:c10").Value = VungKQ
End Sub
 
Upvote 0
Em làm nhưng cứ bị lỗi, xin mọi người chỉ giúp em sai ở đâu:
PHP:
Sub Tinhtong()
Dim VungDK, VungKQ, iR As Long, kqR As Long
VungDK = Range("a2:c10").Value
VungKQ = Range("c2:c10").Value
For iR = 1 To UBound(VungDK, 1)
    If VungDK(iR, 1) <> "" Then
        kqR = iR
           End If
   VungKQ(kqR, 1).Formulla = "=SUM(R[1]C:R[" & (iR - kqR) & "]C)"
    Next
    Range("c2:c10").Value = VungKQ
End Sub

Tôi không rành mảng nhiều, nhưng xem sơ qua thấy cấu trúc bạn không phù hợp, bởi trong mảng chỉ chứa giá trị chứ không chứa công thức.
 
Upvote 0
Bài toán của Thu Nghi có thể dùng nhiều cách:
1. Pivot Table: Dữ liệu không cần sort
2. Sub Total: Dữ liệu phải được sort theo Bộ phận (chức năng Sub Total tự động, không phải gõ hàm)
3. Dùng VBA tính tổng ra 1 cột riêng, không chèn dòng.
4. Dùng 1 đoạn code chèn dòng trước, rồi dùng 1 trong các code bài trên. Code chèn dòng thì quá dễ:
PHP:
Sub SubSum()
Dim FirstR, SumCol, LastR, CriteriaCol
FirstR = 3: SumCol = 6: CriteriaCol = 4
LastR = Cells(65000, SumCol).End(xlUp).Row
For i = LastR To FirstR Step -1
    
    If Cells(i, CriteriaCol) <> Cells(i - 1, CriteriaCol) Then
        Cells(i, CriteriaCol).EntireRow.Insert
    End If
Next
End Sub
Xem file có cả 4 cách làm.

Thưa thày, mục đích của em tìm hiểu bài này ngoài việc học tập bài của thày và mọi người. Em rất muốn tự mình "bắt chước" viết được Code, bởi chỉ có tự làm, biết mình sai ở đâu em mới nhớ được. Kính mong thày và mọi người sửa lại Code bài trên cho em, chỉ cho em biết chỗ sai của mình để em có thể hiểu hơn ah.
 
Upvote 0
Thưa thày, mục đích của em tìm hiểu bài này ngoài việc học tập bài của thày và mọi người. Em rất muốn tự mình "bắt chước" viết được Code, bởi chỉ có tự làm, biết mình sai ở đâu em mới nhớ được. Kính mong thày và mọi người sửa lại Code bài trên cho em, chỉ cho em biết chỗ sai của mình để em có thể hiểu hơn ah.
Bạn thử đoạn code này nói chung mảng mà bạn để Formula vào thì nó không hiêu mà Formula bạn phải vầy nè Formula
PHP:
VungKQ(kqR, 1) = "=SUM(R[1]C:R[" & (iR + 1 - kqR) & "]C)"
 
Upvote 0
Bạn thử đoạn code này nói chung mảng mà bạn để Formula vào thì nó không hiêu mà Formula bạn phải vầy nè Formula
PHP:
VungKQ(kqR, 1) = "=SUM(R[1]C:R[" & (iR + 1 - kqR) & "]C)"

Vâng, bây giờ em đã hoàn toàn tự làm được rồi ah. Em cảm ơn các thày, các anh, chị và mọi người rất nhiều.

PHP:
Sub Tinhtong()
Dim VungDK, VungKQ, iR As Long, kqR As Long
VungDK = Range("a2:c10").Value
VungKQ = Range("c2:c10").Value
For iR = 1 To UBound(VungDK, 1)
    If VungDK(iR, 1) <> "" Then
        kqR = iR
           End If
   VungKQ(kqR, 1) = "=SUM(R[1]C:R[" & (iR - kqR) & "]C)"
    Next
    Range("c2:c10").Value = VungKQ
End Sub
 
Upvote 0
Từ hôm qua đến nay theo dõi Topic này thấy hay quá!
Em cũng đang ngu ngơ như bạn Dauthivan chỗ này tại Code trong bài #9 sư phụ ndu viết:

Range("C2:C10").Formula = sArray

Em hiểu là đổ mảng kết quả đã xử lý trong sArray ra bảng tính nhưng sao lại là Range("C2:C10").Formula (Trong sArray đang chứa value mà) vậy sao không phải là Range("C2:C10").Value, em thử thấy 2 cách code chạy vẫn ngon.
Mong các sư phụ giải thích giúp em hai cái đó có khác nhau không, trường hợp
nào thay thế được cho nhau mà không ảnh hưởng đến kết quả của CODE.
Xin cảm ơn!
 
Upvote 0
Web KT

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

Back
Top Bottom