返回列表 上一主題 發帖

[發問] [求助] VBA 比對後持續相減 問題

[發問] [求助] VBA 比對後持續相減 問題

EXCEL A 頁
有兩名同學 與 每日花費


EXCEL B 頁
兩名同學存款




VB寫法

Sub TEST()

Dim i As Integer
Dim j As Integer

Sheets("A").Select
        
       i = 3
      
    Do While Range("B" & i) <> ""
   
       j = 3
      
    Do While Sheets("B").Range("A" & j) <> ""
        If Range("B" & i) = Sheets("B").Range("A" & j) Then
           Range("D" & i) = Sheets("B").Range("B" & j) - Sheets("A").Range("C" & i)
    Exit Do
         End If
            j = j + 1
  Loop
            i = i + 1
Loop

MsgBox " TEST! "


End Sub
問題點 他只會比對後使用存款相減 當日花費 並不會連續相減
例如 小明 存款 5000 ( 1/30 小明 花費 300 ) ( 存款5000 - 300 = 4700 ) 具續比對 2/13 小明 花費 200 ( 存款 5000 - 200 = 4800 )

請教各位高手
指導一下 希望可以改成
例如 小明 存款 5000 ( 1/30 小明 花費 300 ) ( 存款5000 - 300 = 4700 ) 具續比對 2/13 小明 花費 200 ( 存款 4700 - 200 = 4500 )


懊惱許久,一直無法解決。。。
煩請指導一下 !

3.jpg (36.11 KB)

3.jpg

回復 2# lpk187

非常感謝幫助..
可是結果似乎不太正確 !!
4.jpg
王小明 第二次花費變成負數 ...

TOP

回復  sabery
lpk187 發表於 2015-4-11 23:02



    非常感謝版大 !!
已知道問題點在哪邊 !!

TOP

本帖最後由 sabery 於 2015-4-12 05:11 編輯
回復  sabery
lpk187 發表於 2015-4-11 23:02


            If Range("D" & i) < 0 Then
                Range("D" & i).Interior.Color = vbRed
                Else
                Range("D" & i).Font.Color = vbBlack
                End If

               
版大 再次請教下 !!  
今天 假如想把負數找出來 我文中這樣寫 只有單獨把 Range("M" & i) 該格反紅 如何把整行反紅呢 !!
不好意思 新手上路 真的真的請多耐心指導 !!

TOP

回復  sabery
lpk187 發表於 2015-4-11 23:02


目前是有用最笨方法
If Range("D" & i) < 0 Then
                Range("A" & i).Interior.Color = vbRed
                Range("B" & i).Interior.Color = vbRed
                Range("C" & i).Interior.Color = vbRed
                Range("D" & i).Interior.Color = vbRed
                Else
                Range("A" & i).Interior.Color = vbWhite
                Range("B" & i).Interior.Color = vbWhite
                Range("C" & i).Interior.Color = vbWhite
                Range("D" & i).Interior.Color = vbWhite
                End If

不知道有沒有更好方式!?
因為背景換色導致線不見了

TOP

本帖最後由 sabery 於 2015-4-15 05:21 編輯
回復  sabery
呃!我不是版大,我也只是個新學員而已!
試試這個
lpk187 發表於 2015-4-12 23:05


不好意思 版大 最後一問 假使
今天增加一新同學
王小智
1.jpg

可是存款卻沒有他的資料
13.jpg

希望在D出現負數不夠存款 所以顯示
例如
2015/02/13       
呂曉智        200  D欄 = 不夠
2015/02/26
呂曉智        400  D欄 = 不夠
這樣寫
  1. Sub TEST()
  2. Dim i As Integer
  3. Dim j As Integer
  4. Dim B As Long
  5. Sheets("A").Select
  6.        j = 5
  7.     Do While Sheets("B").Range("A" & j) <> ""
  8.            i = 6
  9.         Do While Range("B" & i) <> ""
  10.             If Range("B" & i) = Sheets("B").Range("A" & j) Then
  11.                 B = Sheets("A").Range("C" & i) + B
  12.                 Range("D" & i) = Sheets("B").Range("B" & j) - B
  13.             ElseIf Range("B" & i) <> Sheets("B").Range("A" & j) Then
  14.                 Range("D" & i) = "不夠"
  15.             End If
  16.                 i = i + 1
  17.         Loop
  18.                 B = 0
  19.                 j = j + 1
  20.     Loop
  21. MsgBox " TEST! "
  22. End Sub
複製代碼
可是錯誤  連王小明 都跑掉 !
可以再次指導嗎? 拜託了.

TOP

回復  sabery


  下面是我執行的結果
B工作表

A工作表
lpk187 發表於 2015-4-15 20:31


太強了 ...
因為是興趣想自學! 當初學校有教過一點點 .
不知道版大也是嗎? 還是有去上過呢 ?

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題