永发信息网

excel vba 在B列中单元格中输入代码,在相应的A列和C列中输入产品名和单位。

答案:5  悬赏:80  手机版
解决时间 2021-02-27 16:24
  • 提问者网友:太高姿态
  • 2021-02-26 21:21
想实现的功能:

录入时,填写产品代码,A、C两列自动从产品库中查找,得到相应的产品名和单位。填入同行的相应单元格,如果找不到,提示请输入正确的产品代码。

录入表中A、B、C三列:

产品名 产品代码 计量单位
硅酸盐水泥熟料 3011010 吨
窑外分解窑水泥熟料 3011020 吨
水泥 3011030 吨

产品库中同样是A、B、C三列如同上表。

我是这样写的:哪里不对?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
irow = ActiveCell.Row
Range("A" & irow).FormulaR1C1 = "=IF(B" & irow & "="""","""",(LOOKUP(B" & irow & ",产品库!B$" & irow & ":B$476,产品库!A$" & irow & ":A$476)))"
End If
End Sub
最佳答案
  • 五星知识达人网友:山河有幸埋战骨
  • 2021-02-26 21:59
Private Sub Worksheet_Change(ByVal Target As Range) '如果填写,则改变颜色。
Dim sh As Range, d As Range
With Target
If .Cells.Count = 1 And .Column = 2 And Len(.Text) > 0 Then
Set sh = Sheets("产品库").Range("B:B")
Set d = sh.Find(.Value, LookIn:=xlValues, Lookat:=xlWhole)
If Not d Is Nothing Then
.Offset(0, 1).Value = d.Offset(0, 1).Value
.Offset(0, -1).Value = d.Offset(0, -1).Value
Else
.Offset(0, 1).Value = "找不到该产品编码"
.Offset(0, -1).Value = "找不到该产品编码"
End If
End If
End With
End Sub
全部回答
  • 1楼网友:野慌
  • 2021-02-26 23:14
假设原两列数据为A B 两列添加辅助列,C C1输入公式 =COUNTIF(B:B,A1) 向下填充,然后自动筛选选择C列值大于0的行即可 ...举例:如果两列为B列C...
  • 2楼网友:雪起风沙痕
  • 2021-02-26 23:03
把产品库列重设一下产品代码放在最前面,这样用VLookup就可以实现了
  • 3楼网友:未来江山和你
  • 2021-02-26 22:48
你好! 你这里错误有好几个. Target 返回的是一个集合,activecell也一样. 变量不定义就用,虽然不能说是错误,但这样不好. range前面没对象,这是谁的range?或者你这样用的时候没错,但实际上这么写是错的, 公式没看,不知道有没错. 关键是,单是这么点功能,不用写宏吧? 希望对你有所帮助,望采纳。
  • 4楼网友:北城痞子
  • 2021-02-26 22:20
你这里错误有好几个. Target 返回的是一个集合,activecell也一样. 变量不定义就用,虽然不能说是错误,但这样不好. range前面没对象,这是谁的range?或者你这样用的时候没错,但实际上这么写是错的, 公式没看,不知道有没错. 关键是,单是这么点功能,不用写宏吧?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