返回列表 上一主題 發帖

[發問] 如何設定自動抓取分量單價

[發問] 如何設定自動抓取分量單價

由於工作上需要,採買時需比對分量單價, 不知道應該怎麼設定才好
QA.jpg

自動抓批量的單價.rar (8.83 KB)

抓取分量單價

E3:
=INDEX(資料庫!E:E,-LOOKUP(,-MATCH(1,(資料庫!$D$1:$D$9>=$D3)/(資料庫!$A$1:$A$9=$A3)/(資料庫!$B$1:$B$9=$B3),{1,0})))&""

或:儲存格格式設成"#", 去掉後面的&""

資料庫必須以"數量"遞增排序~~

TOP

E3:G6{=IFERROR(LOOKUP(1,0/(資料庫!$A$2:$A$99=$A3)/(資料庫!$B$2:$B$99=$B3)/(資料庫!$C$2:$C$99=$C3)/(資料庫!$D$2:$D$9<=$D3),資料庫!E$2:E$99),INDEX(資料庫!E:E,MIN(IF((資料庫!$A$2:$A$99=$A3)*(資料庫!$B$2:$B$99=$B3)*(資料庫!$C$2:$C$99=$C3),ROW($2:$99)))))
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 2# 准提部林


    謝謝~~可以自動抓取分量單價了!!~大感謝:)

TOP

E3:G6{=IFERROR(LOOKUP(1,0/(資料庫!$A$2A$99=$A3)/(資料庫!$B$2B$99=$B3)/(資料庫!$C$2C$99=$C3)/(資 ...
hcm19522 發表於 2021-2-9 12:19



    謝謝~~這個函數也相當實用 解決我好幾週的困擾 大感謝!!~ :)

TOP

單價抓分量

    您好, 目前遇到不同excel排版的分量抓取, 不知fx應如何下, 能否請大大再次協助, 謝謝

(不能上傳檔案,所以將excel放在dropbox)

單價抓分量

test.jpg

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與字典,VBA練習方案如下,請各位前輩指教

執行前:
20231129_1.jpg
2023-11-29 07:16


執行結果:
20231129_2.jpg
2023-11-29 07:17


Option Explicit
Sub TEST()
Dim Arr, Brr, Crr, V, Z, Z1, A, i&, Q, T$, Ta$, Tb$, Tc$, Td$, Mi&, Ma&, ii&, Rp$
Set Arr = CreateObject("System.Collections.ArrayList")
Set Z = CreateObject("Scripting.Dictionary")
Set Z1 = CreateObject("Scripting.Dictionary")
Brr = Range([資料庫!G1], [資料庫!A65536].End(3))
Crr = Range([搜尋!G1], [搜尋!A65536].End(3))
Rp = Application.Rept(0, 9)
For i = 2 To UBound(Brr)
   Ta = Trim(Brr(i, 1))
   Tb = Format(Val(Brr(i, 2)), Rp)
   Tc = Trim(Brr(i, 3))
   Td = Format(Val(Brr(i, 4)), Rp)
   T = Ta & Tb & Tc & "|" & Td
   Z(T) = i: T = Ta & Tb & Tc
   Z1(T & "|Ma") = IIf(Z1(T & "|Ma") < Val(Td), Val(Td), Z1(T & "|Ma"))
   Z1(T & "|Mi") = IIf(Z1(T & "|Mi") = 0, Z1(T & "|Ma"), IIf(Z1(T & "|Mi") > Val(Td), Val(Td), Z1(T & "|Mi")))
Next
For i = 3 To UBound(Crr)
   Ta = Trim(Crr(i, 1))
   Tb = Format(Val(Crr(i, 2)), Rp)
   Tc = Trim(Crr(i, 3))
   Td = Format(Val(Crr(i, 4)), Rp)
   T = Ta & Tb & Tc & "|" & Td
   Z(T) = Z(T): Crr(i, 1) = T
Next
For Each A In Z.Keys
   If A <> vbNullString And Not Arr.contains(A) Then Arr.Add (A)
Next
Arr.Sort: Arr = Arr.toarray
For i = 0 To UBound(Arr)
   Q = Split(Arr(i), "|"): V = Val(Q(1))
   If T <> Q(0) Then T = Q(0)
   Mi = Z1(Q(0) & "|Mi"):  Ma = Z1(Q(0) & "|Ma")
   If V <= Mi Then Z(Arr(i)) = Z(T & "|" & Format(Mi, Rp)): GoTo i02
   If V >= Ma Then Z(Arr(i)) = Z(T & "|" & Format(Ma, Rp)): GoTo i02
   For ii = i + 1 To UBound(Arr)
      If Z(Arr(ii)) <> "" Then Z(Arr(i)) = Z(Arr(ii)): Exit For
   Next
i02: Next
For i = 3 To UBound(Crr)
   Crr(i - 2, 3) = Brr(Z(Crr(i, 1)), 7)
   Crr(i - 2, 2) = Brr(Z(Crr(i, 1)), 6)
   Crr(i - 2, 1) = Brr(Z(Crr(i, 1)), 5)
Next
[搜尋!I3].Resize(UBound(Crr) - 2, 3) = Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題