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

[µo°Ý] ¨D§U°}¦C°ÝÃD

[µo°Ý] ¨D§U°}¦C°ÝÃD

¨D§U°}¦C°ÝÃD¡A¤p§Ì¹Á¸Õ¹L¦ýµLªk¥¿½T¤À²Õ°}¦C¥[Á`¡AÁٽШD¦U¦ì¤j¤j¨ó§U¡AÁÂÁ¡I
  1. Sub test()

  2.     Dim arr, i, j, k, m, n, p
  3.         arr = [A1].CurrentRegion.Offset(1).Resize(, 9).Value
  4.     ReDim Sum(UBound(arr, 2)), t(UBound(arr, 2))
  5.    
  6.    
  7.     For i = 1 To UBound(arr, 1) - 1
  8.    
  9.         If arr(i, 2) <> arr(i + 1, 2) Then
  10.         
  11.             For j = 6 To UBound(arr, 2)
  12.                 Sum(j) = Sum(j)
  13.                 Debug.Print Sum(j)
  14.             Next
  15.         Else
  16.             For j = 6 To UBound(arr, 2)
  17.                 Sum(j) = Sum(j) + arr(i, j)
  18.                 Debug.Print Sum(j)
  19.             Next

  20.         End If
  21.         
  22.             If arr(i + 1, 4) = "²Õ¦X§é¦©" Then
  23.                 For j = p + 1 To i - 1
  24.                     For k = 6 To UBound(arr, 2)
  25.                         n = Round(-arr(i + 1, k) / Sum(k) * arr(j, k), 0)
  26.                         arr(j, k) = arr(j, k) - n
  27.                         t(k) = t(k) + n
  28.                     Next
  29.                 Next
  30.             
  31.                 For k = 6 To UBound(arr, 2)
  32.                     arr(j, k) = arr(j, k) + arr(i + 1, k) + t(k)
  33.                     Sum(k) = 0: t(k) = 0
  34.                 Next
  35.             
  36.                 i = i + 1: p = i
  37.             End If
  38.     Next
  39.    
  40.     For i = 1 To UBound(arr, 1) - 1
  41.         If arr(i, 4) <> "²Õ¦X§é¦©" Then
  42.             m = m + 1
  43.             For j = 1 To UBound(arr, 2)
  44.                 arr(m, j) = arr(i, j)
  45.             Next
  46.         End If
  47.     Next
  48.    
  49.     With [l2]
  50.         .Resize(UBound(arr, 1), UBound(arr, 2)).ClearContents
  51.         .Resize(m).NumberFormatLocal = "yyyymmdd"
  52.         .Resize(m, UBound(arr, 2)) = arr
  53.     End With
  54.    
  55. End Sub
½Æ»s¥N½X

2020-10-06_190331.png (121.45 KB)

2020-10-06_190331.png

test1.rar (13.87 KB)

¼ÒÀÀ¤å¥ó

¦^´_ 2# °a¤ªºµ

¤p§Ì­è­è­«·s¤U¸ü¤U¨Ó¶}±Ò¬O¥¿±`ªº¡A­«·s¤W¶ÇªþÀɬ°ZIPÀ£ÁY¡A¦A³Â·Ð¤j¤j¤F·PÁ¡I

test1.zip (14.8 KB)

TOP

¦^´_ 4# °a¤ªºµ


¤j¤j±z¦n¡A¥H¨ç¼Æªº¤½¦¡§e²{ªº¸Ü¡A¥Î654856³o²Õ¬°¨Ò¡A
»Ý­n§â¥¼µ|³æ»ù¡B¥¼µ|Á`»ù¡BÁ`µ|ÃB©M§tµ|Á`ª÷ÃB«Ì°£"²Õ¦X§é¦©"ªºª÷ÃB¥ý¦U§O¥[Á`
¦A¥H¨C­Ó­È¥h°£¥HÁ`ª÷ÃB­pºâ¥e¤ñ

TOP

¦^´_ 4# °a¤ªºµ


©çÁ¼g±o¤£²M·¡¡A¤p§Ì¬O·Q­n§e²{

¥ý±N²Õ§O654856ªº¥¼µ|³æ»ù¡B¥¼µ|Á`»ù¡BÁ`µ|ÃB©M§tµ|Á`ª÷ÃB«Ì°£²Õ¦X§é¦©ªºª÷ÃB¥[Á`¡A
1. ¥H¥¼µ|³æ»ù¨ºÄ欰¨Ò¡A¾ãÄæ¥[Á`ª÷ÃB¬°28762
2. ¤À§O­pºâ³æ¶µ¥e¤ñ¡A¥HF2¬°¨Ò¡A6238/28762=0.217´N¬O21.7%
3. µM«á¥Î¨ºÄ檺§é¦©ª÷ÃB-285*0.217=-61.845¡A´N¥i¥Hºâ¥X§é¦©ª÷ÃB¥e¤ñ
4. ¦A±NÁÙ¨S­pºâ§é¦©ªº6238+(-61.845)=6176.155
5. ¤À§O­pºâ¨C¶µ¦©°£§é¦©ª÷ÃB«á¡A³Ì«á¦A±N§é¦©ª÷ÃB¨º¦æ§R°£

TOP

¦^´_  K0l1CHEN6

¦bExcel Home¤wµo°Ý¦n´X³q, µL¤H¦^À³,
À³¬O¨S¤HÀ´·N«ä,

¦³¼Æ¶qÄæ, ©Ò¥H"³æ»ù"¨Ì¤ñ ...
­ã´£³¡ªL µoªí©ó 2020-10-10 11:52



´£¨Ñªº¸ê®Æ¬°¥ý«e½m²ßªºÀɮסA¬G¼Æ¦r¦³¥X¤J¡AÅý¤j¤j»~¸Ñ¯uªº¬O«D±`©êºp¡I
¦]Excel Home¸Ì¤w¸g¦³¤j¤jÀ°¤p§Ì¸Ñµª³Ì­«­nªº³¡¤À
¦ý°w¹ï¦P²Õ¤À§O­pºâªº¸Ü¡A¤p§Ìªº²z¸Ñ¬O¤£¬O´N¬O­n¦A²£¥Í¤@­Ó°}¦C¨Ó¥h³æ¿W­pºâ¡H

TOP

¦^´_  K0l1CHEN6

¦bExcel Home¤wµo°Ý¦n´X³q, µL¤H¦^À³,
À³¬O¨S¤HÀ´·N«ä,

¦³¼Æ¶qÄæ, ©Ò¥H"³æ»ù"¨Ì¤ñ ...
­ã´£³¡ªL µoªí©ó 2020-10-10 11:52





¤p§Ì¦¨¥\¹Á¸Õ²¤¹L²Õ¦X§é¦©°µ¥[Á`¡A¤w¸g¤ÀÂ÷¨â­Ó¼Æ²Õ
¤ñ¸û¦³¹Á¸Õ¤£¤Fªº¬O¦p¦ó±N¨â­Ó°}¦C¥h°µ¤ñ¹ï
  1. Sub test1()

  2.     Dim arr, brr(), t
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = [A1].CurrentRegion
  5.     ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2)), t(UBound(arr, 2))
  6.    
  7.     For i = 2 To UBound(arr)
  8.         If Not d.exists(arr(i, 2)) Then
  9.             k = k + 1
  10.             d(arr(i, 2)) = k
  11.             
  12.             For j = 1 To UBound(arr, 2)
  13.                 brr(k, j) = arr(i, j)
  14.             Next
  15.         Else
  16.             r = d(arr(i, 2))
  17.             
  18.             For j = 6 To UBound(arr, 2)
  19.                 If arr(i, j) < 0 Then
  20.                 Else
  21.                     brr(r, j) = brr(r, j) + arr(i, j)
  22.                 End If
  23.             Next
  24.         End If
  25.     Next

  26.     For i = 1 To UBound(arr, 1) - 1
  27.         If arr(i, 4) <> "²Õ¦X§é¦©" Then
  28.             m = m + 1
  29.             
  30.             For j = 1 To UBound(arr, 2)
  31.                 arr(m, j) = arr(i, j)
  32.             Next
  33.             
  34.         End If
  35.     Next
  36.    
  37.     With [K1]
  38.         .Resize(UBound(arr, 1), UBound(arr, 2)).ClearContents
  39.         .Resize(m).NumberFormatLocal = "yyyymmdd"
  40.         .Resize(m, UBound(arr, 2)) = arr
  41.     End With
  42.    
  43.     [U2].Resize(k, 9) = brr
  44.    
  45. End Sub
