用VB在同一个excel文件中重复查询满足条件的值,并累加赋值给另一个文件的一个单元格内 20

PrivateSubCommandButton1_Click()Dimar,brAsWorkbookDimra,rbAsIntegerDimoptionValueTemp... Private Sub CommandButton1_Click()
Dim ar, br As Workbook
Dim ra, rb As Integer
Dim optionValueTemp As Integer
Dim optionValue As Integer
Dim locrow As Integer
Dim col As Integer
Dim Row As Integer
Application.ScreenUpdating = False
Set ar = GetObject(ThisWorkbook.Path & "\原始数据.xlsx")
'当前工作表A单元格 “名称” 为第4行 第1列
Row = 4
col = 1
optionvalueRow = 1
optionvalueCol = 1
locrow = 2
optionValueTemp = 0
Do
'开始与 原始数据工作表 匹配 名称单元格
If Cells(Row, col).Value = ar.Sheets("原始数据).Cells(locrow, 1).Value And ar.Sheets("220kV").Cells(locrow, 5).Value = "发货" Then
'在匹配成功的当行数据中,取第7列(价格)进行相加运算,并将结果赋值给工作表A当前名称后一列的单元格
optionValue = ar.Sheets("原始数据").Cells(locrow, 6).Value
ar.Close False
ra = optionValueTemp + optionValue
Application.ScreenUpdating = True
Cells(Row, col + 1) = ra
optionValueTemp = ra
End If
'在同一列内行数加1以把指针指向下一条待处理记录
Row = Row + 1
End If
Loop
End Sub
我想要的就是当前工作表A,点击一个按钮后,从工作表A中取一个物品b名称,与原始数据单元格的名称进行遍历匹配,找出原始数据中的物品b名称,并且物品b满足当行第5个单元格是发货,然后取出当行第7个单元格 价格,将所有满足这两个条件的数据的价格相加,并赋值在工作表A,物品b单元格后一个单元格。
我第一次循环可以成功取出值,但是第二次循环就开始报错,有需求错误,也有自动化错误的,求大神帮忙看看我这个代码应该怎么改,分数没问题,解决问题后给高分。
'开始与 原始数据工作表 匹配 名称单元格
If Cells(Row, col).Value = ar.Sheets("原始数据).Cells(locrow, 1).Value And ar.Sheets("220kV").Cells(locrow, 5).Value = "发货" Then
这里的220kV应该是原始数据。原文中打错了
展开
 我来答
xiangjuan314
2015-09-29 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2828万
展开全部
第二次循环出现错误在那个地方?首先检查第二次出现的workbook是否工作表A,,因为Cells(Row, col).Value这个是获取当前显示workbook的值,,,如果不是这个问题,就检查下你的Row = Row + 1是否清0了,因为这个是累计的!
追问
出错在If Cells(Row, col).Value = ar.Sheets("原始数据).Cells(locrow, 1).Value And ar.Sheets("220kV").Cells(locrow, 5).Value = "发货" Then
追答
Cells(Row, col).Value改为thisworkbook.sheets("表名").Cells(Row, col).Value试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式