Hong.Van
Busy
- Tham gia
- 7/5/12
- Bài viết
- 2,330
- Được thích
- 1,767
Em chào thầy cô & anh chị
Em có viết code Dùng Find Method để lấy dữ liệu ở nhiều Sheet khác nhau theo điều kiện như sau
1/ Code sẽ cho kết quả từ cell Q9 trở xuống của Sheet TH
2/ Tại sheet TH : Nếu cell của cột P>0, thì dùng cell cột C để dò tìm tên các sheet tương ứng là T01 .... T12
Sau đó dùng tiếp cell tại cột K của Sheet TH để dò tìm mã tại cột B của sheet T?? mà vừa tìm được ở trên, nếu tìm được thì sẽ lấy số liệu tại cột J của dòng tưng ứng
3/ Kết qủa của cột Q = Số liệu vừa tìm được ở trên nhân với cell của cột P tại dòng tương ứng của Sheet TH
Cụ thể cthức tại Cell Q9 của sheet TH như sau
-----------
Em đã viết code nhưng báo lỗi ở chỗ (dòng màu đỏ) , dòng xác định tên Sheet
Xin vui lòng gỡ rối và chỉ thêm cho em.Em cảm ơn
Em có viết code Dùng Find Method để lấy dữ liệu ở nhiều Sheet khác nhau theo điều kiện như sau
1/ Code sẽ cho kết quả từ cell Q9 trở xuống của Sheet TH
2/ Tại sheet TH : Nếu cell của cột P>0, thì dùng cell cột C để dò tìm tên các sheet tương ứng là T01 .... T12
Sau đó dùng tiếp cell tại cột K của Sheet TH để dò tìm mã tại cột B của sheet T?? mà vừa tìm được ở trên, nếu tìm được thì sẽ lấy số liệu tại cột J của dòng tưng ứng
3/ Kết qủa của cột Q = Số liệu vừa tìm được ở trên nhân với cell của cột P tại dòng tương ứng của Sheet TH
Cụ thể cthức tại Cell Q9 của sheet TH như sau
PHP:
=IF(P9>0;P9*VLOOKUP(K9;INDIRECT("'"&C9&"'!$B$9:$J$500");9;0);0)
Em đã viết code nhưng báo lỗi ở chỗ (dòng màu đỏ) , dòng xác định tên Sheet
Mã:
Sub TTXuat()
Dim i As Long
Dim arrRes, arrSrc
Dim n1 As Range, rTmp As Range
Dim oldShName As Worksheet
With ActiveSheet
arrSrc = .Range(.[C9], .[C65536].End(3)).Resize(, 15).Value
End With
[COLOR=#ff0000]Set oldShName = Sheets(arrSrc(i, 1))[/COLOR]
With oldShName
Set n1 = .Range(.[B11], .[B65536].End(3))
End With
ReDim arrRes(1 To UBound(arrSrc, 1), 1 To 1)
For i = 1 To UBound(arrSrc, 1)
Set rTmp = n1.Find(arrSrc(i, 9), , xlValues, xlWhole)
If Not rTmp Is Nothing Then
If arrSrc(i, 14) > 0 Then arrRes(i, 1) = rTmp.Offset(, 9) * arrSrc(i, 14)
End If
Next i
ActiveSheet.Range("Q9").Resize(UBound(arrRes, 1)).Value = arrRes
End Sub