Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sao lại thế nhỉ, nhìn 2 cái
PHP:
.Cells(i, 2).Value = "=sum(R" & k - 1 & "C:R" & i + 1 & "C)"

PHP:
.Cells(i, 2).Value = "=SUM(R[1]C:R[" & k - i - 1 & "]C)"

Đâu có gì khác nhau?
Khác nhau ở chổ: 1 thằng có cặp dấu [] còn thằng kia thì không có
Vậy thôi!
Nếu ghi R1, nghĩa là bạn chỉ chính xác đấy là dòng 1
Nếu ghi R[1], nghĩa là nó mang tính tương đối, cách dòng đang xét 1 dòng
 
Upvote 0
Tôi cộng tổng thêm 1 cấp độ nữa, code tôi viết như sau:

PHP:
Sub Tinhtong()
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
End Sub

Nhờ thày tư vấn thêm giúp cho làm sao Code chạy đúng
 

File đính kèm

  • Tinh tong1.xls
    28.5 KB · Đọc: 13
Upvote 0
Tôi cộng tổng thêm 1 cấp độ nữa, code tôi viết như sau:

PHP:
Sub Tinhtong()
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
End Sub

Nhờ thày tư vấn thêm giúp cho làm sao Code chạy đúng
Nếu cộng dồn mà ra kết quả luôn, ta dùng code cũng không nói làm gì... Ở đây, đằng nào cũng viết công thức, vậy sao bạn không viết trực tiếp vào bảng tính luôn
Nếu là tôi thì tôi sẽ làm bài này như sau:
- Quét chọn vùng dữ liệu, chọn AutoFilter
- Filter cột B theo điều kiện Non Blanks
- Quét chọn cột C, từ dòng 2 trở đi rồi gõ vào thanh Formula công thưc: =SUBTOTAL(109,$C3:$C$1000)-SUMIF($B3:$B$1000,"<>",$C3:$C$1000) rồi bấm Ctrl + Enter
- Show All cột B, chuyển sang Filter cột A theo điều kiện Non Blanks
- Quét chọn cột C, từ dòng 1 trở đi rồi gõ vào thanh Formula công thức: =SUBTOTAL(109,$C2:$C$1000)-SUMIF($A2:$A$1000,"<>",$C2:$C$1000) rồi bấm Ctrl + Enter
- Huy chế độ AutoFilter, có ngay kết quả
------------------
Làm ra kết quả trong vòng tích tắc... Nếu muốn viết code, bạn cứ dựa vào 2 công thức ở trên mà viết cho khỏe
 

File đính kèm

  • Tinh tong1.xls
    30.5 KB · Đọc: 10
Upvote 0
Cảm ơn thày tôi đang cố gắng tiếp cận VBA từng bước một, phiền thày và mọi người hoàn thiện Code trên giúp.

(Bài này tôi làm với tính chất nghiên cứu chứ chưa phải bài toán thực tế)
 
Upvote 0
Xin mọi người giải thích giùm em đoạn code này với: Trong userform có một combobox. Muốn gán dữ liệu vào combobox này nhưng em không hiểu sub này làm việc như thế nào ạ!!!
Private Sub usfhiep_Load()
Dim i As Byte
For i = 0 To 11
Me.cbopt.List(i) = i + 1
Next
Me.cbopt.ListIndex = 0
End Sub
 
Upvote 0
Kính nhờ thày Ndu và mọi người giúp tôi sửa lại Code bài 1079 ở trên với, tôi đang rất cần học thuật toán về VBA

Xin được trích dẫn lại Code cần trợ giúp

PHP:
Sub Tinhtong()
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
End Sub
Xin cảm ơn rất nhiều
 
Upvote 0
Kính nhờ thày Ndu và mọi người giúp tôi sửa lại Code bài 1079 ở trên với, tôi đang rất cần học thuật toán về VBA

Xin được trích dẫn lại Code cần trợ giúp

PHP:
Sub Tinhtong()
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
End Sub
Xin cảm ơn rất nhiều
Tôi không biết "ý đồ" của bạn là đưa công thức vào làm gì nên không bàn.
Tôi chỉ làm thử bằng cách gán giá trị vào luôn.
PHP:
Sub Tinhtong()
    Dim i As Long, eR As Long, Tem1 As Double, Tem2 As Double
    eR = Range("C65000").End(xlUp).Row
    For i = eR To 1 Step -1
        If Cells(i, 1) = "" Then
            If Cells(i, 2) = "" Then
                Tem1 = Tem1 + Cells(i, 3)
                Tem2 = Tem2 + Cells(i, 3)
            Else
                Cells(i, 3) = Tem1
                Tem1 = 0
            End If
        Else
            Cells(i, 3) = Tem2
            Tem2 = 0
        End If
    Next i
