使用vba如果表一中的a列数值和表二中的a列数值相同,则表二中相对应的c列数值减表一中的c列数值输出到J列,切重复的数值只减一次
时间: 2024-05-05 15:20:50 浏览: 73
VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表
5星 · 资源好评率100%
可以使用VBA中的字典对象(Dictionary)来实现这个功能。以下是一个实现的示例代码:
```vb
Sub calculateDifference()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim i As Long
Dim lastRow1 As Long
lastRow1 = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow1
dict(Sheets("Sheet1").Cells(i, "A").Value) = Sheets("Sheet1").Cells(i, "C").Value
Next i
Dim lastRow2 As Long
lastRow2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow2
If dict.Exists(Sheets("Sheet2").Cells(i, "A").Value) Then
Sheets("Sheet2").Cells(i, "J").Value = Sheets("Sheet2").Cells(i, "C").Value - dict(Sheets("Sheet2").Cells(i, "A").Value)
dict.Remove Sheets("Sheet2").Cells(i, "A").Value
End If
Next i
Set dict = Nothing
End Sub
```
这个代码假设你的第一个表格在名为“Sheet1”的工作表上,第二个表格在名为“Sheet2”的工作表上。你需要将代码中的工作表名称更改为你自己的表格名称。
代码首先将第一个表格的A列和C列的数据存储到一个字典对象中,其中A列用作键,C列用作值。接下来,对于第二个表格中的每一行,如果该行的A列在字典对象中存在,则将该行的C列减去字典对象中对应的值,并将结果输出到J列。最后,从字典对象中删除已经处理过的A列,以确保重复的数值只减一次。
请注意,这个代码假设第一个表格和第二个表格中的A列中的数值没有重复。如果存在重复的数值,那么只有第一次出现的数值会被记录到字典对象中,并且只有第一次出现的数值会被处理。如果需要处理重复的数值,可以在存储到字典对象之前检查该键是否已经存在,并将不同的值相加。
阅读全文