tranphuson
Thành viên thường trực
- Tham gia
- 14/8/09
- Bài viết
- 269
- Được thích
- 10
- Giới tính
- Nam
Một số trọng lượng không có trong bảng tra nên lỗi.Mình có 1 file tính vận cước vận chuyển, trong file này công thức còn bị lỗi. Vui lòng hỗ trợ
1. Công thức Cột Y chưa đúng nên chưa thể hiện giá trị
2. Cột AA so sánh giữa Cột Z - Cột V
Nếu được thì chuyển qua VBA tính cũng được. Xin cảm ơn
Y4=INDEX('Cost- Raw'!$B$3:$AN$171,SUMPRODUCT(('Cost- Raw'!$A$3:$A$171=$P4)*ROW($3:$171))-2,MATCH($N4,'Cost- Raw'!$B$1:$AN$1,0)+MATCH($X4,'Cost- Raw'!$B$2:$J$2,0)-1)
Một số trọng lượng không có trong bảng tra nên lỗi.
Nếu A3:A171 sheet "Cost- Raw" gõ = tay thì công thức sẽ gọn hơn.
Mã:Y4=INDEX('Cost- Raw'!$B$3:$AN$171,SUMPRODUCT(('Cost- Raw'!$A$3:$A$171=$P4)*ROW($3:$171))-2,MATCH($N4,'Cost- Raw'!$B$1:$AN$1,0)+MATCH($X4,'Cost- Raw'!$B$2:$J$2,0)-1)
Một số trọng lượng không có trong bảng tra nên rỗng.Cảm ơn bạn đã hỗ trợ. Mình có thể chuyển công thức Excel bằng VBA được chứ, xin cảm ơn lần nữa
Sub CuocCP()
Dim GIA
Dim TK
Dim STT
Dim KQ
Dim i, j, k
With Sheet6
k = .Range("A3").End(xlDown).Row
TK = .Range("A3", "AA" & k)
End With
With Sheet7
GIA = .Range("A1", .Range("AN2").End(xlDown))
k = .Range("A3").End(xlDown) * 100
End With
ReDim STT(1 To k, 1 To 1)
For i = 3 To UBound(GIA)
STT(GIA(i, 1) * 100, 1) = i
Next i
With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(GIA, 2) Step 10
.Item(GIA(1, i)) = i
Next i
For j = 2 To 10
.Item(GIA(2, j)) = j - 1
Next j
ReDim KQ(1 To UBound(TK) - 1, 1 To 1)
For i = 2 To UBound(TK)
If STT(TK(i, 16) * 100, 1) Then
k = STT(TK(i, 16) * 100, 1)
j = .Item(TK(i, 14)) + .Item(TK(i, 24)) - 1
KQ(i - 1, 1) = GIA(k, j)
End If
Next i
End With
With Sheet6
.Range("Y4").Resize(UBound(KQ), 1) = KQ
End With
End Sub
Một số trọng lượng không có trong bảng tra nên rỗng.
Mã:Sub CuocCP() Dim GIA Dim TK Dim STT Dim KQ Dim i, j, k With Sheet6 k = .Range("A3").End(xlDown).Row TK = .Range("A3", "AA" & k) End With With Sheet7 GIA = .Range("A1", .Range("AN2").End(xlDown)) k = .Range("A3").End(xlDown) * 100 End With ReDim STT(1 To k, 1 To 1) For i = 3 To UBound(GIA) STT(GIA(i, 1) * 100, 1) = i Next i With CreateObject("Scripting.Dictionary") For i = 2 To UBound(GIA, 2) Step 10 .Item(GIA(1, i)) = i Next i For j = 2 To 10 .Item(GIA(2, j)) = j - 1 Next j ReDim KQ(1 To UBound(TK) - 1, 1 To 1) For i = 2 To UBound(TK) If STT(TK(i, 16) * 100, 1) Then k = STT(TK(i, 16) * 100, 1) j = .Item(TK(i, 14)) + .Item(TK(i, 24)) - 1 KQ(i - 1, 1) = GIA(k, j) End If Next i End With With Sheet6 .Range("Y4").Resize(UBound(KQ), 1) = KQ End With End Sub
Bạn vẫn giữ nguyên code gốc?Cho mình hỏi thêm là số lượng dòng tăng lên trong file này bị báo lỗi
View attachment 226232
Xin cảm ơn
Bạn vẫn giữ nguyên code gốc?
Bài đã được tự động gộp:
Số liệu Sheet pop_up của bạn khác xa file mẫu đó bạn.
Vấn đề là tại sheet po_upMình có đánh nhầm thêm số 0 vào "STT(GIA(i, 1) * 100, 1) = i". Ngoài ra mình bổ sung thêm giá vận chuyển chi tiết thêm để Sheet "Pop-up" dò ra giá trị đúng.
Xin cảm ơn
Vấn đề là tại sheet po_up
file bài 1: max cột P=33 < max weight của sheet cost_raw ( 55 )
file bài 6: max cột P=355 > max weight của sheet cost_raw ( 55 )