End Sub
 

File đính kèm

  • Tinh tong2.xls
    37.5 KB · Đọc: 18
Upvote 0
Kính nhờ thày Ndu và mọi người giúp tôi sửa lại Code bài 1079 ở trên với, tôi đang rất cần học thuật toán về VBA

Xin được trích dẫn lại Code cần trợ giúp

PHP:
Sub Tinhtong()
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
End Sub
Xin cảm ơn rất nhiều
Sửa thành vầy xem:
PHP:
Sub TinhTong()
  Dim i As Long, Dongcuoi As Long, k As Long, n As Long, Arr()
  Dongcuoi = Sheet1.Range("C65000").End(xlUp).Row
  ReDim Arr(1 To 1)
  k = Dongcuoi
  With Sheet1
    For i = Dongcuoi To 1 Step -1
      If .Cells(i, 2).Value <> "" And .Cells(i, 1) = "" Then
        .Cells(i, 3).Value = "=SUM(R[1]C:R[" & k - i & "]C)"
        k = i - 1: n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = .Cells(i, 3).Address(0, 0)
      ElseIf .Cells(i, 1) <> "" Then
        k = i - 1: n = 0
        .Cells(i, 3).Value = "=" & Join(Arr, "+")
        ReDim Arr(1 To 1)
      End If
    Next
  End With
End Sub
 
Upvote 0
Cảm ơn thày Ndu và bác Ba Tê rất nhiều, làm theo cách của bác Ba Tê tôi đã tham khảo trên diễn đàn. Tuy nhiên sự cần thiết phải hiện ra công thức trong thực tế là có;

Tôi biết làm theo mảng vẫn là số 1 về tốc độ, tuy vậy trong thực tế đôi khi cần gửi cho đối tác và Sếp thì điều quan trọng nhất là tính kiểm tra được bằng những công thức đơn giản nhất mà người dùng Excel trình độ A, B cũng có thể biết. Tôi đã làm theo 2 cách mà không được chấp thuận tại cơ quan:

Cách 1: làm bằng mảng như của bác Ba Tê, thì sếp bảo: Làm thế làm không có sự liên kết giữa đầu vào và đầu ra thì làm sao kiểm tra được ---> tốt nhất là quay lại chịu khó Sum bằng tay.

Cách 2: Khi quay sang dùng công thức Excel (phối hợp các hàm Vlookup, Index..) để giải quyết thì sếp lại bảo chỉ được dùng hàm thông dụng, dễ hiểu nhất như Sum ... dùng công thức phức tạp rối mắt thế người khác không hiểu được.

Tôi vẫn biết đối với việc dùng Code mà vẫn bắt hiện ra công thức vừa làm chậm tốc độ, viết Code sẽ loằng ngoằng hơn đôi khi chính bản thân tôi cũng không thích, nhưng đúng là với 1 số cơ quan để giải quyết công việc thì bắt buộc vẫn phải làm vậy (vì làm 2 cách trên Sếp không chấp thuận).
 
Lần chỉnh sửa cuối:
Upvote 0
Xin được trích dẫn lại Code cần trợ giúp
Mã:
[B]Sub Tinhtong()[/B]
    Dim i As Long, kk As Long, eR As Long, stotal As String
    eR = Range("C65000").End(xlUp).Row
    kk = eR + 1
    For i = eR To 1 Step -1
        If Cells(i, 2) <> "" Then
            Cells(i, 3) = "=sum(R[1]C:R[" & kk - i - 1 & "]C)"
7            stotal = stotal + "+" + Cells(i, 3)
        ElseIf Cells(i, 1) <> "" Then
9            Cell(i, 3) = "=" & Right(stotal, Len(stotal) - 1) & ")"
            kk = i
        End If
    Next
[B]End Sub[/B]

Dòng lệnh 9 đang sai 2 chỗ

(+) 1 ô là 1 tập hợp, chứ không fải 1 fần tử, nên fải viết là Cells(i, 3);
(+) Vế sau chứng tỏ bạn muốn gán công thức vô ô này, Vậy là bạn fải làm cho máy hiểu là tôi sẽ xài fương thức .Formula

Dòng lệnh 7 đang sai với lí do bạn đang cố bắt máy nối số liệu vô chuỗi; Chuyện này nó không chịu;

