¼ÐÃD:
[µo°Ý]
¦p¦ó«Ø¥ß¥u¿ï¨ú''«DÁôÂÃÀx¦s®æ''ªº´`Àô»y¥y
[¥´¦L¥»¶]
§@ªÌ:
HSINLI
®É¶¡:
2015-7-8 21:51
¼ÐÃD:
¦p¦ó«Ø¥ß¥u¿ï¨ú''«DÁôÂÃÀx¦s®æ''ªº´`Àô»y¥y
¥»©«³Ì«á¥Ñ HSINLI ©ó 2015-7-8 21:53 ½s¿è
¦pÃD¡Aµ{¦¡½X¨£ªþ¥ó¥i¥H°õ¦æ¡A¦ýpºâ¥X¨Ó³£¤£¬O·Qnªºµ²ª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·Qn¨Ó½Ð±Ð¤@¤U¦U¦ì«e½ú¡AÁÂÁ¡I
³oµ{¦¡¥Dn¥Øªº¬On±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
Sub ²{¦³¥æ©ö³¡¦ì¾ã²z()
Dim po As Worksheet
Dim ¥æ As Worksheet
Set po = Sheets("position")
Set ¥æ = Sheets("¥æ©ö¬ö¿ý")
Application.ScreenUpdating = False
'¹LÂo¥X©Ò¦³«½Æªºsymbol¡A¨Ã±N¤§¶K¦Üsheets("position")ªºa5³B
¥æ.Range("d:d").AdvancedFilter xlFilterInPlace, Range("d:d"), , True
¥æ.Range("d:d").SpecialCells(xlCellTypeVisible).Copy po.Range("a5")
'§R°£¼ÐÃD
po.Range("a5").EntireRow.Delete
'¦bSheets("¥æ©ö¬ö¿ý")¿z¿ï¥X¦bSheets("¥æ©ö¬ö¿ý")¤Wªºsymbol¡A¨Ã¥[¥HpºâQTY¶K©óSheets("¥æ©ö¬ö¿ý")
Dim i As Integer
Dim last As Integer
Dim ipo As Integer
Dim lastpo As Integer
lastpo = po.Range("a5").End(xlDown).Row
For ipo = 1 To lastpo
'§Q¥Î¶K¦ÜSheets("position")ªº¤£«½Æª«¥ó¡A¤@¤@¨Ó¿z¿ïìªí®æ©Ò§t¦³¸Óª«¥óªº©Ò¦³¶µ¥Ø
¥æ.ListObjects("ªí®æ1").Range.AutoFilter field:=4, Criteria1:=po.Range("a" & ipo)
'"·Qn"±o¨ì¿z¿ï¥X¨Ó¶µ¥Øªº¼Æ¥Ø(¤£¥]¬AÁôÂÃ)
last = ¥æ.Range("d2").End(xlDown).Row
For i = 1 To last
'¦pªG¦bACT.¨º®æ¬Oboughtªº¸Üqty±oȬ°¥¿¡AACT.¨º®æ¬OSoldªº¸ÜqtyªºÈ¬°t¡A´`Àô¥[Á`¦ÜSheets("position")¹ïÀ³ªºÁ`¶qÀx¦s®æ
If ¥æ.Range("c" & i + 1) = "Bought" Then
po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) + ¥æ.Range("e" & i)
ElseIf ¥æ.Range("c" & i + 1) = "Sold" Then
po.Range("c" & ipo + 4) = po.Range("c" & ipo + 4) - ¥æ.Range("e" & i)
End If
Next i
Next ipo
Application.ScreenUpdating = True
End Sub
½Æ»s¥N½X
[attach]21350[/attach]
§@ªÌ:
GBKEE
®É¶¡:
2015-7-9 08:57
¦^´_
1#
HSINLI
¥iקï¦p¤U
For i = 2 To ¥æ.Range("d2").End(xlDown).Row
If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 'Àx¦s®æ¤£¬OÁôÂêº
If ¥æ.Range("c" & i) = "Bought" Then
po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
ElseIf ¥æ.Range("c" & i) = "Sold" Then
po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
End If
End If
Next i
½Æ»s¥N½X
¤]¥i¦p¦¹
Option Explicit
Sub Ex()
Dim po As Worksheet, ¥æ As Worksheet
Dim ipo As Integer, Bought As Integer, Sold As Integer
Set po = Sheets("position")
Set ¥æ = Sheets("¥æ©ö¬ö¿ý")
Application.ScreenUpdating = False
po.Range("a5", po.[A5].End(xlDown)) = ""
'AdvancedFilter xlFilterCopy ¦b«ü©wªº¨ä¥L½d³òªºÄæ¦ì(µL¦r¦ê,½Æ»s¥þ³¡Äæ¦ì¡C¦³¦r¦ê,¶·¬°¸ê®Æ®wªºÄæ¦ì)
¥æ.ListObjects("ªí®æ1").Range.Range("D:D").AdvancedFilter xlFilterCopy, , po.Range("a5"), True
'AdvancedFilter(¶i¶¥¿z¿ï) ,AutoFilter(¦Û°Ê¿z¿ï)
'AdvancedFilter Action:= xlFilterInPlace ¦b¿z¿ïªº½d³òÅã¥Ü¿z¿ï«áªº¸ê®Æ
With po
For ipo = 6 To .Range("a5").End(xlDown).Row '
¥æ.ListObjects("ªí®æ1").Range.AutoFilter field:=4, Criteria1:=.Range("a" & ipo)
With ¥æ.ListObjects("ªí®æ1").Range
.AutoFilter field:=3, Criteria1:="Bought"
Bought = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
'Application.Sum ¤u§@ªí¨ç¼Æ
'.SpecialCells [¯S®íªºÀx¦s®æ] (xlCellTypeVisible) °Ñ¼Æ:=¥i¨£ªºÀx¦s®æ
.AutoFilter field:=3, Criteria1:="Sold"
Sold = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
End With
.Cells(ipo, "C") = Bought - Sold
Next
End With
¥æ.ListObjects("ªí®æ1").Range.AutoFilter '¨S¦³·Ç«h = ¨ú®ø¦Û°Ê¿z¿ï
Application.ScreenUpdating = True
End Sub
½Æ»s¥N½X
§@ªÌ:
HSINLI
®É¶¡:
2015-7-9 12:46
¤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
For i = 2 To ¥æ.Range("d2").End(xlDown).Row
If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0
If ¥æ.Range("c" & i) = "Bought" Then
po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
ElseIf ¥æ.Range("c" & i) = "Sold" Then
po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
End If
End If
Next i
½Æ»s¥N½X
§@ªÌ:
HSINLI
®É¶¡:
2015-7-9 21:29
¦b³oùØ¡ã¡ã
§@ªÌ:
GBKEE
®É¶¡:
2015-7-10 05:30
¦^´_
4#
HSINLI
¤w§ä¨ìªþÀɵ{¦¡½Xªº¿ù»~¦p¤U
For i = 2 To ¥æ.Range("d2").End(xlDown).Row
If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 Àx¦s®æ¤£¬OÁôÂêº
If ¥æ.Range("c" & i) = "Bought" Then
'³o¿ù»~ ipo¨S¦³µ¹È ********
po.Range("c" & ipo) = po.Range("c" & ipo) + ¥æ.Range("e" & i)
'***************************
ElseIf ¥æ.Range("c" & i) = "Sold" Then
po.Range("c" & ipo) = po.Range("c" & ipo) - ¥æ.Range("e" & i)
End If
End If
Next i
½Æ»s¥N½X
½Ð±N If ¥æ.Range("c" & i).RowHeight Then 'RowHeight > 0 Àx¦s®æ¤£¬OÁôÂêº
®M¨ì§A²Ä¤@©«ªºµ{¦¡½X¸Õ¬Ý¬Ý
§@ªÌ:
HSINLI
®É¶¡:
2015-7-10 11:46
¥i¥H¤F¡I¡IÁÂÁÂg¤j
·Q½Ð°Ý¦pªGµo¥Í³oºØ¿ù»~ªº¸Ü¡An«ç»ò§ä¥X°ÝÃD¦bþ¸Ì°Ú¡I¡H
·Q»¡¥H«á¦Û¤v¥ý¹Á¸Õ³B²z´N¦n¡A¤£¥Î³Â·Ð±z
§@ªÌ:
GBKEE
®É¶¡:
2015-7-10 12:33
¦^´_
6#
HSINLI
·Q½Ð°Ý¦pªGµo¥Í³oºØ¿ù»~ªº¸Ü¡An«ç»ò§ä¥X°ÝÃD¦bþ¸Ì°Ú¡I¡H
«Ý§AVBA ªº¸gÅçÈ´£¤É«á,À³¥i¦Û¦æ§ä¥X.
Åwªï¥úÁ{ ³Â»¶®a±Ú°Q½×ª©ª© (http://forum.twbts.com/)