excel下拉菜单制作方法汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

excel下拉菜单制作方法汇总

Excel下拉列表通常都是利用“数据有效性”来实现的,通过“数据有效性”设置,可以让Execl 的某一单元格出现下来菜单的效果,那么如何实现excel下拉列表呢?

Excel下拉列表、Excel下拉菜单的第一种方法(数据有效性):

第一步:打开Excel工作薄——>选定某一单元格——>点击上方的“数据(D)”菜单——>点击“有效性(L)”;

第二步:将弹出“数据有效性”窗口,在“设置”选项卡中“有效性条件”下方找到“允许(A)”,将其设置为“序列”——>然后再将“忽略空值(B)”和“提供下拉箭头(I)”两项前面打上勾;

第三步:最后在“来源(S)”中,输入您需要的菜单选项数据,比如,需要设置1、2、3为下拉菜单中的可选项,就在“来源(S)”下方输入“1,2,3”,每一组数据之间必须以英文标点的逗号“,”隔开,不能用中文全角的逗号“,”——>最后点击“确定”退出即可;

补充说明:在“来源(S)”中还可以直接引用某些单元格内的数据作为下拉菜单的可选项,只需要在“来源(S)”下方输入一串代码即可,比如,想要让第一列的单元格A1至A5中的数据作为可选项,就在“来源(S)”下方输入“=$A$1:$A$5”(不含引号,且必须使用英文符号和标点);

Excel下拉列表、Excel下拉菜单的第二种方法(自动生成可选项的范围):

第一步:首先定义可选项数据的范围,也就是说出现在下拉菜单中的选项是哪些数据,这个范围只能是某一行或某一列;使用鼠标框选某一行或某一列的数据——>然后点击上方的“插入”菜单——>点击“名称(N)”——>选择“自定义(D)”;

第二步:将弹出的“自定义名称”窗口,在“在当前工作薄中的名称(W)”下输入“dw”——>点击右边的“添加”——>点击“确定”退出;

第三步:选中要设置Excel下拉列表的单元格后——>点击“有效性”——>在“设置”选项卡中,将“允许(A)”设置为“序列”——>在“来源(S)”下输入“=dw”(不含引号)——>点击“确定”即可;

Excel下拉列表、Excel下拉菜单的第三种方法(筛选):

利用“筛选”功能自动生成Excel下拉选项,采用此方法会将Excel工作薄的某一列中的所有数据都作为下拉菜单中的可选项;

第一步:打开Excel工作薄——>用鼠标框选住需要设置Excel下拉选项的某一行内容(如,单位名称、产品名称、日期、数量这一行);

第二步:然后点击上方的“数据(D)”菜单——>点击“筛选”——>选择“自动筛选”;

采用“自动筛选”方法生产的Excel下拉列表、Excel下拉菜单、Excel下拉选项,会将整个一列的数据都作为可选项被使用;

实例:有如下一份省市数据:省份以及省份所辖地市清单,需要实现多级联动下拉菜单操作,具体操作方式如下所示:

第一步:对各单元格区域进行名称定义

选中A1:A5单元格区域,然后公式——根据所选内容创建——如图设置

PS:分别对B、C、D、E列重复以上操作

第二步:设置省份列的选项

选中G1:G22单元格区域,然后数据——数据有效性

弹出数据有效性设置窗口,然后如图设置

其中来源“=省份”,这里的省份与之前自定义的单元格区域名称是相对应的省份选项搞定

第三步:设置地市列的选项

选中H1:H22单元格区域,然后数据——数据有效性

在弹出的窗口,设置如下

其中来源=indirect($G1)

PS:indirect函数,返回由文本字符串指定的引用。

地市选项也搞定了,N级操作以此类推

同样,利用NPOI代码也可以实现上面的效果:

HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0); DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] { "itemA", "itemB", "itemC" });

HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);

sheet1.AddValidationData(dataValidate);

下面对代码作一下简要说明:

先设置一个需要提供下拉的区域,关于CellRangeAddressList构造函数参数的说明请参见上一节:

CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);然后将下拉项作为一个数组传给CreateExplicitListConstraint作为参数创建一个约束,根据要控制的区域和约束创建数据有效性就可以了。

但是这样会有一个问题:Excel中允许输入的序列来源长度最大为255个字符,也就是说当下拉项的总字符串长度超过255是将会出错。那么如果下拉项很多的情况下应该怎么处理呢?答案是通过引用的方式。步骤如下:

先创建一个Sheet专门用于存储下拉项的值,并将各下拉项的值写入其中:HSSFSheet sheet2 = hssfworkbook.CreateSheet("ShtDictionary");

sheet2.CreateRow(0).CreateCell(0).SetCellValue("itemA");

sheet2.CreateRow(1).CreateCell(0).SetCellValue("itemB");

sheet2.CreateRow(2).CreateCell(0).SetCellValue("itemC");然后定义一个名称,指向刚才创建的下拉项的区域:

HSSFName range = hssfworkbook.CreateName();

range.Reference = "ShtDictionary!$A1:$A3";

Name = "dicRange";最后,设置数据约束时指向这个名称而不是字符数组:HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);

DVConstraint constraint =

DVConstraint.CreateFormulaListConstraint("dicRange"); HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);

sheet1.AddValidationData(dataValidate);

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]

相关文档
最新文档