Chí ít fải là: stotal = stotal + "+" + CStr(Cells(i, 3)) ;
Tuy nhiên như vậy sẽ dẫn đến lại sai dòng lệnh 9 ở 1 chuyện khác;

Mình xin khuyên bạn thêm vài điều:


(-) Ta nên khai tên biến là sTotal (thay vì stotal)

(-) Khi nối chuỗi ta nên dùng toán tử '&' (thay vì '+'), tuy rằng không ai cấm, cũng như chả ai fạt bạn chuyện đi 1 chưn trên hè, 1 cẳng dưới lòng đường.

(-) Tường minh hơn khi viết: stotal = stotal + "+" + Cells(i, 3).Value
(thay vì stotal = stotal + "+" + Cells(i, 3))

Có khi nào bạn ra lệnh cho con hay ai đó: "Lấy quyễn sách 900 trang đưa tau"
hay câu "Lấy quyễn từ điển Hán - Nôm đưa tau"

Thân ái!
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn thày Ndu và bác Ba Tê rất nhiều, làm theo cách của bác Ba Tê tôi đã tham khảo trên diễn đàn. Tuy nhiên sự cần thiết phải hiện ra công thức trong thực tế là rất cần thiết;

Tôi biết làm theo mảng vẫn là số 1 về tốc độ, tuy vậy trong thực tế đôi khi cần gửi cho đối tác và Sếp thì điều quan trọng nhất là tính kiểm tra được bằng những công thức đơn giản nhất mà người dùng Excel trình độ A, B cũng có thể biết. Tôi đã làm theo 2 cách mà không được chấp thuận tại cơ quan:

Cách 1: làm bằng mảng như của bác Ba Tê, thì sếp bảo: Làm thế làm không có sự liên kết giữa đầu vào và đầu ra thì làm sao kiểm tra được ---> tốt nhất là quay lại chịu khó Sum bằng tay.

Cách 2: Khi quay sang dùng công thức Excel (phối hợp các hàm Vlookup, Index..) để giải quyết thì sếp lại bảo chỉ được dùng hàm thông dụng, dễ hiểu nhất như Sum ... dùng công thức phức tạp rối mắt thế người khác không hiểu được.

Tôi vẫn biết đối với việc dùng Code mà vẫn bắt hiện ra công thức vừa làm chậm tốc độ, viết Code sẽ loằng ngoằng hơn đôi khi chính bản thân tôi cũng không thích, nhưng đúng là với 1 số cơ quan để giải quyết công việc thì bắt buộc vẫn phải làm vậy (vì làm 2 cách trên Sếp không chấp thuận).
Cái khó là ở chổ đó... Gán Value vào cell là quá dễ, nếu chèn công thức thì phải "nhớ" chính xác vị trí của khối cell cần chèn vào công thức
------------------------
Bởi vậy, tại phòng làm việc của tôi luôn có 1 bảng ghi nhớ to tổ bố:
- ĐIỀU 1: SẾP LUÔN LUÔN ĐÚNG
- ĐIỀU 2: NẾU NGHI NGỜ RẰNG SẾP SAI, HÃY ĐỌC KỸ ĐIỀU 1

Ẹc... Ẹc... +-+-+-+ +-+-+-+ +-+-+-+ Đập đầu 3 cái để chứng tỏ rằng TA lúc nào cũng ngu hơn SẾP
 
Upvote 0
Đọc các giải, nhận xét của thày tôi thấy thực sự rất bổ ích, những lời dạy đó tôi sẽ tiếp thu để các bài sau sửa chữa
Thú thực câu lệnh

PHP:
 stotal = stotal + "+" + Cells(i, 3).Value

tôi học trên diễn đàn nhưng bản thân không hiểu lắm tại sao lại có tận 3 dấu cộng. Xin phiền các thày chỉ dạy thêm

Đa tạ các thày rất nhiều (bấm nút cảm ơn thấy còn chưa đủ nói hết sự biết ơn của bản thân đối với công lao của các thày).
 
Upvote 0
Đọc các giải, nhận xét của thày tôi thấy thực sự rất bổ ích, những lời dạy đó tôi sẽ tiếp thu để các bài sau sửa chữa
Thú thực câu lệnh

PHP:
 stotal = stotal + "+" + Cells(i, 3).Value

tôi học trên diễn đàn nhưng bản thân không hiểu lắm tại sao lại có tận 3 dấu cộng. Xin phiền các thày chỉ dạy thêm

