| ©«¤l1515 ¥DÃD40 ºëµØ0 ¿n¤À1539 ÂI¦W0  §@·~¨t²ÎWindows  7 ³nÅ骩¥»Excel 2010 & 2016 ¾\ŪÅv100 ©Ê§O¨k ¨Ó¦Û¥xÆW µù¥U®É¶¡2020-7-15 ³Ì«áµn¿ý2025-10-31 
 | 
                
| ¥»©«³Ì«á¥Ñ Andy2483 ©ó 2024-2-27 15:20 ½s¿è 
 ¦^´_ 1# 198188
 
 ÁÂÁ«e½úµoªí¦¹¥DÃD»P½d¨Ò
 «á¾ÇÂǦ¹©«¾Ç¨ì¤F ROUND() «Ü¦hª¾ÃÑ,¾Ç²ß¤è®×¦p¤U,½Ð«e½ú°Ñ¦Ò
 https://learn.microsoft.com/zh-t ... help/round-function
 
 Option Explicit
 Sub TEST()
 Dim Arr, Brr, Crr, V, Z, Q, i&, j%, R&, c%, Y&, X%, T$, T1$, T2$, T3$
 Dim xR As Range, Ra As Range, Sh As Worksheet, xBook As Workbook
 Set Z = CreateObject("Scripting.Dictionary")
 Brr = Range([Data!E2], [Data!A65536].End(3))
 For i = 1 To UBound(Brr)
 T = Trim(Brr(i, 1)) & "/" & Val(Brr(i, 2)) & "/" & Val(Brr(i, 3))
 If Z.EXISTS(T) Then
 MsgBox T & "«½Æ":  Exit Sub
 Else
 Z(T) = Val(Brr(i, 5))
 Z(T & "/n") = 1
 End If
 Next
 Arr = Range([Invoice!H12], [Invoice!C65536].End(3))
 ReDim Crr(1 To UBound(Arr), 1 To 6)
 For i = 1 To UBound(Arr)
 If Trim(Arr(i, 1)) = "" Then GoTo i01
 T = Trim(Arr(i, 1)) & "/" & Val(Arr(i, 2)) & "/" & Val(Arr(i, 3))
 Z(T & "/n") = Z(T & "/n") + 1
 If Z(T & "/n") > 2 Then MsgBox T & "«½Æ":  Exit Sub Else V = Z(T)
 If V = "" Then GoTo i01
 Crr(i, 1) = V
 Crr(i, 2) = V - Val(Arr(i, 4))
 Crr(i, 3) = Application.Round(Val(Arr(i, 2)) * Val(Arr(i, 3)) / 10 ^ 6, 3)
 Crr(i, 4) = Crr(i, 3) - Val(Arr(i, 5))
 Crr(i, 5) = Application.Round(Crr(i, 3) * Val(Arr(i, 4)), 3)
 Crr(i, 6) = Crr(i, 5) - Val(Arr(i, 6))
 i01: Next
 [Invoice!J12].Resize(UBound(Crr), 6) = Crr
 End Sub
 | 
 |