Excel精英培训网

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

[已解决]请教高手

[复制链接]
发表于 2015-2-5 12:41 | 显示全部楼层 |阅读模式
请教高手,怎么把附件里的表格从Single wire to PR(MB)变到Sheet2里,当Single wire to PR(MB)里任意一个数改变时Sheet2里的Wire No也相应的改变。

谢谢
最佳答案
2015-2-5 14:00
在数据源表中输入代码
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     r = Target.Row: c = Target.Column
  3.     For i = 1 To 5
  4.         If Cells(r - i, 1) Like "MB*" Then Exit For
  5.     Next
  6.     If i <= 5 Then
  7.         a1 = Cells(r - i, 1): a2 = Cells(r, 1): a3 = Cells(r - i + 1, c)
  8.         x = a1 & " " & a2 & " " & a3
  9.         With Sheets("sheet2")
  10.             Set Rng = .[a:a].Find(x)
  11.             If Not Rng Is Nothing Then
  12.                 Rng.Offset(0, 1) = Target
  13.             End If
  14.         End With
  15.     End If
  16. End Sub
复制代码
这样就能实现实时改变了。

Layout of wire Rack layout(01-29).zip

114.01 KB, 下载次数: 16

发表于 2015-2-5 13:42 | 显示全部楼层
自定义函数
  1. Function GetMb(x)
  2.     mb = Left(x, 5)
  3.     Set Rng = Sheets("Single wire to PR(MB)").UsedRange.Find(mb)
  4.     If Not Rng Is Nothing Then
  5.         r = Rng.Row + 5 - Mid(x, 7, 2)
  6.         c = 1 + Right(x, 2)
  7.         GetMb = Sheets("Single wire to PR(MB)").Cells(r, c)
  8.     End If
  9. End Function
复制代码

Layout of wire Rack layout(01-29).rar

124.52 KB, 下载次数: 5

回复

使用道具 举报

发表于 2015-2-5 14:00 | 显示全部楼层    本楼为最佳答案   
在数据源表中输入代码
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     r = Target.Row: c = Target.Column
  3.     For i = 1 To 5
  4.         If Cells(r - i, 1) Like "MB*" Then Exit For
  5.     Next
  6.     If i <= 5 Then
  7.         a1 = Cells(r - i, 1): a2 = Cells(r, 1): a3 = Cells(r - i + 1, c)
  8.         x = a1 & " " & a2 & " " & a3
  9.         With Sheets("sheet2")
  10.             Set Rng = .[a:a].Find(x)
  11.             If Not Rng Is Nothing Then
  12.                 Rng.Offset(0, 1) = Target
  13.             End If
  14.         End With
  15.     End If
  16. End Sub
复制代码
这样就能实现实时改变了。

Layout of wire Rack layout(01-29).rar

120.7 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2015-2-5 15:44 | 显示全部楼层
grf1973 发表于 2015-2-5 14:00
在数据源表中输入代码这样就能实现实时改变了。

非常感谢!
回复

使用道具 举报

 楼主| 发表于 2015-2-5 15:58 | 显示全部楼层
还能用函数来表示吗
回复

使用道具 举报

发表于 2015-2-5 16:26 | 显示全部楼层
wabo1004 发表于 2015-2-5 15:58
还能用函数来表示吗

在SHEET表B2输入公式:
=INDEX('Single wire to PR(MB)'!$A:$P,MATCH(LEFT(A2,5),'Single wire to PR(MB)'!$A:$A,)+CHOOSE(--MID(A2,7,2),4,3,2),RIGHT(A2,2)+1)
将公式向下复制。
回复

使用道具 举报

 楼主| 发表于 2015-2-5 16:35 | 显示全部楼层
往下拉有的怎么会显示NA
回复

使用道具 举报

发表于 2015-2-5 20:19 | 显示全部楼层
wabo1004 发表于 2015-2-5 16:35
往下拉有的怎么会显示NA

你前一个表的"MB 10”和"MB 12” 后面存在空格,所以公式出错。
公式修改一下就没问题了:
=INDEX('Single wire to PR(MB)'!$A:$P,MATCH(LEFT(A2,5),TRIM('Single wire to PR(MB)'!$A$1:$A$1000),)+CHOOSE(--MID(A2,7,2),4,3,2),RIGHT(A2,2)+1)
公式以CTRL+SHIFT+ENTER三键结束。
回复

使用道具 举报

 楼主| 发表于 2015-2-9 10:20 | 显示全部楼层
qinqh_yl 发表于 2015-2-5 20:19
你前一个表的"MB 10”和"MB 12” 后面存在空格,所以公式出错。
公式修改一下就没问题了:
=INDEX('Sin ...

谢谢,测试OK
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:30 , Processed in 0.799013 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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