Lọc dữ liệu bằng mã hiệu. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

matran25251325

Thành viên tiêu biểu
Tham gia
13/1/11
Bài viết
424
Được thích
39
Lúc trước em có hỏi 1 bài lọc dữ liệu bằng tên và đã được giúp đỡ, nay em hỏi là lọc bằng mã hiệu và nhờ các anh giúp đỡ. Từ bảng sheet TLuongDT em muốn tổng hợp các máy có trong cột K sheet TLuongDT (mã hiệu ở cột Q) qua sheet CaMay và dữ liệu bên sheet CaMay được lấy và tính như sau:
+ Cột D (sheet ca máy) = cột E sheet Gia VLieu
+ Cột E (sheet ca máy) = cột F sheet Gia VLieu
+ Cột J (sheet ca máy) = cột D sheet NhanCong
+ Cột M (sheet ca máy) = cột D sheet Gia VLieu
File em có đính kèm bên dưới mong các anh ra tay ra chân giúp --=0
 

File đính kèm

Lúc trước em có hỏi 1 bài lọc dữ liệu bằng tên và đã được giúp đỡ, nay em hỏi là lọc bằng mã hiệu và nhờ các anh giúp đỡ. Từ bảng sheet TLuongDT em muốn tổng hợp các máy có trong cột K sheet TLuongDT (mã hiệu ở cột Q) qua sheet CaMay và dữ liệu bên sheet CaMay được lấy và tính như sau:
+ Cột D (sheet ca máy) = cột E sheet Gia VLieu
+ Cột E (sheet ca máy) = cột F sheet Gia VLieu
+ Cột J (sheet ca máy) = cột D sheet NhanCong
+ Cột M (sheet ca máy) = cột D sheet Gia VLieu
File em có đính kèm bên dưới mong các anh ra tay ra chân giúp --=0
Kết quả mẫu trong file có chắc đúng không?
Kết quả code chạy không giống kết quả mẫu, "ra chân chạy" thôi.
 

File đính kèm

Upvote 0
Kết quả mẫu trong file có chắc đúng không?
Kết quả code chạy không giống kết quả mẫu, "ra chân chạy" thôi.
HiHi vẫn có thầy bate luôn giúp em trong mọi lúc khó khăn. Về dữ liệu thì do em lấy 1 ít của bác anh tuấn để làm ví dụ nên có khi chạy code ko đúng với số mẫu, nhưng code lọc thì oke rồi thầy, chỉ có điều thầy xem lại giùm em hình như code không lọc những máy giống nhau (như file ví dụ có máy cắt sắt 5kw mã hiệu 8616 khi chạy code thì lại có 2 mã hiệu 8616). Thứ 2 thầy có thể chỉnh giùm em ko lọc loại Máy khác qua sheet camay. TK thầy.
 
Upvote 0
thầy BaTe sửa giùm em đoạn code chỉ cần lọc 1 mã hiệu qua sheet CaMay và không lọc mã hiệu 9999 (Máy khác).
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
thầy BaTe sửa giùm em đoạn code chỉ cần lọc 1 mã hiệu qua sheet CaMay và không lọc mã hiệu 9999 (Máy khác).
Ở bài #1 đâu có nói là mã trùng chỉ lấy 1
Còn vụ mã 9999 cũng không nói là không lấy.
Từ bảng sheet TLuongDT em muốn tổng hợp các máy có trong cột K sheet TLuongDT (mã hiệu ở cột Q) qua sheet CaMay và dữ liệu bên sheet CaMay được lấy và tính như sau:
+ Cột D (sheet ca máy) = cột E sheet Gia VLieu
+ Cột E (sheet ca máy) = cột F sheet Gia VLieu
+ Cột J (sheet ca máy) = cột D sheet NhanCong
+ Cột M (sheet ca máy) = cột D sheet Gia VLieu
Thử thay Sub cũ bằng Sub này coi sao:
[GPECODE=vb]Public Sub GPE()Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, May As String, Tem As Variant, tArr()
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("TLuong DT")
sArr = .Range(.[K10], .[K65536].End(xlUp)).Resize(, 7).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 14)
May = Sheets("CaMay").[B9].Value2
tArr = Sheets("CaMay").Range("A9:N9").FormulaR1C1
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 7)
If sArr(I, 1) Like May & "*" Then
If Tem <> Empty And Tem <> 9999 Then
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add sArr(I, 7), K
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 7)
dArr(K, 3) = sArr(I, 1)
For J = 6 To 14
If tArr(1, J) <> Empty Then
dArr(K, J) = tArr(1, J)
End If
Next J
End If
End If
End If
Next I
With Sheets("Gia VLieu")
sArr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 6).Value2
End With
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Dic.Exists(Tem) Then
dArr(Dic.Item(Tem), 4) = sArr(I, 5)
dArr(Dic.Item(Tem), 5) = sArr(I, 6)
dArr(Dic.Item(Tem), 13) = sArr(I, 4)
End If
Next I
With Sheets("NhanCong")
sArr = .Range(.[A6], .[A65536].End(xlUp)).Resize(, 4).Value2
End With
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Dic.Exists(Tem) Then
dArr(Dic.Item(Tem), 10) = sArr(I, 4)
End If
Next I
With Sheets("CaMay")
.[A10:N10000].ClearContents
.[A10:N10000].Borders.LineStyle = xlNone
If K Then
.[A10].Resize(K, 14) = dArr
.[A10].Resize(K, 14).Borders.LineStyle = xlContinuous
End If
End With
Set Dic = Nothing
End Sub[/GPECODE]
 
