Excel精英培训网

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

[已解决]在一个单元格中输入代码,另一单元格显示相对应的代码的下拉菜单

[复制链接]
发表于 2013-11-26 13:43 | 显示全部楼层 |阅读模式
如题,具体要求及说明详见表内蓝色区域。小弟在此先谢谢各位大侠,最好能用非VBA方式解决。
最佳答案
2013-11-26 14:37
假绅士 发表于 2013-11-26 14:30
那用代码怎么做啊?可以支持我在“名单”中后续填充数据吧?

B2的公式=IFERROR(VLOOKUP(B3,名单!A:B,2,),"")
以下代码当你选择B3时运行得到下拉
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim arr, brr(), x%, j%, str1$
  3.     If Target.Address = "$B$3" Then
  4.         arr = Sheets("名单").UsedRange
  5.         str1 = Range("B1").Value
  6.         For x = 1 To UBound(arr)
  7.             If Mid(arr(x, 2), 7, 4) = str1 Then
  8.                 i = i + 1
  9.                 ReDim Preserve brr(1 To i)
  10.                 brr(i) = arr(x, 1)
  11.             End If
  12.         Next x
  13.         If i = 0 Then
  14.             Target.Validation.Delete
  15.             Target.Value = ""
  16.             Exit Sub
  17.         End If
  18.         With Target.Validation
  19.             .Delete
  20.             .Add Type:=3, Formula1:=Join(brr, ",")
  21.         End With
  22.     End If
  23. End Sub
复制代码

Book1.rar

5.64 KB, 下载次数: 18

发表于 2013-11-26 14:07 | 显示全部楼层
回复

使用道具 举报

发表于 2013-11-26 14:12 | 显示全部楼层
你个问题用VBA倒是好解决 非V复杂多了
回复

使用道具 举报

 楼主| 发表于 2013-11-26 14:28 | 显示全部楼层
蝶·舞 发表于 2013-11-26 14:07
不用VBA的话,得用辅助区域

用辅助区域怎么做?
回复

使用道具 举报

 楼主| 发表于 2013-11-26 14:30 | 显示全部楼层
fjmxwrs 发表于 2013-11-26 14:12
你个问题用VBA倒是好解决 非V复杂多了

那用代码怎么做啊?可以支持我在“名单”中后续填充数据吧?
回复

使用道具 举报

发表于 2013-11-26 14:37 | 显示全部楼层    本楼为最佳答案   
假绅士 发表于 2013-11-26 14:30
那用代码怎么做啊?可以支持我在“名单”中后续填充数据吧?

B2的公式=IFERROR(VLOOKUP(B3,名单!A:B,2,),"")
以下代码当你选择B3时运行得到下拉
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim arr, brr(), x%, j%, str1$
  3.     If Target.Address = "$B$3" Then
  4.         arr = Sheets("名单").UsedRange
  5.         str1 = Range("B1").Value
  6.         For x = 1 To UBound(arr)
  7.             If Mid(arr(x, 2), 7, 4) = str1 Then
  8.                 i = i + 1
  9.                 ReDim Preserve brr(1 To i)
  10.                 brr(i) = arr(x, 1)
  11.             End If
  12.         Next x
  13.         If i = 0 Then
  14.             Target.Validation.Delete
  15.             Target.Value = ""
  16.             Exit Sub
  17.         End If
  18.         With Target.Validation
  19.             .Delete
  20.             .Add Type:=3, Formula1:=Join(brr, ",")
  21.         End With
  22.     End If
  23. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-11-26 14:47 | 显示全部楼层
fjmxwrs 发表于 2013-11-26 14:37
B2的公式=IFERROR(VLOOKUP(B3,名单!A:B,2,),"")
以下代码当你选择B3时运行得到下拉

如果我后续添加数据还有影响么?是否需要对代码进行改动。
回复

使用道具 举报

 楼主| 发表于 2013-11-26 14:52 | 显示全部楼层
fjmxwrs 发表于 2013-11-26 14:37
B2的公式=IFERROR(VLOOKUP(B3,名单!A:B,2,),"")
以下代码当你选择B3时运行得到下拉

顺便帮忙填上代码说明吧,我好学习学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 13:01 , Processed in 0.308478 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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