sonchuot90
Thành viên mới
- Tham gia
- 16/4/22
- Bài viết
- 42
- Được thích
- 6
Bạn tham khảo. . .em muốn dùng VBA
dạ anh ơi, có cách nào cứ paste dữ liệu vào sheet data thì dữ liệu tự động ra kết quả không ạ.Bạn tham khảo. . .
Có đấy, nhưng kết quả trên đã đúng chưa bạn.dạ anh ơi, có cách nào cứ paste dữ liệu vào sheet data thì dữ liệu tự động ra kết quả không ạ.
Mượn file và code của #2có cách nào cứ paste dữ liệu vào sheet data thì dữ liệu tự động ra kết quả không ạ.
dạ kết quả ra đúng rồi ạ, anh lấy luôn cho em kho và số lượng sang luôn, tại file em đang dùng cột phụ là cột A, Em cám ơn ạCó đấy, nhưng kết quả trên đã đúng chưa bạn.
Bên sheet 2 có thấy cột nào ghi là cột số lượng đâu bạn.dạ kết quả ra đúng rồi ạ, anh lấy luôn cho em kho và số lượng sang luôn, tại file em đang dùng cột phụ là cột A, Em cám ơn ạ
dạ cột H sheet OK đó anh.Bên sheet 2 có thấy cột nào ghi là cột số lượng đâu bạn.
Tặng luôn đấy. . .Mượn file và code của #2
Tốt nhất là làm file hoàn chỉnh hẳn đi đã, đầy đủ tiêu đề đàng hoàng vào rồi làm một thể bạn nhé, trông file lem nhem quá cũng chán.dạ cột H sheet OK đó anh.
file hoàn chỉnh của em là như thế này, do em dùng công thức, lên em phải làm cột phụ A để lấy điều kiện chuyển sang, các cột Kho, mã dài ,mã ngắn và số lượng, file em phải phụ thuộc vào cột phụ A, lên anh giúp em lấy kho và số lượng tương ứng mã hàng đấy sang giúp em, để em bỏ cột Phụ A đấy đi ạ, Em cám ơn anh ạTặng luôn đấy. . .
Bài đã được tự động gộp:
Tốt nhất là làm file hoàn chỉnh hẳn đi đã, đầy đủ tiêu đề đàng hoàng vào rồi làm một thể bạn nhé, trông file lem nhem quá cũng chán.
Vậy bạn gửi ảnh thì mình đưa code vào đâu, hay mình đi tạo file mới cho bạn chăng.file hoàn chỉnh của em là như thế này, do em dùng công thức, lên em phải làm cột phụ A để lấy điều kiện chuyển sang, các cột Kho, mã dài ,mã ngắn và số lượng, file em phải phụ thuộc vào cột phụ A, lên anh giúp em lấy kho và số lượng tương ứng mã hàng đấy sang giúp em, để em bỏ cột Phụ A đấy đi ạ, Em cám ơn anh ạView attachment 274574
dạ, em xin lỗi anhVậy bạn gửi ảnh thì mình đưa code vào đâu, hay mình đi tạo file mới cho bạn chăng.
Mình hỏi để viết luôn một thể.
1,cột mã chuyển kho là dùng vlookup tìm theo cột điều kiện cột D, cột J:L hoặc cột K:L , nếu không có 2 cột J K thì trả về khoảng trắngMình hỏi để viết luôn một thể.
1/ Cột mã chuyển về kho của bạn điều kiện tìm kiếm là gì vậy.
2/ Sao lại cần 2 cột kho, hai cột này có khác nhau không.
Bạn kiểm tra lại nhé.1,cột mã chuyển kho là dùng vlookup tìm theo cột điều kiện cột D, cột J:L hoặc cột K:L , nếu không có 2 cột J K thì trả về khoảng trắng
2, 2 mã cột kho là 1 ạ
hay quá anh, đúng ý em rồi, em cám ơn anh rất nhiềuBạn kiểm tra lại nhé.
Sub ABC()
Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y
Y = Array("2", "3", "4", "6", "7")
X = Array("2", "1", "3", "3", "4")
Set Dic = CreateObject("scripting.dictionary")
With Sheets("OK")
iR = .Range("L" & Rows.Count).End(3).Row
sArr = .Range("I2:L" & iR).Value
For i = 1 To UBound(sArr)
If Dic.exists(sArr(i, 4)) = False Then
Dic.Item(sArr(i, 4)) = i
Dic.Item(sArr(i, 1)) = i
End If
Next
End With
With Sheets("data")
iR = .Range("A" & Rows.Count).End(3).Row
Arr = .Range("A2:D" & iR).Value
ReDim Res(1 To UBound(Arr), 1 To 7)
For i = 1 To UBound(Arr)
If Dic.exists(Arr(i, 1)) = False Then
K = K + 1
Res(K, 1) = K
For j = 0 To 4
Res(K, CLng(Y(j))) = Arr(i, CLng(X(j)))
Next
If Dic.Item(Arr(i, 2)) > 0 Then
Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4)
End If
End If
Next
If K Then
Sheets("OK").Range("B2:H100000").ClearContents
Sheets("OK").Range("B2").Resize(K, 7).Value = Res
End If
End With
Set Dic = Nothing
End Sub
Vâng, em cám ơn anh ạThêm 1 cách khác tham khảo:
Mã:Sub ABC() Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y Y = Array("2", "3", "4", "6", "7") X = Array("2", "1", "3", "3", "4") Set Dic = CreateObject("scripting.dictionary") With Sheets("OK") iR = .Range("L" & Rows.Count).End(3).Row sArr = .Range("I2:L" & iR).Value For i = 1 To UBound(sArr) If Dic.exists(sArr(i, 4)) = False Then Dic.Item(sArr(i, 4)) = i Dic.Item(sArr(i, 1)) = i End If Next End With With Sheets("data") iR = .Range("A" & Rows.Count).End(3).Row Arr = .Range("A2:D" & iR).Value ReDim Res(1 To UBound(Arr), 1 To 7) For i = 1 To UBound(Arr) If Dic.exists(Arr(i, 1)) = False Then K = K + 1 Res(K, 1) = K For j = 0 To 4 Res(K, CLng(Y(j))) = Arr(i, CLng(X(j))) Next If Dic.Item(Arr(i, 2)) > 0 Then Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4) End If End If Next If K Then Sheets("OK").Range("B2:H100000").ClearContents Sheets("OK").Range("B2").Resize(K, 7).Value = Res End If End With Set Dic = Nothing End Sub
Dạ. Em thử thì em thấy mã chuyển về kho không đúng lắm. Mã chuyển về kho dựa vào điều kiện mã dài ( cột D).nhưng anh đang lấy theo mã ngắn (cột C) thì phải. Có vẻ không đúng lắm ạThêm 1 cách khác tham khảo:
Mã:Sub ABC() Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y Y = Array("2", "3", "4", "6", "7") X = Array("2", "1", "3", "3", "4") Set Dic = CreateObject("scripting.dictionary") With Sheets("OK") iR = .Range("L" & Rows.Count).End(3).Row sArr = .Range("I2:L" & iR).Value For i = 1 To UBound(sArr) If Dic.exists(sArr(i, 4)) = False Then Dic.Item(sArr(i, 4)) = i Dic.Item(sArr(i, 1)) = i End If Next End With With Sheets("data") iR = .Range("A" & Rows.Count).End(3).Row Arr = .Range("A2:D" & iR).Value ReDim Res(1 To UBound(Arr), 1 To 7) For i = 1 To UBound(Arr) If Dic.exists(Arr(i, 1)) = False Then K = K + 1 Res(K, 1) = K For j = 0 To 4 Res(K, CLng(Y(j))) = Arr(i, CLng(X(j))) Next If Dic.Item(Arr(i, 2)) > 0 Then Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4) End If End If Next If K Then Sheets("OK").Range("B2:H100000").ClearContents Sheets("OK").Range("B2").Resize(K, 7).Value = Res End If End With Set Dic = Nothing End Sub
Hihi. Tham khảo vui thôi. Đang tập tành về dictionaryDạ. Em thử thì em thấy mã chuyển về kho không đúng lắm. Mã chuyển về kho dựa vào điều kiện mã dài ( cột D).nhưng anh đang lấy theo mã ngắn (cột C) thì phải. Có vẻ không đúng lắm ạ
Hihi. Tham khảo vui thôi. Đang tập tành về dictionary
Anh ấy mới tập nên lấy theo mã ngắn cho nhanh, mình cũng vậy, chủ định lấy theo mã ngắn nhưng lúng túng thế nào lại nhầm phải mã dài. Nhưng may hơn khôn lại thành đúng.nhưng anh đang lấy theo mã ngắn (cột C)