請大大幫助一下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欄運算謝謝
以下是反過來寫
用 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
我的回答
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
更正一下,沒有在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