½Æ»s¥N½X

TOP

¦^´_ 10# ­ã´£³¡ªL

¤£·\¬O¤j¤j¡A¥Îªºµ{¦¡½X¤ñ¤p§Ìºë²³\¦h¡A¦ý·Q­n¸ß°Ý¤@¤U¨Ï¥Î"|"¬O¦]¬°­n°Ï¹j¤£¦PÄæ¦ì¸ê®ÆªºÃö«Y¶Ü¡H

TOP

¦^´_ 12# ­ã´£³¡ªL


°}¦Cªº¤èªk¡A¤p§Ìµo²{¦pªG¸ê®Æ¦³ªÅ®æªº¸Ü¤£·|³Q§ì¶i°}¦C¸Ì
©Ò¥H¤p§Ì¥Î¤F¤§«e§Oªº¤j¤j±Ðªº¤è¦¡¤S¦A¦¸­×§ï¤F¤@¤U¬°
  1.     k = ThisWorkbook.Sheets(1).Cells.Find(What:="*", _
  2.                 After:=Range("A1"), _
  3.                 LookAt:=xlPart, _
  4.                 LookIn:=xlFormulas, _
  5.                 SearchOrder:=xlByRows, _
  6.                 SearchDirection:=xlPrevious, _
  7.                 MatchCase:=False).Row
  8.                
  9.     Arr = sh1.Range("A2:K" & k)
½Æ»s¥N½X

TOP

¦^´_ 12# ­ã´£³¡ªL


   ·PÁ¤j¤j±Ð¾Ç¡A«D±`·PÁ¡I

TOP

¥t¥~·Q½Ð±Ð¤@¤U¡A¦r¨å©M°}¦Cªº¤è¦¡¶·­n¦p¦ó§P©w­þ¤@­Ó¬O¾A¦X¦Û¤vªº©O¡H

TOP

        ÀR«ä¦Û¦b : ¡i°±º¢¤£«e¡A²×µL©Ò±o¡j¤H³£°g©ó´M§ä©_ÂÝ¡A¦]¦Ó°±º¢¤£«e¡FÁa¨Ï®É¶¡¦A¦h¡B¸ô¦Aªø¡A¤]¤FµL¥Î³B¡A²×µL©Ò±o¡C
ªð¦^¦Cªí ¤W¤@¥DÃD