Những cái không có ngày kết thúc thì mảng bạn chứa những cái gì: Chứa xe, Ngày bắt đầu àEm thực hiện lọc những dòng không có "ngày kết thúc" cho vào mảng (arr) rồi nhưng sao em trả ra thì lại không có gì ạ. Mong các anh chị giúp đỡ ạ.Em xin cám ơn nhiều ạ
Dạ đúng rồi anh. Mục đích là em lọc những dòng không có ngày kết thúc ra ạ, sao đó thực hiện xóa hết những dòng có ngày kết thúc sau đó thực hiện trả dữ liệu của mảng ra lại ạNhững cái không có ngày kết thúc thì mảng bạn chứa những cái gì: Chứa xe, Ngày bắt đầu à
Đọc lại kiến thức về mảng đi.Bạn chưa biết gán giá trị vào mảng.Chưa biết gán từ mảng xuống sheets.Em thực hiện lọc những dòng không có "ngày kết thúc" cho vào mảng (arr) rồi nhưng sao em trả ra thì lại không có gì ạ. Mong các anh chị giúp đỡ ạ.Em xin cám ơn nhiều ạ
Có hơi đi tắt một tí, bạn tự nghiên cứu lấy. Kết quả trả ra vùng từ E1:F chứ không xóa kết quả cũVâng cám ơn anh. Thực sự em có đọc nhưng vẫn không thông nổi ạ . Để em học lại thêm ạ
Sub abc()
Dim I As Long, K As Long, Arr()
With Sheets("Sheet1")
Arr = .Range("A1:C" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
K = 1
For I = 2 To UBound(Arr)
If Arr(I, 3) = "" Then
K = K + 1
Arr(K, 1) = Arr(I, 1)
Arr(K, 2) = Arr(I, 2)
Arr(K, 3) = Arr(I, 3)
End If
Next
If K > 1 Then .Range("E1").Resize(K, 3) = Arr
End With
End Sub
Vâng em xin cảm ơn anh ạ. Em sẽ vọc bài này để hiểu hơn về mảng ạ, chứ thật ra em có đọc nhưng không hiểu cách hoạt động là như thế nào ạ. Cảm ơn anh nhiềuCó hơi đi tắt một tí, bạn tự nghiên cứu lấy. Kết quả trả ra vùng từ E1:F chứ không xóa kết quả cũ
Mã:Sub abc() Dim I As Long, K As Long, Arr() With Sheets("Sheet1") Arr = .Range("A1:C" & .Cells(Rows.Count, "A").End(xlUp).Row).Value K = 1 For I = 2 To UBound(Arr) If Arr(I, 3) = "" Then K = K + 1 Arr(K, 1) = Arr(I, 1) Arr(K, 2) = Arr(I, 2) Arr(K, 3) = Arr(I, 3) End If Next If K > 1 Then .Range("E1").Resize(K, 3) = Arr End With End Sub
Code trên tôi còn thiếu một khúc là xóa giá trị cũ trước khi gán giá trị mới. Giả sử nếu bạn chạy code lần 1 giá trị cũ nhiều hơn. Sau đó chạy lần nữa số lượng dòng ít hơn thì ghi xuống nếu chưa xóa giá trị cũ sẽ bị nhầm lẫn.Vâng em xin cảm ơn anh ạ. Em sẽ vọc bài này để hiểu hơn về mảng ạ, chứ thật ra em có đọc nhưng không hiểu cách hoạt động là như thế nào ạ. Cảm ơn anh nhiều
Vâng cám ơn anh ạCode trên tôi còn thiếu một khúc là xóa giá trị cũ trước khi gán giá trị mới. Giả sử nếu bạn chạy code lần 1 giá trị cũ nhiều hơn. Sau đó chạy lần nữa số lượng dòng ít hơn thì ghi xuống nếu chưa xóa giá trị cũ sẽ bị nhầm lẫn.
Bạn tự tìm hiểu và thêm vào
Anh cho em hỏi thêm là trường hợp nhiều cột, thì bắt buộc mình phải đánh nhiều "arr" ra luôn hả anh, chứ mình không có cách để gom gọn lại được hả. Cám ơn anh.Code trên tôi còn thiếu một khúc là xóa giá trị cũ trước khi gán giá trị mới. Giả sử nếu bạn chạy code lần 1 giá trị cũ nhiều hơn. Sau đó chạy lần nữa số lượng dòng ít hơn thì ghi xuống nếu chưa xóa giá trị cũ sẽ bị nhầm lẫn.
Bạn tự tìm hiểu và thêm vào
Có. Nhưng mà đang học cơ bản thì bạn cứ học vậy đi, thành thạo hơn tí sẽ ngộ ra thôiAnh cho em hỏi thêm là trường hợp nhiều cột, thì bắt buộc mình phải đánh nhiều "arr" ra luôn hả anh, chứ mình không có cách để gom gọn lại được hả. Cám ơn anh.
Mảng có 2 loại, mảng 2chiều và mảng 1 chiều.Em thực hiện lọc những dòng không có "ngày kết thúc" cho vào mảng (arr) rồi nhưng sao em trả ra thì lại không có gì ạ. Mong các anh chị giúp đỡ ạ.Em xin cám ơn nhiều ạ
Theo em thấy câu trả lời đúng là 2 loại, nhưng là mảng 1 chiều và mảng nhiều chiều chứ ạ? Vì không chỉ có mỗi 2 chiều mà nó có tới tối đa theo em biết là 60 chiều. Nhưng loại 1 và 2 là thường sử dụng nhấtMảng có 2 loại, mảng 2chiều và mảng 1 chiều.
Mình thì chưa có cơ hội xem cách sử dụng của mảng >= 3 chiều nên mặc định chỉ có mảng 1 chiều và mảng 2 chiều. Đa số anh em trên gpe đều chỉ quan tâm 2 cái mảng này.Theo em thấy câu trả lời đúng là 2 loại, nhưng là mảng 1 chiều và mảng nhiều chiều chứ ạ? Vì không chỉ có mỗi 2 chiều mà nó có tới tối đa theo em biết là 60 chiều. Nhưng loại 1 và 2 là thường sử dụng nhất
Các Thầy cho em hỏi thêm: Em đang hiểu là ở bên (1) là mảng và bên (2) là bên dữ liệu đổ vào mảng có đúng không ạ. Vì em đang thử là dữ liệu đổ vào mảng là dòng i cột 2. Nhưng em muốn lưu nó vào mảng và trả về của dòng K cột 4. Nhưng khi đổ dữ liệu vào mảng lại bị báo lỗi là như nào vậy ạ. Em cảm ơn.Theo em thấy câu trả lời đúng là 2 loại, nhưng là mảng 1 chiều và mảng nhiều chiều chứ ạ? Vì không chỉ có mỗi 2 chiều mà nó có tới tối đa theo em biết là 60 chiều. Nhưng loại 1 và 2 là thường sử dụng nhất
Gán mảng Arr là vùng A2:C thì không thể có cột >3 được bạn nhé. Chắc bạn nên tìm các bài trong diễn đàn về mảng (rất nhiều) để nắm cơ bản đã nhéCác Thầy cho em hỏi thêm: Em đang hiểu là ở bên (1) là mảng và bên (2) là bên dữ liệu đổ vào mảng có đúng không ạ. Vì em đang thử là dữ liệu đổ vào mảng là dòng i cột 2. Nhưng em muốn lưu nó vào mảng và trả về của dòng K cột 4. Nhưng khi đổ dữ liệu vào mảng lại bị báo lỗi là như nào vậy ạ. Em cảm ơn.
Lý thuyết về mảng còn tùy thuộc vào bạn muốn đào sâu vào đến phức tạp cỡ nào.Theo em thấy câu trả lời đúng là 2 loại, nhưng là mảng 1 chiều và mảng nhiều chiều chứ ạ? Vì không chỉ có mỗi 2 chiều mà nó có tới tối đa theo em biết là 60 chiều. Nhưng loại 1 và 2 là thường sử dụng nhất
Mảng nhiều hơn 2 chiều có chứ, vấn đề là mình kiểm soát được tới chiều thứ mấy. Chỉ tưởng tượng chiều thứ 4 là đã hoa mắt chóng mặt rồi. Mảng 3 chiều thì tôi có xài, nhưng nếu xài trong Excel thì dùng mảng trong mảng tiện lợi hơn.Mình thì chưa có cơ hội xem cách sử dụng của mảng >= 3 chiều nên mặc định chỉ có mảng 1 chiều và mảng 2 chiều. Đa số anh em trên gpe đều chỉ quan tâm 2 cái mảng này.
Nói thật mình chỉ biết VBA và VB6 thôi nên không hề có tí khái niệm nào với mảng lớn hơn 2 chiều. Chắc cũng khó đấy.
Dim ShArr 'mảng các sheet'
Redim ShArr(1 to 5) ' mảng 1 chiều'
For i = 1 to 5
LastRw = Sheets(i).Cells(1000, 1).End(xlUp).Row
ShArr(i) = Sheets(i).Range("A2:D" & LastRw).Value
MsgBox "Size: " & UBound(ShArr(i), 1) & " - " & UBound(ShArr(i), 2)
MsgBox "last Item = " & ShArr(i)(LastRw - 1, 4)
Next i