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

[µo°Ý] ¦p¦ó«Ø¥ß¥u¿ï¨ú''«DÁôÂÃÀx¦s®æ''ªº´`Àô»y¥y

[µo°Ý] ¦p¦ó«Ø¥ß¥u¿ï¨ú''«DÁôÂÃÀx¦s®æ''ªº´`Àô»y¥y

¥»©«³Ì«á¥Ñ HSINLI ©ó 2015-7-8 21:53 ½s¿è

¦pÃD¡Aµ{¦¡½X¨£ªþ¥ó¥i¥H°õ¦æ¡A¦ý­pºâ¥X¨Ó³£¤£¬O·Q­nªºµ²ªG¡A
¤@¤@Àˬdµo²{¦n¹³¬O´`Àô»y¥y±N¿z¿ïµ²ªGªº¡§ÁôÂÃÀx¦s®æ¡¨ªº­È¤]ºâ¶i¥h¤F¡A¦ý§Ú¥u»Ý­n«DÁôÂÃÀx¦s®æªº­È¡F
¦Û¤v¦³¸Õ¹L¤@¨Ç¤èªkoffset¡Bresize...¦ýµLªk¸Ñ¨M¡A¬G·Q­n¨Ó½Ð±Ð¤@¤U¦U¦ì«e½ú¡AÁÂÁ¡I

³oµ{¦¡¥D­n¥Øªº¬O­n±N¥æ©ö¬ö¿ý¡]¤u§@ªía)°µ¾ã²z¡A¾ã²z¥X«D­«½Æªº¶µ¥Ø¡A¨Ã­pºâ¦U«D­«½Æ¶µ¥Ø²{¦³ªºªÑ¼Æ»P¦¨¥»
§Úªº·Qªk¬O¡G
¥ý§Q¥ÎAdvancedFilter¡A±N«D­«½Æªº¶µ¥Ø¶K©ó¥t¤@¤u§@ªíb
ÂǥѤu§@ªíb¦³ªº¶µ¥Ø¡A¥h§Q¥Î´`Àô»y¥y¤@¤@¿z¿ï¥X¤u§@ªía¸Ì¸Ó¶µ¥Øªº­«½Æ¶µ¥Ø
µM«á§Q¥ÎIF§PÂ_¬OboughtÁÙ¬Osold¡Abought¬°+¡Asold¬°-¡A¦A§Q¥Î´`Àô»y¥y¥[Á`¦Ü¤u§@ªíbªºÀx¦s®æ¤º

¦pªG¦³§ó¦nªº¼gªk´N§ó·P¿E¤F¡AÁÂÁ¡I
  1. Sub ²{¦³¥æ©ö³¡¦ì¾ã²z()

  2. Dim po As Worksheet
  3. Dim ¥æ As Worksheet
  4.    
  5.     Set po = Sheets("position")
  6.     Set ¥æ = Sheets("¥æ©ö¬ö¿ý")
  7.    
  8.     Application.ScreenUpdating = False
  9.    
  10.     '¹LÂo¥X©Ò¦³­«½Æªºsymbol¡A¨Ã±N¤§¶K¦Üsheets("position")ªºa5³B
  11.       ¥æ.Range("d:d").AdvancedFilter xlFilterInPlace, Range("d:d"), , True
  12.       ¥æ.Range("d:d").SpecialCells(xlCellTypeVisible).Copy po.Range("a5")
  13.     '§R°£¼ÐÃD
  14.       po.Range("a5").EntireRow.Delete
  15.    
  16.     '¦bSheets("¥æ©ö¬ö¿ý")¿z¿ï¥X¦bSheets("¥æ©ö¬ö¿ý")¤Wªºsymbol¡A¨Ã¥[¥H­pºâQTY¶K©óSheets("¥æ©ö¬ö¿ý")
  17.     Dim i As Integer
  18.     Dim last As Integer
  19.     Dim ipo As Integer
  20.     Dim lastpo As Integer
  21.    
  22.     lastpo = po.Range("a5").End(xlDown).Row
  23.    
  24.     For ipo = 1 To lastpo
  25.       '§Q¥Î¶K¦ÜSheets("position")ªº¤£­«½Æª«¥ó¡A¤@¤@¨Ó¿z¿ï­ìªí®æ©Ò§t¦³¸Óª«¥óªº©Ò¦³¶µ¥Ø
  26.       ¥æ.ListObjects("ªí®æ1").Range.AutoFilter field:=4, Criteria1:=po.Range("a" & ipo)
  27.       
  28.       '"·Q­n"±o¨ì¿z¿ï¥X¨Ó¶µ¥Øªº¼Æ¥Ø(¤£¥]¬AÁôÂÃ)
  29.       last = ¥æ.Range("d2").End(xlDown).Row
  30.       For i = 1 To last
  31.       '¦pªG¦bACT.¨º®æ¬Oboughtªº¸Üqty±o­È¬°¥¿¡AACT.¨º®æ¬OSoldªº¸Üqtyªº­È¬°­t¡A´`Àô¥[Á`¦ÜSheets("position")¹ïÀ³ªºÁ`¶qÀx¦s®æ
  32.              If ¥æ.Range("c" & i + 1) = "Bought" Then
  33.                  po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) + ¥æ.Range("e" & i)
  34.              ElseIf ¥æ.Range("c" & i + 1) = "Sold" Then
  35.                   po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) - ¥æ.Range("e" & i)
  36.               End If
  37.             Next i
  38.        Next ipo
  39.     Application.ScreenUpdating = True

  40. End Sub
½Æ»s¥N½X
¬¡­¶Ã¯3.xlsx.zip (10.08 KB)

¦^´_ 1# HSINLI
¥i­×§ï¦p¤U
  1.   For i = 2 To ¥æ.Range("d2").End(xlDown).Row
  2.             If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 'Àx¦s®æ¤£¬OÁôÂêº
  3.                 If ¥æ.Range("c" & i) = "Bought" Then
  4.                     po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
  5.                 ElseIf ¥æ.Range("c" & i) = "Sold" Then
  6.                     po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
  7.                 End If
  8.             End If
  9.         Next i
½Æ»s¥N½X
¤]¥i¦p¦¹
  1. Option Explicit
  2. Sub Ex()
  3.     Dim po As Worksheet, ¥æ As Worksheet
  4.     Dim ipo As Integer, Bought As Integer, Sold As Integer
  5.     Set po = Sheets("position")
  6.     Set ¥æ = Sheets("¥æ©ö¬ö¿ý")
  7.     Application.ScreenUpdating = False
  8.     po.Range("a5", po.[A5].End(xlDown)) = ""
  9.     'AdvancedFilter xlFilterCopy ¦b«ü©wªº¨ä¥L½d³òªºÄæ¦ì(µL¦r¦ê,½Æ»s¥þ³¡Äæ¦ì¡C¦³¦r¦ê,¶·¬°¸ê®Æ®wªºÄæ¦ì)
  10.     ¥æ.ListObjects("ªí®æ1").Range.Range("D:D").AdvancedFilter xlFilterCopy, , po.Range("a5"), True
  11.       
  12.     'AdvancedFilter(¶i¶¥¿z¿ï)  ,AutoFilter(¦Û°Ê¿z¿ï)
  13.     'AdvancedFilter Action:= xlFilterInPlace  ¦b¿z¿ïªº½d³òÅã¥Ü¿z¿ï«áªº¸ê®Æ
  14.     With po
  15.         For ipo = 6 To .Range("a5").End(xlDown).Row          '
  16.             ¥æ.ListObjects("ªí®æ1").Range.AutoFilter field:=4, Criteria1:=.Range("a" & ipo)
  17.             With ¥æ.ListObjects("ªí®æ1").Range
  18.                     .AutoFilter field:=3, Criteria1:="Bought"
  19.                     Bought = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
  20.                     'Application.Sum ¤u§@ªí¨ç¼Æ
  21.                     '.SpecialCells [¯S®íªºÀx¦s®æ] (xlCellTypeVisible) °Ñ¼Æ:=¥i¨£ªºÀx¦s®æ
  22.                     .AutoFilter field:=3, Criteria1:="Sold"
  23.                     Sold = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
  24.             End With
  25.             .Cells(ipo, "C") = Bought - Sold
  26.         Next
  27.     End With
  28.     ¥æ.ListObjects("ªí®æ1").Range.AutoFilter  '¨S¦³·Ç«h = ¨ú®ø¦Û°Ê¿z¿ï
  29.     Application.ScreenUpdating = True
  30. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

