iT邦幫忙

0

EXCEL VBA 比對運算問題

  • 分享至 

  • xImage

請大大幫助一下VBA入門小弟

想作到的功能是
工作表1的A欄值 比對 工作表2的A欄值 (不論哪一列)
若符合,則工作表2符合A欄值的那一列
工作表2 B欄數值 減去 工作表1的A欄那一列B欄數值

Public Sub 扣除()

i = 3
Do
i = i + 1
If 工作表1.Range("a" & i) = "" Then Exit Do
If 工作表1.Range("a" & i) = 工作表2.Range("a" & i) Then
工作表2.Range("b" & i) = 工作表2.Range("b" & i) - 工作表1.Range("b" & i)
End If
Loop

End Sub

我寫出列數不對應就不會運算
請有空大大幫忙看看,如何寫才能比對到工作表2的全部A欄並讓B欄運算謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-18 18:00:29
最佳解答

以下是反過來寫
用 Sheet2!A 去 Sheet1!A 找相同的值
然後 Sheet2!B 的值去減掉 Sheet1!B 的值

Public Sub 扣除()
    i = 3
    Do
        i = i + 1       
        If Worksheets(2).Range("A" & i) = "" Then Exit Do
        With Worksheets(1).Range("A1:A500")
            Set c = .Find(Worksheets(2).Range("A" & i), LookIn:=xlValues)
            If Not c Is Nothing Then
                Worksheets(2).Range("B" & i).Value = Worksheets(2).Range("B" & i).Value - c.Offset(0, 1).Value
            End If
        End With
    Loop
End Sub
0
race
iT邦新手 5 級 ‧ 2020-11-18 20:47:50

我的回答

Sub 扣除()
  Dim i%,k
  Dim rngChk as Range
  Dim rng As Range
  set rngChk = 工作表2.Columns("A")

 i = 4
  Do While Len(工作表1.Cells(i,1))
   k=工作表1.Cells(i,1)
   set rng=rngChk.find(k)
   If  Not rng is Nothing Then
      rng.offset(,1) = rng.offset(,1) - 工作表1.Range("b" & i)
   End If
   i=i+1
  Loop

End Sub
race iT邦新手 5 級 ‧ 2020-11-18 20:56:25 檢舉

更正一下,沒有在Excel驗證

Sub test()
    Dim i%, k
    Dim rng As Range
    Dim rngChk As Range
    Set rng = Sheets(2).Columns("A")
    
    i = 4
    Do Until Sheets(1).Cells(i, 1) = ""
        k = Sheets(1).Cells(i, 1)
        Set rngChk = rng.Find(k)
        If Not rngChk Is Nothing Then
            rngChk.Offset(, 1) = rngChk.Offset(, 1) - Sheets(1).Cells(i, 2)
        End If
        i = i + 1
    Loop

我要發表回答

立即登入回答