返回列表 上一主題 發帖

請問版上大大,這個要怎麼寫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要怎麼寫,
簡單的說就是判別正負,連續一樣的就相加,遇到相反的就獨立顯示

本帖最後由 Andy2483 於 2024-1-12 14:25 編輯

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列,學習方案如下,請各位前輩指教
執行前:


執行結果:


Option Explicit
Sub TEST()
Dim Brr, V%, V1%, V2%, i&, N&
Brr = Range([E1], Cells(Rows.Count, "E").End(3)(2))
N = UBound(Brr) - 1
For i = 2 To N
   V1 = Val(Brr(i, 1))
   V2 = Val(Brr(i + 1, 1))
   Brr(i - 1, 1) = ""
   V = V + V1
   If V1 * V2 > 0 Then GoTo i01
   Brr(i - 1, 1) = V: V = 0
i01: Next
[H2].Resize(N - 1, 1) = Brr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

感謝   前輩提供~看過受益良多!!!

TOP

回復 9# GBKEE


    G大感謝

TOP

回復 8# c_c_lai

感謝大大為小弟解惑

TOP

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

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

回復 6# GBKEE

Book1.rar (126.92 KB)

TOP

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

TOP

回復 4# GBKEE


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

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題