Excel VBA 跨表 批量设置数据有效性,悬赏100,如各位马上帮忙解决OK,加100

两个 sheet : 数据源, “数据有效性引用” , 两在同一工作薄内, 格式完全一样

“ 数据源 ” A3:A1000 数据有效性系列 来源 为 "数据有效性引用" Range(A3:A4) (要求序列 可添加, 即 可能会新增A5, 那么序列变为A3:A5, 意思是 A3 :A (xlendup row))
“ 数据源 ” B3:B1000 数据有效性系列 来源 为 "数据有效性引用" B3:B4, 同样要求序列可添加, 即 B3 : B列 最后一非空单元格

同理 : C3:C1000 来源于 数据有效性引用 C3:C 列最后非空单元格 行

在此真诚感谢各位帮忙,
希望描述清楚了, 如仍有不明 请提出,谢谢

看了你的问题,不知道你的想法是采用函数还是VBA解决,我认为用函数将能解决这个问题了。方法如下:(按数据来源在“数据有效性引用”表,输入是在“数据源”表写公式)
1.点插入——名称——定义,输入名称“数据”,在引用位置输入公式=OFFSET(数据有效性引用!E$1,0,0,MAX((数据有效性引用!E$1:E$1000<>"")*ROW(数据有效性引用!E$1:E$1000)))后点确定。
2.在“数据源”表中A1单元格设置数据有效性——序列,在来源里输入“=数据”后确定。
3.将A1单元格的有效性复制到A、B、C……各列的相应单元格。到此OK!
你自己试试下拉列表吧!追问

1楼,这样我N年前就会了,
本来154K的表格 被你 这样 一弄 会变成4M
还是谢谢你,感谢您的回答

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-27
vate Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target = "" Then
Exit Sub
End If
For i = 2 To ThisWorkbook.Sheets.Count
Set c = Sheets(i).Cells.Find(Target, ActiveCell, , xlWhole)
If Not c Is Nothing Then
Sheets(i).Select
Sheets(i).Range(c.Address).Activate
Exit Sub
End If
Next i
End Sub

'功能还比较单一,如有进一步要求,可以hi我追问

无语, Copy别人的 东西 代码都不Copy全

一点小偷的 职业精神都没有

开头是 Private Sub.......... 我简直无语

第2个回答  2011-02-28
Sub 批量设置数据有效性()
Dim irow
srow = 3
drow = 1000
For i = 1 To 3
irow = Sheets("数据有效性引用").Cells(65535, i).End(xlUp).Row '取得数据有效性引用表中1-3列的最后有数据行的行数
ThisWorkbook.Names.Add Name:=Chr(64 + i) & Chr(64 + i), RefersToR1C1:="=数据有效性引用!R" & srow & "C" & i & ":R" & irow & "C" & i '定义名称
With Sheets("数据源").Range(Cells(srow, i), Cells(drow, i)).Validation '设置数据有效性
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Chr(64 + i) & Chr(64 + i)
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
Next
End Sub

这个代码你放在数据源那张表里面,只要数据有效性引用有数据更新,运行一下这段宏即可自动设置好.

Excel VBA 跨表 批量设置数据有效性,悬赏100,如各位马上帮忙解决OK,加...
1.点插入——名称——定义,输入名称“数据”,在引用位置输入公式=OFFSET(数据有效性引用!E$1,0,0,MAX((数据有效性引用!E$1:E$1000<>"")*ROW(数据有效性引用!E$1:E$1000)))后点确定。2.在“数据源”表中A1单元格设置数据有效性——序列,在来源里输入“=数据”后确定。3.将A1单元格...

Excel VBA 跨表 批量设置数据有效性, 急
先按F5运行一次 iYcx 程序 然后到 数据源 表,分别设置有效性 ycx1、ycx2、ycx3

EXCEL下拉列表怎样做一个查询系统
Excel设置数据有效性实现单元格下拉菜单的3种方法 一、直接输入:1.选择要设置的单元格,譬如A1单元格;2.选择菜单栏的“数据”→“有效性”→出现“数据有效性”弹出窗口;3.在“设置”选项中→“有效性条件”→“允许”中选择“序列”→右边的“忽略空值”和“提供下拉菜单”全部打勾→在“来源”...

EXCEL中count和通用符号的应用
在工作表标签处按住CTRL键不放一一点击你想要设置公式的工作表,然后在你想要的位置设置公式(只在一份工作表中设置公式即可)

EXCEL中如何让工作表默认命名以001开始?
一、创建默认工作簿模板 1.打开Excel 2003,把三个工作表分别重命名为:工作表(1)、工作表(2)、工作表(3)。2.按住Ctrl键逐一单击工作表标签,选中这三个工作表,按我们的需要进行页面设置、修改“工具→选项”中的项目以及各单元格的格式等等,还可以录制一些常用的宏。在此按Ctrl键全选是为了对三...

Excel 不带删除线的内容提取出来进行使用?
第一步、启用一张全新的工作表,把你需要提取的数据,整列复制到新表的A列中。第二步、按Alt+F11打开VBA编辑器,按图上的箭头指示,先点“插入”---“模块”,在左侧的工程资源管理器中,双击模块,在右侧的模块代码编辑区中,粘贴代码。最后,点击画圆圈的那个按钮,运行代码,即可。如果数据较多...

电子表格中怎么把大批量的数字变为0.00.数字在同一列中,但是表格中有线...
方法是: (1)选中要输入英文的列,单击“数据”菜单,选择“有效性...”命令,在弹出的“数据有效性”对话框中,选中“输入法模式”选项卡,在“模式”框中选择“关闭(英文模式)”命令,单击“确定”按钮选中要输入汉字的列,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择“打开”命令,单击...

电子表格中如何将某单元格日期为2月26日到3月25日的时间内,在另一单元...
然后进行设置即可。 5、用Excel做多页的表格时,怎样像Word的表格那样做一个标题,即每页的第一行(或几行)是一样的。但是不是用页眉来完成? 在EXCEL的文件菜单-页面设置-工作表-打印标题;可进行顶端或左端标题设置,通过按下折叠对话框按钮后,用鼠标划定范围即可。这样Excel就会自动在各页上加上你划定的部分作为...

Excel表格内容批量填写到网页并提交,用《网页自动操作通用工具》是如...
1、首先,在软件中打开要录入数据的网页,手工录入网页表单中的填写项目。2、然后点击菜单》系统》新建配置文件,建立一个填表任务的配置文件。3、点击软件左下角+号(新建规则)按钮,将分析当前网页中要填写的内容,生成一条填表规则。4、处理好填写的信息后,点参数面板中的数据文件生成按钮,生成一个...

在Excel工作表的单元格C2中有公式“=A2+B2”,将C2单元格的公式复制到...
七、在EXCEL中建立下拉列表按钮选定你要设置下拉列表的单元格,点“数据”-“有效性”-“设置”,在“允许”下面选择“序列”,在“来源”框中输入你的下拉列表内容,各项之间用半角逗号隔开,如: A,B,C,D 选中“提供下拉前头”,点“确定”。八、阿拉伯数字转换为大写金额假定你要在A5输入阿拉佰数字,B5转换成中文...

相似回答