Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2000|回复: 4

求教根据前三个单元格内容,自动取后两个单元格数值

[复制链接]
发表于 2019-10-18 10:00 | 显示全部楼层 |阅读模式
本帖最后由 zhycl 于 2019-10-18 11:38 编辑

1、Sheet1为需操作的工作表。Sheet2为数据源表。
2、在Sheet1中的A、B、C三列单元格输入值,判断在Sheet2表中E、F、G列对应的行,取后面对应的H、I列数值放到Sheet1表中的D、E列。
3、如果在Sheet1中的A、B、C三列单元格输入值,在Sheet2表中E、F、G列对应的行中没有符合条件的,则在Sheet1表中的D、E列显示为空值。
请使用VBA,非常感谢。 工作簿1.rar (9.01 KB, 下载次数: 9)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-10-18 10:21 | 显示全部楼层
在工作表sheet1的change写代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <= 3 Then
   s1 = Cells(Target.Row, 1)
   s2 = Cells(Target.Row, 2)
   s3 = Cells(Target.Row, 3)
   bz = False
   For i = 1 To Sheet2.[e10000].End(3).Row
       If (Sheet2.Cells(i, 5) = s1) And (Sheet2.Cells(i, 6) = s2) And (Sheet2.Cells(i, 7) = s3) Then
          s4 = Sheet2.Cells(i, 8)
          s5 = Sheet2.Cells(i, 9)
          Cells(Target.Row, 4) = s4
          Cells(Target.Row, 5) = s5
          bz = True
          Exit For
       End If
   Next i
   If Not bz Then
      Cells(Target.Row, 4) = ""
      Cells(Target.Row, 5) = ""
   End If
End If
End Sub

评分

参与人数 1学分 +2 收起 理由
zhycl + 2 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-10-18 11:43 | 显示全部楼层
hfwufanhf2006 发表于 2019-10-18 10:21
在工作表sheet1的change写代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Colum ...

求教,代码中,如果控制Sheet1表中起始的行和列呢,比如说,例子中的 操作范围从A2:E,变成  F10:J 了,改VBA中的哪句呢?谢谢了
回复

使用道具 举报

发表于 2019-10-18 13:06 | 显示全部楼层
zhycl 发表于 2019-10-18 11:43
求教,代码中,如果控制Sheet1表中起始的行和列呢,比如说,例子中的 操作范围从A2:E,变成  F10:J 了 ...

判断条件是下面这句:
If Target.Column <= 3 Then,录入列<=3,意思是只对a\b\c三列的录入做处理。

如果是f10:j,录入列就是f\g\h,判断条件改成:
If (Target.row>9) and (Target.Column >5) and (Target.Column <=8) Then
或者:
If (Target.row>9) and (Target.Column =6 or Target.Column =7 or Target.Column =7) Then


上面一行的意思是:大于第9行并且大于第5列并且小于等于第8列,包含 f\g\h三列,i和j列是用代码做数据替换,不需要录入判断
下面一行的意思是:(>第9行) and (=6列 or =7列 or =8列),要注意小括号的位置,三个or是并列关系,需要放在一个括号内

除了要修改条件判断,后面的数据替换也要做修改,原代码:
         Cells(Target.Row, 4) = s4   '替换第4列
         Cells(Target.Row, 5) = s5   '替换第5列
改成:
         Cells(Target.Row, 9) = s4   '替换第9列,i列
         Cells(Target.Row, 10) = s5   '替换第10列,J列
有两个这样的地方要修改。

回复

使用道具 举报

 楼主| 发表于 2019-11-26 11:40 | 显示全部楼层
hfwufanhf2006 发表于 2019-10-18 13:06
判断条件是下面这句:
If Target.Column 5) and (Target.Column 9) and (Target.Column =6 or Target.Co ...

老师,您给看看,我自己修改后,无法取数了,请教哪里出问题了,谢谢了 工作簿1.rar (15.49 KB, 下载次数: 2)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 01:07 , Processed in 0.389025 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表