Excel精英培训网

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

[已解决]如何选取B2的内容

[复制链接]
发表于 2013-1-26 18:13 | 显示全部楼层 |阅读模式
在一个工作簿的两个工作表中,A1是表1的数据列,B2在表2单元格无内容,用“有效性”如何实现B2要的内容是从A1列中选取。
最佳答案
2013-1-26 18:41
若用vba则如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        Arr = Sheets(2).Range("A1:A" & Sheets(2).Range("A65536").End(3).Row)
        For I = 1 To UBound(Arr)
            S = S & Arr(I, 1) & ","
        Next I
        S = Left(S, Len(S) - 1)
        With Target.Validation
            .Delete
            .Add Type:=xlValidateList, Formula1:=S
        End With
    End If
End Sub
 楼主| 发表于 2013-1-26 18:15 | 显示全部楼层
如果有别的公式或方法也可以。谢谢老师们!
回复

使用道具 举报

发表于 2013-1-26 18:29 | 显示全部楼层
1. 设置数据列为一个名称,例:数据
2. 有效性引用该名称
Book1.rar (1.65 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2013-1-26 18:36 | 显示全部楼层
看到,现在就试试。在那里还可以写成“数据”?晕
回复

使用道具 举报

 楼主| 发表于 2013-1-26 18:40 | 显示全部楼层
不好意思,再问,数据怎么设置呀?
回复

使用道具 举报

发表于 2013-1-26 18:41 | 显示全部楼层    本楼为最佳答案   
若用vba则如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        Arr = Sheets(2).Range("A1:A" & Sheets(2).Range("A65536").End(3).Row)
        For I = 1 To UBound(Arr)
            S = S & Arr(I, 1) & ","
        Next I
        S = Left(S, Len(S) - 1)
        With Target.Validation
            .Delete
            .Add Type:=xlValidateList, Formula1:=S
        End With
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-1-26 18:43 | 显示全部楼层
哇,用VBA呀,我不会用这个呀,有公式吗
回复

使用道具 举报

 楼主| 发表于 2013-1-26 18:44 | 显示全部楼层
不好意思,有点事出去一会,很快回来。谢谢
回复

使用道具 举报

 楼主| 发表于 2013-1-26 20:32 | 显示全部楼层
老师好,有公式的方式吗
回复

使用道具 举报

发表于 2013-1-28 16:24 | 显示全部楼层
1528734650 发表于 2013-1-26 18:43
哇,用VBA呀,我不会用这个呀,有公式吗

3楼附件没看见??!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 09:16 , Processed in 0.686462 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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