không rõ yêu cầu nên trừ hao 2 subEm có 2 mảng:
Workbook1.Sheet1!range( A1:G1)
Workbook2.Sheet1!range(A2:G2)
Giúp em dùng For vs Ubound để tính tổng 2 mảng trên!
Em cảm ơn!
Sub Sum2Array1()
'tinh tong tung dong và tong cong
Dim Arr1(), Arr2(), Tong As Double, Tong1 As Double, Tong2 As Double, j As Long
Arr1 = Workbooks(1).Sheets("Sheet1").Range("A1:G1").Value
Arr2 = Workbooks(1).Sheets("Sheet1").Range("A2:G2").Value
For j = 1 To UBound(Arr1, 2)
Tong1 = Tong1 + Arr1(1, j)
Tong2 = Tong2 + Arr2(1, j)
Tong = Tong + Arr1(1, j) + Arr2(1, j)
Next j
Workbooks(1).Sheets("Sheet1").Range("A4") = Tong1
Workbooks(1).Sheets("Sheet1").Range("A5") = Tong2
Workbooks(1).Sheets("Sheet1").Range("A6") = Tong
End Sub
Sub Sum2Array2()
'tinh tong cua ca 2 dong
Dim Arr1(), Arr2(), Tong As Double, i As Long, j As Long
Arr = Workbooks(1).Sheets("Sheet1").Range("A1:G2").Value
For i = 1 To UBound(Arr)
For j = 1 To UBound(Arr, 2)
Tong = Tong + Arr(i, j)
Next j
Next i
Workbooks(1).Sheets("Sheet1").Range("A6") = Tong
End Sub
Sao không dùng sum mà sum nó lại.Em có 2 mảng:
Workbook1.Sheet1!range( A1:G1)
Workbook2.Sheet1!range(A2:G2)
Giúp em dùng For vs Ubound để tính tổng 2 mảng trên!
Em cảm ơn!
không rõ yêu cầu nên trừ hao 2 subMã:Sub Sum2Array1() 'tinh tong tung dong và tong cong Dim Arr1(), Arr2(), Tong As Double, Tong1 As Double, Tong2 As Double, j As Long Arr1 = Workbooks(1).Sheets("Sheet1").Range("A1:G1").Value Arr2 = Workbooks(1).Sheets("Sheet1").Range("A2:G2").Value For j = 1 To UBound(Arr1, 2) Tong1 = Tong1 + Arr1(1, j) Tong2 = Tong2 + Arr2(1, j) Tong = Tong + Arr1(1, j) + Arr2(1, j) Next j Workbooks(1).Sheets("Sheet1").Range("A4") = Tong1 Workbooks(1).Sheets("Sheet1").Range("A5") = Tong2 Workbooks(1).Sheets("Sheet1").Range("A6") = Tong End Sub Sub Sum2Array2() 'tinh tong cua ca 2 dong Dim Arr1(), Arr2(), Tong As Double, i As Long, j As Long Arr = Workbooks(1).Sheets("Sheet1").Range("A1:G2").Value For i = 1 To UBound(Arr) For j = 1 To UBound(Arr, 2) Tong = Tong + Arr(i, j) Next j Next i Workbooks(1).Sheets("Sheet1").Range("A6") = Tong End Sub
Sao không dùng sum mà sum nó lại.
Giúp em dùng For vs Ubound để tính tổng 2 mảng trên!
@VetMiniNói chuyện nửa tây nửa ta thì ít nhất cũng phải biết, vs tiếng Anh là từ tắt của versus, có nghĩa là so sánh, đối chọi
Chờ mấy bạn khác đi.
Tôi có vấn đề, không thể trả lời những câu hỏi có đía có thánh. Nếu muốn tôi trả lời thì xoá những từ ấy đi.
mình không biết về lý thuyết, chỉ nhập lệnh thử, bấm phím chức năng F8 cho chạy từng dòng lệnh, rà chuột vào từng biến xem giá trị của biến và so sánh với mảng để đoán tác dụng của lệnh, bạn nên làm theo cách nầy và kiểm lại những gì bạn học sẽ hiểu thôi@HieuCD Em cảm ơn anh nhiều!
ANh cho em hỏi thêm tí về hàm Ubound:
A(1,3,7,9,11)
B(1 to 3, 1to 9, 4 to 10, 2 to 15, 5 to 21)
C("GH", "EF", "TQ")
1. UBound (A,1) = 1, UBound (A,5)= 11
2. UBound (B,1) = 3, UBound (B,5) = 21
3.UBound(Arr1, 1), UBound(Arr1, 2) ( giá trị giống code A viết), 2 hàm UBound này giá trị trả về là bao nhiêu?
4. for i = LBound(C) to UBound(C), ở đây giá trị của i bằng bao nhiêu, chạy từ đâu tới đâu?
Em không biết khi nào UBound(array) trả về giá trị lớn nhất là số thứ tự, khi nào trả về giá trị lớn nhất là: giá trị lớn nhất trong mảng
Anh có thể giúp em trả lời các thắc mắc ở trên được không Anh
Thanhks Anh!
Em đã xóa! Mong Anh giúp đỡ!
@HieuCD Em cảm ơn anh nhiều!
ANh cho em hỏi thêm tí về hàm Ubound:
A(1,3,7,9,11)
B(1 to 3, 1to 9, 4 to 10, 2 to 15, 5 to 21)
C("GH", "EF", "TQ")
1. UBound (A,1) = 1, UBound (A,5)= 11
2. UBound (B,1) = 3, UBound (B,5) = 21
3.UBound(Arr1, 1), UBound(Arr1, 2) ( giá trị giống code A viết), 2 hàm UBound này giá trị trả về là bao nhiêu?
4. for i = LBound(C) to UBound(C), ở đây giá trị của i bằng bao nhiêu, chạy từ đâu tới đâu?
Anh có thể giúp em trả lời các thắc mắc ở trên được không Anh
Thanhks Anh! ' bạn quên cái này, nó là cái mà tôi gọi là thánh
mình không biết về lý thuyết, chỉ nhập lệnh thử, bấm phím chức năng F8 cho chạy từng dòng lệnh, rà chuột vào từng biến xem giá trị của biến và so sánh với mảng để đoán tác dụng của lệnh, bạn nên làm theo cách nầy và kiểm lại những gì bạn học sẽ hiểu thôi
1. Giả sử từ DIM được hiểu ngầm thì A(1,3,7,9,11) : mảng A có 5 chiều
UBound(A,5) hỏi chỉ số lớn nhất của chiều thứ 5; nó là 11. Nếu hỏi chỉ số lớn nhất của chiều thứ 4 thì dùng UBound(A,4), và kết quả là 9
2. tương tự cho mảng B
3. Nếu Arr1 được copy từ A ở trên thì UBound(Arr1, 1) = 1, UBound(Arr1, 2) = 3
4. Chả biết C("GH", "EF", "TQ") có nghĩa là gì. Nếu là mảng thì ký hiệu trong VBA là dấu ngoặc cong { }, {"GH", "EF", "TQ" }
Nếu là kết quả của hàm execute [ ] thì LBound của nó tuỳ thuộc vào option base, mặc định là 1. Nếu là kết quả của hàm Array thì LBound luôn luôn là 0
Trong cả 2 trường hợp, UBound là (số phần tử + LBound - 1)
KẾT LUẬN: giáo viên nào ra bài tập dỏm, khong rõ ràng gì cả. Mọi thứ đếu phải đặt tiền đề NẾU.
For i = LBound(arr) to UBound(arr)
Set RangeA = filename.Worksheets(name).Range(Range_String(i))
Hsum = Application.Sum(RangeA)
Next i
For i = LBound(Value_Range) To UBound(Value_Range)
Worksheets("Sheet1").Range(Value_Range(i)) = Hsum + Worksheets("Sheet2").Range(NGAY_RANGE(i)).Value
Next i
Worksheets("Sheet1").Range("F2").Offset(i, 0) = Hsum ' cái này chỉ add ra một kết quả duy nhất tại F(2+i) = Hsum
Mã:For i = LBound(arr) to UBound(arr) Set RangeA = filename.Worksheets(name).Range(Range_String(i)) Hsum = Application.Sum(CT_Range) Next i
Đoạn code trên em tóm tắt từ một bài rất dài(nên về cấu trúc và logic có thể không đúng), em xin rút ngắn để hỏi phần cần hỏi:
Khi tính em tường Hsum sẽ chạy theo (i) nhưng không phải, Nó chỉ trả về 1 giá trị cuối cùng trong mảng
Có tới mấy chỗ kỳ quặc trong code này lận:
1. Ai mà biết tại sao bạn dùng chỉ số i để duyệt mảng Range_String, trong khi đó lại giới hạn vòng lặp theo kích cỡ của mảng arr. Tôi đâu có thấy code chỗ nào chỉ định hai mảng đó là mọt đâu.
2. Bạn chạy hết vòng lặp nhưng chỉ xài 1 cái CT_Range lấy ở đâu đó. Đương nhiên từ lượt đầu tiên cho đến lượt cuối, Hsum chỉ có 1 trị.
3. Nếu bạn nhầm lẫn, đáng lẽ RangeA thay vì CT_Range thì code này vẫn đâu có cộng tổng Hsum. Nó chỉ tính sum cho cái range cuối cùng trong nhóm thôi.
Muốn tổng tất cả thì phải là Hsum = Hsum + Application.Sum(RangeA)
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2