[ª©¥DºÞ²z¯d¨¥]
  • GBKEE(2015/7/9 14:01): ¨Ì§AªºªþÀÉ´ú¸Õ¨S¦³ 1004ªº¿ù»~,½Ð¤W¶Ç¦³¥¨¶°(XLSM)ªºÀÉ®×

¤F¸Ñ¤F¡I¡I
§Q¥Î¦æ°ª>0¨Ó¿z¿ï¥X«DÁôÂêºÀx¦s®æ
¾Ç¨ì¤@½Ò¡AÁÂÁ«ü±Ð¡I
g¤jªº¼gªk±ß¤W¦AºCºC¬ã¨s¡I

ÁÙ·Q¦A½Ð°Ý¤@¤U¡A
µ{¦¡½X³o³¡¤Àªº°õ¦æ¡A±`±`¦b
po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
³o¥y¥X²{¡§1004¡¨'range'¤èªk('_worksheet'ª«¥ó)¥¢±Ñ
¦³®É·|µo¥Í¦³®É¤S¤£·|¡A¤£ª¾¬O¦óºØ½t¬G¡H©Î­þ¸Ì»Ý­n§ï¶i¡H
  1. For i = 2 To ¥æ.Range("d2").End(xlDown).Row
  2.             If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0
  3.                 If ¥æ.Range("c" & i) = "Bought" Then
  4.                     po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
  5.                 ElseIf ¥æ.Range("c" & i) = "Sold" Then
  6.                     po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
  7.                 End If
  8.             End If
  9.         Next i
½Æ»s¥N½X

TOP

¦b³oùØ¡ã¡ã

¬¡­¶Ã¯23.xlsm.zip (19.44 KB)

TOP

¦^´_ 4# HSINLI
¤w§ä¨ìªþÀɵ{¦¡½Xªº¿ù»~¦p¤U
  1. For i = 2 To ¥æ.Range("d2").End(xlDown).Row
  2.             If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 Àx¦s®æ¤£¬OÁôÂêº
  3.                 If ¥æ.Range("c" & i) = "Bought" Then
  4.                     '³o¿ù»~ ipo¨S¦³µ¹­È ********
  5.                     po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
  6.                     '***************************
  7.                 ElseIf ¥æ.Range("c" & i) = "Sold" Then
  8.                     po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
  9.                 End If
  10.             End If
  11.     Next i
½Æ»s¥N½X
½Ð±N  If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 Àx¦s®æ¤£¬OÁôÂêº
®M¨ì§A²Ä¤@©«ªºµ{¦¡½X¸Õ¬Ý¬Ý
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¥i¥H¤F¡I¡IÁÂÁÂg¤j
·Q½Ð°Ý¦pªGµo¥Í³oºØ¿ù»~ªº¸Ü¡A­n«ç»ò§ä¥X°ÝÃD¦b­þ¸Ì°Ú¡I¡H
·Q»¡¥H«á¦Û¤v¥ý¹Á¸Õ³B²z´N¦n¡A¤£¥Î³Â·Ð±z

TOP

¦^´_ 6# HSINLI
·Q½Ð°Ý¦pªGµo¥Í³oºØ¿ù»~ªº¸Ü¡A­n«ç»ò§ä¥X°ÝÃD¦b­þ¸Ì°Ú¡I¡H
«Ý§AVBA ªº¸gÅç­È´£¤É«á,À³¥i¦Û¦æ§ä¥X.
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : ¬Ý§O¤H¤£¶¶²´¡A¬O¦Û¤v­×¾i¤£°÷¡C
ªð¦^¦Cªí ¤W¤@¥DÃD