ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

±ø¥ó¦¡®æ¦¡³]©w

¥»©«³Ì«á¥Ñ 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
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 3# 198188

Sorry
ReDim Crr©ñ¿ù¦ì¸m¤F,½Ð¬Ý2#ªº­×¥¿
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 5# 198188

«Øij«e½ú¤£­n±q¸Ì­±§ï,Åý°}¦C­È¶K¤JÀx¦s®æ«á¼g¥t¤@¬q¥N½X§PÂ_­È¦AÅܧó¦r¦â
¦]Àx¦s®æ¯Á¤Þ¸¹»P°}¦C¯Á¤Þ¸¹¿ù¦ì,®e©ö²V²c
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 11# 198188

ÁÂÁ«e½ú¤@°_¾Ç²ß
«á¾Ç½Æ²ß¤è®×¤ß±oµù¸Ñ¦p¤U,½Ð¸Õ¤F¸Ñ«á¹B¥Î
Option Explicit
Sub TEST()
Dim Arr, Brr, Crr, V, Z, i&, T$
'¡ô«Å§iÅܼÆ
Set Z = CreateObject("Scripting.Dictionary")
'¡ô¥OZÅܼƬO ¦r¨å
Brr = Range([Data!E2], [Data!A65536].End(3))
'¡ô¥OBrrÅܼƬO¤Gºû°}¦C,¥H¤u§@ªí½d³òÀx¦s®æ­È±a¤J
For i = 1 To UBound(Brr)
'¡ô³]¶¶°j°é!
   T = Trim(Brr(i, 1)) & "/" & Val(Brr(i, 2)) & "/" & Val(Brr(i, 3))
   '¡ô¥OTÅܼƬO1Äæ¦r¦ê.2Äæ¼Æ­È»P3Äæ¼Æ­È¥H"/"²Å¸¹¦ê±µ¦¨ªº·s¦r¦ê
   If Z.EXISTS(T) Then
   '¡ô¦pªGZ¦r¨å¸Ì¦³TÅܼƳokey
      MsgBox T & "­«½Æ":  Exit Sub
      '¡ô¥Nªí¸ê®Æ¦³­«½Æ,¸õ¥X´£¥Üµ¡,«ö½T©w«áµ²§ôµ{¦¡°õ¦æ
      Else '§_«h
      Z(T) = Val(Brr(i, 5))
      '¡ô¥O¥HTÅܼƬ°key,5Äæ¼Æ­È¬°item ¯Ç¤JZ¦r¨å¤¤
      Z(T & "/n") = 1
      '¡ô¥O¥HTÅܼƳs±µ"/n"²Õ¦¨ªº·s¦r¦ê¬°key,1¬°item ¯Ç¤JZ¦r¨å¤¤
   End If
Next
Arr = Range([Invoice!H12], [Invoice!C65536].End(3))
'¡ô¥OArrÅܼƬO¤Gºû°}¦C,¥H¤u§@ªí½d³òÀx¦s®æ­È±a¤J
ReDim Crr(1 To UBound(Arr), 1 To 6)
'¡ô«Å§iCrrÅܼƬO¤GºûªÅ°}¦C,¨Ã«Å§i¨ä½d³ò
For i = 1 To UBound(Arr)
'¡ô³]¶¶°j°é!
   If Trim(Arr(i, 1)) = "" Then GoTo i01
   '¡ô¦pªG1Äæ°}¦C­È¥h°£ÀY§ÀªÅ¥Õ¦r¤¸«á ¬OªÅ¦r¤¸,´N¸õ¨ì¼Ð¥Üi01¦ì¸mÄ~Äò°õ¦æ
   T = Trim(Arr(i, 1)) & "/" & Val(Arr(i, 2)) & "/" & Val(Arr(i, 3))
   Z(T & "/n") = Z(T & "/n") + 1
   '¡ô¥Oitem­È²Ö¥[1
   If Z(T & "/n") > 2 Then MsgBox T & "­«½Æ":  Exit Sub Else V = Z(T)
   '¡ô¥Nªí¸ê®Æ¦³­«½Æ,¸õ¥X´£¥Üµ¡,«ö½T©w«áµ²§ôµ{¦¡°õ¦æ,§_«h´N¥OVÅܼƬO¥HTÅܼƬdZ¦r¨å±o¨ìªºitem­È
   If V = "" Then GoTo i01
   '¡ô¦pªGVÅܼƬOªÅ¦r¤¸,´N¸õ¨ì¼Ð¥Üi01¦ì¸mÄ~Äò°õ¦æ
   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))
   '¡ô¥O¥HArr°}¦C­È¨Ì»Ý¨D­pºâ«á±a¤J Crr°}¦C¤¤
i01: Next
[Invoice!J12].Resize(UBound(Crr), 6) = Crr
'¡ô¥OCrr°}¦C­È¼g¤JÀx¦s®æ¤¤
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : §ïÅܦۤv¬O¦Û±Ï¡A¼vÅT§O¤H¬O±Ï¤H¡C
ªð¦^¦Cªí ¤W¤@¥DÃD