Đa tạ các thày rất nhiều (bấm nút cảm ơn thấy còn chưa đủ nói hết sự biết ơn của bản thân đối với công lao của các thày).
Theo cách biểu diễn của code, ta có thể ngầm hiểu dấu + bên trái và bên phải tương đương với dấu &
(Nối chuổi trong VBA, dấu + tương đương dấu &)
Ví dụ: MsgBox "Hello" + " " + "World"
 
Upvote 0
Đọc các giải, nhận xét của thày tôi thấy thực sự rất bổ ích, những lời dạy đó tôi sẽ tiếp thu để các bài sau sửa chữa
Thú thực câu lệnh

PHP:
 stotal = stotal + "+" + Cells(i, 3).Value

tôi học trên diễn đàn nhưng bản thân không hiểu lắm tại sao lại có tận 3 dấu cộng. Xin phiền các thày chỉ dạy thêm

Đa tạ các thày rất nhiều (bấm nút cảm ơn thấy còn chưa đủ nói hết sự biết ơn của bản thân đối với công lao của các thày).
Nếu bạn viết thành:
PHP:
stotal = stotal & "+" & Cells(i, 3).Value
Bạn sẽ hiểu tại sao.
 
Upvote 0
Cách của thày Ndu sử dụng hàm Join rất hay, em chưa dùng nó bao giờ, thử nghĩ ra ví dụ để thực tập nhưng nó không được thày ah

PHP:
Sub gido()
Dim Arr()
Arr(0) = 2
Arr(1) = 5
Arr(2) = 10
Arr(3) = 11
Cells(1, 1) = "=" & Join(Arr, "+")
End Sub

Xin nhờ mọi người sửa giúp cho ah.
 
Upvote 0
Cách của thày Ndu sử dụng hàm Join rất hay, em chưa dùng nó bao giờ, thử nghĩ ra ví dụ để thực tập nhưng nó không được thày ah

PHP:
Sub gido()
Dim Arr()
Arr(0) = 2
Arr(1) = 5
Arr(2) = 10
Arr(3) = 11
Cells(1, 1) = "=" & Join(Arr, "+")
End Sub

