quyenpv
Thu nhặt kiến thức
- Tham gia
- 5/1/13
- Bài viết
- 727
- Được thích
- 97
- Giới tính
- Nam
- Nghề nghiệp
- Decode cuộc đời!
Hiện nay khâu đối soát vật tư giao nhà thầu thi công rất nhức đầu và thường xuyên phải chốt biên bản mất mát và yêu cầu đền vật tư với các đơn vị
Em có bảng đối sót vật tư trong đó có S.Luong Xuất kho - S.Luong thực tế - S.Luong đã Nhập kho = Số lượng đền bù mất mát
Em đang tập tành sử dụng Dictionary để liệt kê mã vật tư và lấy giá trị mong muốn. Gặt lỗi cùng 1 mã vật tư nhưng đơn giá vật tư lại khác nhau
Nếu cùng mã, cùng đơn giá thì cộng các giá trị lại và liệt kê vào bảng, Ngược lại cùng mã vật tư nhưng khác đơn giá thi không cộng và liệt kê vào bảng
Mong anh chị sửa giúp em với ạ
Em có bảng đối sót vật tư trong đó có S.Luong Xuất kho - S.Luong thực tế - S.Luong đã Nhập kho = Số lượng đền bù mất mát
Em đang tập tành sử dụng Dictionary để liệt kê mã vật tư và lấy giá trị mong muốn. Gặt lỗi cùng 1 mã vật tư nhưng đơn giá vật tư lại khác nhau
Nếu cùng mã, cùng đơn giá thì cộng các giá trị lại và liệt kê vào bảng, Ngược lại cùng mã vật tư nhưng khác đơn giá thi không cộng và liệt kê vào bảng
Mong anh chị sửa giúp em với ạ
Mã:
Sub BBLV_MatVTu()
Dim Dic1 As Object, iRow As Long, i As Long
Dim Arr() As Variant, TmpArr As Variant
With Sheet1
.Range("A5:K100").ClearContents
Set Dic1 = CreateObject("Scripting.Dictionary") 'Tao Dic
EndR = Sheet37.[F65000].End(xlUp).Row
TmpArr = Sheet37.Range("B11:G" & EndR).Value
ReDim Arr(1 To UBound(TmpArr, 1), 1 To 10) 'Xac dinh Kich thuoc mang Arr dua tren mang TmpArr
For iRow = 1 To UBound(TmpArr, 1) 'Dung vong lap duyet qua chieu doc cua mang tu B2 den G21
If Not IsEmpty(TmpArr(iRow, 4)) And Not Dic1.Exists(TmpArr(iRow, 4)) Then 'Bat dau iRow = 1, neu B12 khong rong và ko ton tai
i = i + 1
Dic1.Add TmpArr(iRow, 4), i
Arr(i, 1) = TmpArr(iRow, 4) 'Ma VT
Arr(i, 2) = TmpArr(iRow, 3) 'Ten Vat
Arr(i, 3) = "dvt" 'DVT
' Arr(i, 9) = TmpArr(iRow, 6)
If TmpArr(iRow, 5) <> 0 Then 'Ktra so luong xuat <>0
Arr(i, 4) = TmpArr(iRow, 5) 'So luong
End If
Else
If TmpArr(iRow, 5) <> 0 Then 'Ktra MVT neu trung ma thi + them Sluong xuat kho
Arr(Dic1.Item(TmpArr(iRow, 4)), 4) = Arr(Dic1.Item(TmpArr(iRow, 4)), 4) + TmpArr(iRow, 5)
Arr(i, 9) = TmpArr(iRow, 6)
Else
Arr(Dic1.Item(TmpArr(iRow, 4)), 4) = Arr(Dic1.Item(TmpArr(iRow, 4)), 4) ' + TmpArr(iRow, 5)
Arr(i, 9) = TmpArr(iRow, 6)
End If
End If
Next iRow
.Range("B5").Resize(i, 10).Value = Arr
End With
End Sub