thanhphuongvip
Mới học VBA, hỏi ngu anh chị đừng chửi ạ
- Tham gia
- 16/1/10
- Bài viết
- 136
- Được thích
- 22
Chào anh chị!
Em đang học VBA, học bóc tác dữ liệu từ Sheet TraCuu sang Sheet CONGNO theo từng Ngày đặt hàng, một ngày tương ứng em gán dữ liệu vào mảng arr để đưa vào sheet CONGNO.
Đây là sheet TraCuu:
Em muốn nó xuất ra sheet CONGNO theo mẫu như thế này:
Nghĩa là dữ liệu đi theo từng ngày, nhưng vấn đề là khi em đưa dữ liệu từng ngày vào mảng để dán ra sheet CONGNO thì có những phần tử có giá trị rỗng nên khi dán ra nó dư dòng trống nên kết quả không mong muốn, như này:
Vày đây là code của em:
Cho em hỏi là sau khi gán dữ liệu vào mảng arr rồi, có cách nào xóa đi những phần tử có giá trị rỗng ko, để lúc dán ra nó ko dư các dòng trống! Hoặc anh chị có cách nào thì chỉ giúp em với.
Xin cảm ơn anh chị đã giúp đỡ!
Em có gửi file đính kèm ạ!
Em đang học VBA, học bóc tác dữ liệu từ Sheet TraCuu sang Sheet CONGNO theo từng Ngày đặt hàng, một ngày tương ứng em gán dữ liệu vào mảng arr để đưa vào sheet CONGNO.
Đây là sheet TraCuu:
Em muốn nó xuất ra sheet CONGNO theo mẫu như thế này:
Nghĩa là dữ liệu đi theo từng ngày, nhưng vấn đề là khi em đưa dữ liệu từng ngày vào mảng để dán ra sheet CONGNO thì có những phần tử có giá trị rỗng nên khi dán ra nó dư dòng trống nên kết quả không mong muốn, như này:
Vày đây là code của em:
Mã:
Option Explicit
Sub CONGNO()
'Call TraCuuKH
Dim ShTraCuu As Worksheet
Dim ShCongNo As Worksheet
Dim dic As Scripting.Dictionary
Set ShTraCuu = ThisWorkbook.Sheets("TraCuu")
Set ShCongNo = ThisWorkbook.Sheets("CONGNO")
Set dic = New Scripting.Dictionary
Dim i As Long, lrTraCuu As Long, a As Long, b As Long
Dim k As Long, RowDate As Long, j As Long, SoDongDuLieu As Long
Dim dArr(), sArr(), arr()
Dim TieuDe As Range
Set TieuDe = ShCongNo.Range("P1:V1")
RowDate = 26
lrTraCuu = ShTraCuu.Range("E1000000").End(xlUp).Row
dArr = ShTraCuu.Range("C9:AI" & lrTraCuu).Value
ReDim sArr(1 To UBound(dArr()), 1 To 1)
For i = 1 To UBound(dArr(), 1)
If Not dic.Exists(dArr(i, 20)) Then
a = a + 1
dic.Add dArr(i, 20), a
End If
Next i
sArr() = WorksheetFunction.Transpose(dic.Keys)
For k = 1 To UBound(sArr())
ShCongNo.Cells(RowDate, 11) = CDate(sArr(k, 1))
TieuDe.Copy ShCongNo.Range("E" & RowDate + 1)
ReDim arr(1 To UBound(dArr()), 1 To 7)
For j = 1 To UBound(arr())
If ShCongNo.Range("K" & RowDate) = dArr(j, 20) Then
b = b + 1
arr(b, 1) = b
arr(b, 2) = dArr(j, 2)
arr(b, 3) = dArr(j, 3)
arr(b, 4) = dArr(j, 4)
arr(b, 5) = dArr(j, 6)
arr(b, 6) = dArr(j, 7)
arr(b, 7) = dArr(j, 8)
End If
Next j
ShCongNo.Range("E" & RowDate + 2).Resize(UBound(arr()), 7) = arr
SoDongDuLieu = WorksheetFunction.CountIf(ShTraCuu.Range("NgayDatHang_TraCuu"), ShCongNo.Cells(RowDate, 11).Value)
ShCongNo.Range("H" & RowDate + SoDongDuLieu + 2) = ShCongNo.Range("TONGCONG").Value
ShCongNo.Range("K" & RowDate + SoDongDuLieu + 2) = WorksheetFunction.SumIf(ShTraCuu.Range("NgayDatHang_TraCuu"), ShCongNo.Cells(RowDate, 11), ShTraCuu.Range("THANHTIEN_TRACUU"))
ShCongNo.Range("H" & RowDate + SoDongDuLieu + 3) = ShCongNo.Range("CHIETKHAU").Value
ShCongNo.Range("K" & RowDate + SoDongDuLieu + 3) = WorksheetFunction.SumIf(ShTraCuu.Range("NgayDatHang_TraCuu"), ShCongNo.Cells(RowDate, 11), ShTraCuu.Range("CHIETKHAU_TRACUU"))
ShCongNo.Range("H" & RowDate + SoDongDuLieu + 4) = ShCongNo.Range("CONLAI").Value
ShCongNo.Range("K" & RowDate + SoDongDuLieu + 4) = WorksheetFunction.SumIf(ShTraCuu.Range("NgayDatHang_TraCuu"), ShCongNo.Cells(RowDate, 11), ShTraCuu.Range("CONLAI_TRACUU"))
RowDate = RowDate + SoDongDuLieu + 6
Erase arr
Next k
End Sub
Cho em hỏi là sau khi gán dữ liệu vào mảng arr rồi, có cách nào xóa đi những phần tử có giá trị rỗng ko, để lúc dán ra nó ko dư các dòng trống! Hoặc anh chị có cách nào thì chỉ giúp em với.
Xin cảm ơn anh chị đã giúp đỡ!
Em có gửi file đính kèm ạ!
File đính kèm
Lần chỉnh sửa cuối: