vba_gpe
Thành viên thường trực
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 15/12/10
- Bài viết
- 296
- Được thích
- 44
- Nghề nghiệp
- Thất nghiệp
Em chào mọi người.
Em mới làm quen với mảng trong VBA. Em tìm trên diễn đàn mình nhiều ví dụ về mảng nhưng đến nay em vẫn chưa tiếp thu được nhiều kiến thức về mảng.
Em có tạo cho mình 1 bài toán để giải quyết bằng cách dùng mảng như sau.
Tính tổng hợp số xe từ 3 hãng Honda, Huyndai, Suzuki của từng đại lý (Như hình).
Theo logic của em qua nhiều bài đã đọc tham khảo từ nhìu bài viết trên diễn đàn?
- Bước 1: Gán mảng arr vùng cần duyệt.
- Bước 2: Duyệt từ trên xuống dưới các giá trị của arr. Nếu có điều kiện đại lý =>Kiểm tra 3 mảng trước đó (honda,suzuki,huyndai) đã có chưa = > Ghi dữ liệu trước đó (nếu có) => Xóa 3 mảng đó và khai báo lại mảng để bắt đầu thêm phần tử vào mảng. Dựa vào 2 từ bắt đầu của nhà sx (Ho,Su,Hu) để thêm các phần tử vào mảng tương ứng.
Em thử code như thế này mong nhận được góp ý của mọi người:
![1.png 1.png](https://www.giaiphapexcel.com/diendan/data/attachments/166/166085-1462a76af1167748e9ed073549b81efa.jpg?hash=FGKnavEWd0)
Em cảm ơn mọi người.
Em mới làm quen với mảng trong VBA. Em tìm trên diễn đàn mình nhiều ví dụ về mảng nhưng đến nay em vẫn chưa tiếp thu được nhiều kiến thức về mảng.
Em có tạo cho mình 1 bài toán để giải quyết bằng cách dùng mảng như sau.
Tính tổng hợp số xe từ 3 hãng Honda, Huyndai, Suzuki của từng đại lý (Như hình).
Theo logic của em qua nhiều bài đã đọc tham khảo từ nhìu bài viết trên diễn đàn?
- Bước 1: Gán mảng arr vùng cần duyệt.
- Bước 2: Duyệt từ trên xuống dưới các giá trị của arr. Nếu có điều kiện đại lý =>Kiểm tra 3 mảng trước đó (honda,suzuki,huyndai) đã có chưa = > Ghi dữ liệu trước đó (nếu có) => Xóa 3 mảng đó và khai báo lại mảng để bắt đầu thêm phần tử vào mảng. Dựa vào 2 từ bắt đầu của nhà sx (Ho,Su,Hu) để thêm các phần tử vào mảng tương ứng.
Em thử code như thế này mong nhận được góp ý của mọi người:
![1.png 1.png](https://www.giaiphapexcel.com/diendan/data/attachments/166/166085-1462a76af1167748e9ed073549b81efa.jpg?hash=FGKnavEWd0)
PHP:
Sub Vidu()
Dim arr()
Dim lr As Long
lr = Range("B" & Rows.Count).End(xlUp).Row
arr() = Range("A1:D" & lr).Value
Dim arrHo(), arrHu(), arrSu()
Dim i As Long
For i = 1 To lr
If arr(i, 1) <> "" Then
If isarray(arrHo()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrHo()), 2).Value = arrHo
If isarray(arrHu()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrHu()), 2).Value = arrHu
If isarray(arrSu()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrSu()), 2).Value = arrSu
'Reset lai tu dau cac mang??
ReDim arrHo(1 To UBound(arr()), 1 To 2)
ReDim arrHu(1 To UBound(arr()), 1 To 2)
ReDim arrSu(1 To UBound(arr()), 1 To 2)
Else
Select Case UCase$(Left(arr(i, 3), 2))
Case "HO"
Dim r1 As Long
r1 = r1 + 1
arrHo(r1, 1) = arr(i, 2)
arrHo(r1, 2) = arr(i, 4)
Case "HU"
Dim r2 As Long
r2 = r2 + 1
arrHo(r2, 1) = arr(i, 2)
arrHo(r2, 2) = arr(i, 4)
Case "SU"
Dim r3 As Long
r3 = r3 + 1
arrHo(r3, 1) = arr(i, 2)
arrHo(r3, 2) = arr(i, 4)
End Select
End If
Next
If isarray(arrHo()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrHo()), 2).Value = arrHo
If isarray(arrHu()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrHu()), 2).Value = arrHu
If isarray(arrSu()) Then Range("G" & Range("G65536").End(xlUp).Row + 1).Resize(UBound(arrSu()), 2).Value = arrSu
End Sub
Em cảm ơn mọi người.
File đính kèm
Lần chỉnh sửa cuối: