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

[µo°Ý] ¦p¦ó­pºâ¨C­ÓÄ檺²Ö­p³Ì¤j¥¢¤À

¦^´_ 15# cdkee
¬Ý¤£À´§AªºÅÞ¿è
²Ä¤@²Õ2016/5/5¶}©l 1000,900,700,800,600,300
700¨ì800¦³±o¤À°Ú¡Aµ²ªG§A¥Î1000-300=700¥¢¤À
¦Ó¤£¬O¤À¬° 1000-700 , 800-300 ³o¨â²Õ¥¢¤À
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¦^´_ 20# cdkee
´¡¤J¤@¯ë¼Ò²Õ¡A¶K¤W¤U­±code
  1. Function FindMaxLoss(rngInput As Range, Optional order As Integer = 1)
  2.     On Error GoTo ErrHandle
  3.    
  4.     Dim ar, arLoss
  5.     ar = Application.Transpose(rngInput)
  6.     ReDim arLoss(1 To UBound(ar))
  7.    
  8.     Dim i, count As Integer, sum As Double
  9.     Dim indMin As Long, indMax As Long
  10.     indMin = 1: indMax = 1
  11.     i = 2
  12.     Do While i <= UBound(ar)
  13.         If ar(i) < ar(indMin) Then indMin = i
  14.         If ar(i) > ar(indMax) Or i = UBound(ar) Then
  15.             If indMin <> indMax Then
  16.                 count = count + 1
  17.                 arLoss(count) = ar(indMin) - ar(indMax)
  18.                 i = indMin
  19.             End If
  20.             indMin = i
  21.             indMax = i
  22.         End If
  23.         i = i + 1
  24.         DoEvents
  25.     Loop
  26.         
  27.     ReDim Preserve arLoss(1 To count)
  28.     FindMaxLoss = Application.WorksheetFunction.Small(arLoss, order)
  29.     Exit Function
  30.    
  31. ErrHandle:
  32.     FindMaxLoss = CVErr(xlErrValue)
  33. End Function
½Æ»s¥N½X
D7¶ñ¤W¤½¦¡  =FindMaxLoss(D$20:D$34,1)
D8¶ñ¤W¤½¦¡  =FindMaxLoss(D$20:D$34,2)
D9¶ñ¤W¤½¦¡  =FindMaxLoss(D$20:D$34,3)
¦V¥k©ì¦²¶ñº¡¤½¦¡
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

        ÀR«ä¦Û¦b : ¡i®É¤é²öªÅ¹L¡j¤@­Ó¤H¦b¥@¶¡°µ¤F¦h¤Ö¨Æ¡A´Nµ¥©ó¹Ø©R¦³¦hªø¡C¦]¦¹¥²¶·»P®É¶¡Ävª§¡A¤Á²ö¨Ï®É¤éªÅ¹L¡C
ªð¦^¦Cªí ¤W¤@¥DÃD