Xin nhờ mọi người sửa giúp cho ah.
Thiếu đoạn khai báo kích thước của mảng nên không chạy là phải rồi
Mã:
Sub gido()
  Dim Arr()
 [COLOR=#ff0000][B] ReDim Arr(3)[/B][/COLOR]
  Arr(0) = 2
  Arr(1) = 5
  Arr(2) = 10
  Arr(3) = 11
  Cells(1, 1) = "=" & Join(Arr, "+")
End Sub
Hoặc khai báo trực tiếp từ đầu:
Mã:
Sub gido()
  [COLOR=#ff0000][B]Dim Arr(3)[/B][/COLOR]
  Arr(0) = 2
  Arr(1) = 5
  Arr(2) = 10
  Arr(3) = 11
  Cells(1, 1) = "=" & Join(Arr, "+")
End Sub
 
Upvote 0
Giúp em hiểu thêm về hàm Join

Em tìm hiểu về Join nhưng cú pháp câu cuối cùng (Cells(1, 3) = Join(Tmp1, Tmp2)) không biết phải sửa thế nào cho đúng, xin được nhờ các thày giúp đỡ

PHP:
Sub Connect()
    Dim sArr1, Tmp1(), sArr2, Tmp2(), i As Long, j As Long
    sArr1 = Range("A1:A10").Value
    sArr2 = Range("B1:B10").Value
    ReDim Tmp1(UBound(sArr1, 1) - 1)
    ReDim Tmp2(UBound(sArr2, 1) - 1)
    For i = 1 To UBound(sArr1, 1)
        Tmp1(i - 1) = sArr1(i, 1)
    Next
    For j = 1 To UBound(sArr2, 1)
        Tmp2(j - 1) = sArr2(j, 1)
    Next
    Cells(1, 3) = Join(Tmp1, Tmp2)
End Sub
 
Upvote 0
Em tìm hiểu về Join nhưng cú pháp câu cuối cùng (Cells(1, 3) = Join(Tmp1, Tmp2)) không biết phải sửa thế nào cho đúng, xin được nhờ các thày giúp đỡ

PHP:
Sub Connect()
    Dim sArr1, Tmp1(), sArr2, Tmp2(), i As Long, j As Long
    sArr1 = Range("A1:A10").Value
    sArr2 = Range("B1:B10").Value
    ReDim Tmp1(UBound(sArr1, 1) - 1)
    ReDim Tmp2(UBound(sArr2, 1) - 1)
    For i = 1 To UBound(sArr1, 1)
        Tmp1(i - 1) = sArr1(i, 1)
    Next
    For j = 1 To UBound(sArr2, 1)
        Tmp2(j - 1) = sArr2(j, 1)
    Next
    Cells(1, 3) = Join(Tmp1, Tmp2)
End Sub

Cú pháp hàm Join là Join(mảng, dấu phân cách)...
Còn bạn thì Join(Tmp1, Tmp2) với Tmp1, Tmp2 đều là mảng ---> Sao mà được!
Vậy bạn muốn làm gì đây? Mô tả vấn đề cho dễ hiểu nhé
 
Upvote 0
Em cứ tưởng là Join nó giống như Concatenate trong Excel, nghĩa là em cứ nghĩ ô C3 (tức Cells(1,3)) nó nối tất cả các phần tử của cả 2 mảng Tmp1 và Tmp2 vào với nhau

Em nghĩ có thể dùng được
Join(mang1, mang2)

Em chỉ thử nghiệm để biết cách dùng của Join thôi, em đang đi tìm hiểu những cái mới mà em chưa biết thày ah.
--------
Em đang tìm hiểu về Mid trong VBA em viết như trong Excel nhưng chưa được:

PHP:
Sub Tach()
    Dim sArr, Tmp(), sArr2, Tmp2(), i As Long, j As Long
    sArr = Range("A1:A10").Value
    ReDim Tmp(UBound(sArr, 1) - 1)
    For i = 1 To UBound(sArr, 1)
        Tmp(i - 1) = Mid(sArr(i, 1), 2, Len(sArr(i,1))
        n = n + 1
    Next
    [B1].Resize(n).Value = Tmp
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi có đôi chút thắc mắc về Code của thày Ndu, xin được mọi người chỉ bảo giúp tôi học hỏi thêm

1) Theo tôi thì thuộc tính mặc định của Range hoặc Cell trong các biểu thức ưu tiên sẽ là Value, như vậy việc bỏ Value đi có ảnh hưởng gì không?

2) Tôi thắc mắc là tại sao lại cần dòng ReDim Arr(1 to 1) ở dưới nhằm mục đích gì, vì tôi bỏ đi vẫn thấy nó đúng mà.

Tức là Code của thày Ndu:
PHP:
Sub TinhTong()
  Dim i As Long, Dongcuoi As Long, k As Long, n As Long, Arr()
  Dongcuoi = Sheet1.Range("C65000").End(xlUp).Row
  ReDim Arr(1 To 1)
  k = Dongcuoi
  With Sheet1
    For i = Dongcuoi To 1 Step -1
      If .Cells(i, 2).Value <> "" And .Cells(i, 1) = "" Then
        .Cells(i, 3).Value = "=SUM(R[1]C:R[" & k - i & "]C)"
        k = i - 1: n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = .Cells(i, 3).Address(0, 0)
      ElseIf .Cells(i, 1) <> "" Then
        k = i - 1: n = 0
        .Cells(i, 3).Value = "=" & Join(Arr, "+")
        ReDim Arr(1 To 1)
      End If
    Next
  End With
End Sub

tôi sửa thành như vầy có được không?
PHP:
Sub Tinhtong()
    Dim i As Long, k As Long, n As Long, Dongcuoi As Long, Arr()
    Dongcuoi = Range("C65000").End(xlUp).Row
    k = Dongcuoi
    With Sheet1
        For i = Dongcuoi To 1 Step -1
            If .Cells(i, 2) <> "" And .Cells(i, 1) = "" Then
                .Cells(i, 3) = "=sum(R[1]:R[" & k - i & "]C)"
                k = i - 1
                n = n + 1
                ReDim Preserve Arr(1 To n)
                Arr(n) = .Cells(i, 3).Address(0, 0)
            ElseIf .Cells(i, 1) <> "" Then
                k = i - 1
                n = 0
                .Cells(i, 3) = "=" & Join(Arr, "+")
            End If
        Next
    End With
End Sub

--------
Tôi xin thắc mắc về cách viết cú pháp chút nữa:

Trong đoạn
PHP:
.Cells(i, 3).Value = "=SUM(R[1]C:R[" & k - i & "]C)"
thì dấu ) nằm trong "" (tức là "]C)").

Tại sao đoạn
PHP:
.Cells(i, 3) = "=" & Join(Arr, "+")
thì dấu ngoặc không "bị" nằm trong dấu "", mặc dù tôi thấy vai trò của nó như nhau.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom