列表下拉框自动模糊自动检索_「EXCEL下拉菜单中的高手」模糊匹配,自动查找,筛选下拉,绝了...

今日帮朋友做了一个案例,其中一个知识点,就是模糊查找自动匹配下拉菜单

在这个朋友人美、心善、开朗、乐观,在此祝福她永远年轻漂亮

现在讲这个功能,做了一份详细的教程,希望能帮到大家,让她也学会

效果:如果不输入关键词,全部呈现出来选中下拉

如果输入关键词,只匹配符合条件的,呈现在下拉菜单里面供选择

知识点1:用match函数,获取我们关键词在数据库列的第一个位置

图一如上图一,我们用到的函数中,第一个参数,就是我们要下拉输入的单元格,第二个参数为区域,当我们输入函数后,确定

确定后,如图二, 结果为5,同时我们可以看下,龙海市,在C列刚好在第五个单元格,这里用到的知识点,就是如何获得符合条件的单元格位置

知识点2:获取符合条件的个数如图一,当我们输入公式后,就获统计出包含关键词的个数,为2,这里用的是countif函数

图一

2,如下方图二,我们也可以将关键词只输入一个龙字,同样可以得出个数为4,第一个出现位置为5,这里我们将公式的第二个参数,两端加上了通配符,就是说前面后面,啥都行,只要包含龙字

知识点3:offset函数,这个是重点,很重要!!!!

1,OFFSET函数应用详解

1、offset(坐标原点,向下偏移第几行,向右偏移第几列,取几行,取几列)

如上图我们要获取令狐冲这个值,以B2为第一个参数,而后就可以输入公式

2、,=offset($B$2,4,2,,),就可以获得令狐冲这个值,在这个函数中,我们可以将第一个参数, 理解为我们坐标轴的原点,如果向下、向右偏移,就输入正数值,如果向左、向上偏移,就输入负数值,在不需要偏移的地方,空着不写

3、如果我们要获取李白的值,可以输入=offset($B$2,-1,-1,,)

4,如果我们要获取4个值呢

4.1,公式,我们以C1为原点,因为符合条件的个数为4,我们选中4个单元格,而后输入完公式后,按ctrl+shift+enter键,将公式转化为数组,就一次获取了所有符合条件的其中的E3是5,说明向下偏移5行,

4.2、但是仔细的就可以看出来,这个是错误的,因为以C1为原点,我们计算位置的时候,也是以C1为原点,应该向下偏移到第4个位置,就是实际的第5个位置,所以实际我们要在E3后面减去1、写为E3-1

5,因为我们不可能弄那么多的辅助单元格,所以我们可以将E3,E4的值,替换为单元格内的公式,如下图

全部替换后,如图,实际就是包含关键词的所有内容,放到了一个数组里面,我们只要将这个公式写入到数据有效性里面,就可以了

设置动画以及效果

内功心法,数据输入完成后,要执行以下排序,才能完成下拉效果,就是讲同样地区的,排列在一起!!!!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在 Excel 使用下拉框来选择数据,并且根据选择的数据自动填充其他单元格,可以通过以下步骤来实现: 1. 创建一个 Workbook 对象,可以通过 HSSFWorkbook 或 XSSFWorkbook 来创建一个 Excel 文件。 2. 获取 Sheet 对象,可以通过 Workbook 的 createSheet() 或 getSheet() 方法来获取。 3. 创建一个下拉框,并将其添加到指定单元格,可以通过 DataValidationHelper 和 DataValidation 来实现。在 DataValidation 指定下拉框的选项列表。 4. 监听 Sheet 的 change 事件,当下拉框的值发生变化时,自动填充其他单元格的数据。可以通过 Sheet 的 addValidationListener() 方法来添加监听器。 5. 保存 Excel 文件,可以通过 Workbook 的 write() 方法将数据写入到文件。 以下是一个简单的示例,展示如何使用 Apache POI 来实现上述功能: ``` // 创建一个 Workbook 对象 Workbook workbook = new HSSFWorkbook(); // 获取 Sheet 对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建一个下拉框,并将其添加到指定单元格 DataValidationHelper dvHelper = sheet.getDataValidationHelper(); CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); String[] options = new String[]{"Option1", "Option2", "Option3"}; DataValidationConstraint constraint = dvHelper.createExplicitListConstraint(options); DataValidation dataValidation = dvHelper.createValidation(constraint, addressList); sheet.addValidationData(dataValidation); // 监听 Sheet 的 change 事件,自动填充其他单元格的数据 sheet.addValidationListener(new ValidationListener() { @Override public void onValueChanged(Validation validation, Cell cell, boolean b) { // 获取选择的值 String selectedValue = cell.getStringCellValue(); // 根据选择的值,自动填充其他单元格的数据 if (selectedValue.equals("Option1")) { Cell nextCell = cell.getRow().getCell(cell.getColumnIndex() + 1); nextCell.setCellValue("Data1"); } else if (selectedValue.equals("Option2")) { Cell nextCell = cell.getRow().getCell(cell.getColumnIndex() + 1); nextCell.setCellValue("Data2"); } else if (selectedValue.equals("Option3")) { Cell nextCell = cell.getRow().getCell(cell.getColumnIndex() + 1); nextCell.setCellValue("Data3"); } } }); // 保存 Excel 文件 FileOutputStream fileOut = new FileOutputStream("workbook.xls"); workbook.write(fileOut); fileOut.close(); ``` 注意:以上代码仅供参考,实际应用需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值