返回列表 上一主題 發帖

請問版上大大,這個要怎麼寫VBA

請問版上大大,這個要怎麼寫VBA

A            B                  C                 D              E                  F                  G
08:45:00        7701        7703        7703        5        1        5
08:45:00        7701        7703        7701        -1        0        -1
08:45:00        7701        7703        7703        2        1        2
08:45:00        7701        7703        7701        -4        0       
08:45:00        7701        7703        7701        -1        0        -5(-4+ -1)
08:45:00        7701        7703        7703        5        1        5
08:45:00        7701        7703        7701        -1        0        -1
08:45:01        7701        7702        7702        1        1       
08:45:01        7701        7703        7703        2        1        3(1+2)
08:45:01        7701        7702        7701        -1        0       
08:45:01        7701        7702        7701        -3        0       
08:45:01        7701        7702        7701        -1        0       
08:45:01        7701        7702        7701        -1        0        -6(-1+(-3)+(-1)+(-1))
08:45:01        7701        7702        7702        3        1       
08:45:01        7701        7703        7703        7        1       
08:45:01        7701        7703        7703        1        1       
08:45:01        7701        7703        7703        10        1       
08:45:01        7701        7704        7704        5        1       
08:45:01        7701        7705        7705        15        1       
08:45:01        7701        7704        7704        1        1       
08:45:01        7701        7704        7704        2        1       
08:45:01        7703        7705        7705        2        1       
08:45:02        7703        7705        7705        1        1        47(3+7+1+10+5+15+1+2+2+1)
08:45:02        7703        7705        7703        -3        0       
08:45:02        7703        7705        7703        -3        0       
08:45:02        7703        7705        7703        -6        0       
08:45:02        7703        7705        7703        -5        0       
08:45:02        7703        7705        7703        -1        0       
08:45:02        7703        7705        7703        -3        0       
08:45:02        7702        7705        7702        -6        0       
08:45:02        7701        7705        7701        -1        0        -28(-3+(-3)+(-6)+(-5)+(-1)+(-3)+(-6)+(-1))


以上是資料格式,F欄是判別E欄是正值還是負值,正值為1負值為0,請問版上大大如果我要G欄顯示E欄的值VBA要怎麼寫,
簡單的說就是判別正負,連續一樣的就相加,遇到相反的就獨立顯示

回復 1# 藍天麗池
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, t As Integer
  4.     i = 1
  5.     Do While Cells(i, "F") <> ""
  6.         t = 0
  7.         Do
  8.             t = t + Cells(i, "e")
  9.             i = i + 1
  10.         Loop Until Cells(i - 1, "F") <> Cells(i, "F")
  11.         Cells(i - 1, "g") = t
  12.     Loop
  13. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 2# GBKEE


    G大我有去試過了,但完全沒反應ㄟ,我將程式放在sheet1對吧?

TOP

回復 3# 藍天麗池
程式碼複製在那個工作表模組上一定有反應的.
如果是任一個工作表模組上請用下面的程式碼.
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, t As Integer
  4.     i = 1
  5.     With ActiveSheet   '指定工作表: ActiveSheet->作用中的工作表
  6.         Do While .Cells(i, "F") <> ""
  7.             t = 0
  8.             Do
  9.                 t = t + .Cells(i, "e")
  10.                 i = i + 1
  11.             Loop Until .Cells(i - 1, "F") <> .Cells(i, "F")
  12.             .Cells(i - 1, "g") = t
  13.         Loop
  14.     End With
  15. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# GBKEE


    還是沒反應ㄟ,G大你指的反應它會自己跳出數字嗎??

TOP

回復 5# 藍天麗池
請上傳檔案看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# GBKEE

Book1.rar (126.92 KB)

TOP

本帖最後由 c_c_lai 於 2013-10-28 07:32 編輯

回復 7# 藍天麗池
不執行的原因出自在 [F1] 為空白,而且 i 之初使設定值為 1,所以 Do While 一開始便未能執行:(修改成 i = 2)
  1.     Dim i As Integer, t As Integer
  2.     i = 1
  3.     With ActiveSheet   '指定工作表: ActiveSheet->作用中的工作表
  4.         Do While .Cells(i, "F") <> ""
複製代碼
同時,你的資料錄共計有 58559 列,i 型態宣告為 整數,所以會產生值的溢位訊息。
所以原本的  i As Integer 改成  i As Long (長整數),另外 Loop Until Cells(i - 1, "F") <> Cells(i, "F")

  1.        Do
  2.             t = t + Cells(i, "e")
  3.             i = i + 1
  4.         Loop Until Cells(i - 1, "F") <> Cells(i, "F")
複製代碼
在執行到最後時會產生 1004 的錯誤訊息,所以稍稍修改成如下:
  1. Sub Ex()
  2.     Dim i As Long, t As Integer
  3.    
  4.     i = 2
  5.     With Sheets(1)   ' 指定工作表: ActiveSheet->作用中的工作表
  6.         Do
  7.             t = 0
  8.             Do
  9.                 t = t + .Cells(i, "e")
  10.                 i = i + 1
  11.             Loop Until .Cells(i - 1, "F") <> .Cells(i, "F") Or .Cells(i, "F") = ""
  12.             .Cells(i - 1, "g") = t
  13.         Loop Until i > 2 And .Cells(i, "F") = ""
  14.     End With
  15. End Sub
複製代碼
這也是 GBKEE 版大要你附上檔案的緣故,因為無檔案提供實作測試,
一般只能天馬行空,(想像中) 做概略的分析解說了!

TOP

回復 8# c_c_lai
沒想到有這錯誤點,感謝修正
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# c_c_lai

感謝大大為小弟解惑

TOP

        靜思自在 : 修行要繫緣修心,藉事練心,隨處養心。
返回列表 上一主題