Upvote 0
Hi cảm ơn thầy nhiều, hic hỏi thầy nhiều bài rồi mà bài nào cũng thiếu sót làm thầy phải khó xử.
 
Upvote 0
Thầy BaTe ơi vào gỡ rối giúp em với

Code anh Ba bài trên có dòng: If sArr(I, 1) <> MayThiCong And sArr(I, 1) Like May & "*" Then

Bài dưới có dòng: IfsArr(I, 1) LikeMay & "*"Then

Cả hai lần đều không ổn, cũng không trách anh được, có trách thì chính bạn đó, hình như bạn làm XD, đi nhờ thầy giáo (nhưng không dạy XD) viết code, mà bạn lại không lường hết được thì làm sao anh Ba lường hết được, thành ra cứ nhờ đi nhờ lại hoài cũng chưa xong.

Giả sử trong hao phí của định mức có máy nhưng không có từ "máy" thì không được tổng hợp vào bảng giá ca máy? Chẳng bạn Ô tô, cần trục, ...
Ít ra câu trên phải được sửa lại là: If Trim(sArr(I, 2)) = "ca" Then

----------------------------------------
Đôi điều với bạn:
Bạn không thể làm một chương trình mà đi nhờ người viết code hết được. Bạn nên hỏi khi bị vướng mắc một chỗ nào đó thôi, bạn phải nổ lực hết mình để nghiên cứu ... Chúc bạn thành công!
 
Upvote 0
Đúng như anh ThanhLanh nói, em chưa lường được vấn đề này. đoạn IfsArr(I, 1) LikeMay & "*"Then đúng là lọc bị thiếu khi gặp loại ô tô, cần trục thiệt. Thật sự ko nhờ anh ThanhLanh thì em lại bị thầy BaTe la vì làm phiền rồi. Hic em cũng vừa học vừa làm vừa tìm hiểu nên đến đâu thì lại hỏi đến đó, cũng may nhờ các anh trên diễn đàn giúp đỡ.
 
Lần chỉnh sửa cuối:
Upvote 0
Code anh Ba bài trên có dòng: If sArr(I, 1) <> MayThiCong And sArr(I, 1) Like May & "*" Then

Bài dưới có dòng: IfsArr(I, 1) LikeMay & "*"Then

Cả hai lần đều không ổn, cũng không trách anh được, có trách thì chính bạn đó, hình như bạn làm XD, đi nhờ thầy giáo (nhưng không dạy XD) viết code, mà bạn lại không lường hết được thì làm sao anh Ba lường hết được, thành ra cứ nhờ đi nhờ lại hoài cũng chưa xong.

Giả sử trong hao phí của định mức có máy nhưng không có từ "máy" thì không được tổng hợp vào bảng giá ca máy? Chẳng bạn Ô tô, cần trục, ...
Ít ra câu trên phải được sửa lại là: If Trim(sArr(I, 2)) = "ca" Then

----------------------------------------
Đôi điều với bạn:
Bạn không thể làm một chương trình mà đi nhờ người viết code hết được. Bạn nên hỏi khi bị vướng mắc một chỗ nào đó thôi, bạn phải nổ lực hết mình để nghiên cứu ... Chúc bạn thành công!
Híc! Đến hôm nay mới gặp "tri âm". Cảm ơn bạn nghe!
Không phải cùng ngành chuyên môn mà gặp bài hỏi không rõ, hỏi lắt nhắt, diễn đạt lòng vòng, "ý quên", "em nhầm", "em chỉ ví dụ thôi, file thật của em hơi khác một chút", ... theo riết "mắc đuối".
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom