这篇blog讨论的事儿, 是关于使用Excel, 如何根据一个单元格的用户输入值, 自动设置另一个单元格的值.
这个需求最开始的动机是这样的,
我们需要维护一个员工表, 员工便上面有员工所属于的部门名, 以及这个部门的编码这样的信息,
对于员工所属于的部门的名字, 我们可以使用数据有效性, 通过下拉列表的方式实现
但是, 员工部门的编码, 一来不好记忆, 二来他们彼此还十分相似, 很容易混淆.
因此我们希望:
当用户选择了部门名称之后, 可以在excel, 将部门的编码自动补全.
类似的情形还有, 比如:
使用excel管理图书的信息表,这个表里面很可能有图书名和ISBN,
我们希望当编辑图书名字的单元格的时候, 可以自动补全ISBN,
对于类似的需求, 我们可以使用vba来做,
但是如果在excel里面插入了vba, 用户在打开excel的时候, 会弹出安全性提示(根据安全性级别的设置而定).
所以跟vba比较, 我们还是更倾向于公式.
感谢S同学, :-) 通过公式我们可以有一下两种方法.
(在附件的excel文件中, 有这两种方法的具体示例)
方法一: 利用INDEX和MATCH函数 (这是我最终使用的方法)
写出来的公式是形如下面这样, 其中method_1_config是一个单独的sheet, 用于配置连动的对应关系.
=IF(($B3<>""),INDEX(method_1_config!$A:$B,MATCH($B3,method_1_config!$A:$A,0),2),"")
方法二: 利用LOOKUP函数
写出来的公式是形如下面这样, 其中method_2_config是一个单独的sheet, 用于配置连动的对应关系.
=IF(($D3<>""),LOOKUP($D3,method_2_config!A:A,method_2_config!B:B),"")
注意的问题
在我们的测试中, 我们发现第二种方法LOOKUP函数, 不支持中文,日本等全角字符, 有匹配错误的现象.
详见附件.
而方法一则可以支持这些全角字符,
因此我们最终采用方法一实现.
另: 而且在附件中, 也测试了空格, -, 还有括号的情况.
相关推荐
条件格式是Excel中一个强大的功能,它允许用户根据单元格的值或公式的结果自动改变单元格的样式,如字体颜色、背景色或边框。在本例中,用户可能想要突出显示某一列(例如,A列)中满足特定条件(如大于某个数值、...
接下来,我们需要创建一个Excel应用对象,并打开或创建一个工作簿。这可以通过以下代码实现: ```cpp CoInitialize(NULL); CExcelApp excelApp; excelApp.CreateDispatch(_T("Excel.Application")); ...
"取Excel单元格属性值.rar"这个压缩包文件提供了一个名为"技巧251 取单元格属性值.xls"的工作簿,它主要介绍了如何利用Excel的命名公式来获取特定单元格的字体颜色和背景颜色值。下面我们将详细探讨这两个关键知识点...
在Excel中,数组公式不是像常规公式那样仅作用于一个单元格,而是可以处理一整组或一系列的数据,这组数据可以是单行、单列或任何多行多列的组合。它们通常涉及到多个运算和逻辑判断,能够一次性处理整个区域的数据...
在Java编程环境中,Apache POI库是一个非常重要的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel。这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并...
为了避免这种情况,可以在A列数据下面的单元格(本例中为A10)中输入一个空格或其他字符。这样做可以确保MATCH函数始终能找到匹配项,避免错误发生。 #### 总结 通过上述方法,我们可以轻松地计算出Excel中合并...
在Excel中,突出显示包含公式的单元格是一个非常实用的功能,可以帮助用户快速识别哪些单元格是基于公式计算得出的结果,从而避免误删或修改。这个功能对于数据分析、报表制作以及协同工作尤其有用,因为它可以提高...
C#NPOI获取EXCEL单元格公式计算值,测试日期、数字和字符串均没有问题,参数类型:ICell,没用不收费,请勿转发,个人原创。
3. 访问单元格:易语言提供了“读取单元格”和“写入单元格”等命令,用于获取或设置单元格的值。例如,“读取单元格”命令的参数包括工作表名、行号和列号。 四、Excel单元格操作进阶 1. 数据读写:除了基本的读写...
数组公式与普通公式的主要区别在于它能够一次性处理整个数组或多个单元格的数据,而不仅仅是一个单一的值。在Excel中,当你按下Ctrl + Shift + Enter键组合时,公式就会被定义为数组公式,而不是简单的Enter键。 ...
在Excel中,自动调整行高是一项非常实用的功能,尤其在处理大量数据或合并单元格时。标题中的"Exce自动调整行高的宏"指的是利用VBA(Visual Basic for Applications)宏来实现对Excel表格行高的智能调整。宏是Excel...
5. **公式与函数**:Excel强大的功能之一在于其内置的公式和函数。例如,SUM函数用于求和,AVERAGE用于计算平均值,IF函数实现条件判断。公式以等号(=)开头,遵循一定的语法规则。 6. **引用**:单元格之间的引用...
在Excel中,将指定单元格的内容转换为批注是一个实用且高效的功能,尤其当涉及到大量数据处理时。本文将深入探讨如何通过自定义函数实现这一功能,使单元格中的数据根据预设规则自动转化为批注,提升数据管理和分析...
当需要获取的单元格的值由公式返回时,公式返回的结果可能是一个错误文本,包含#NULL!、#DIV/0!、#VALUE!、#REF!、#NAME?、#NUM!、#N/A 等。如果公式返回的结果是一个错误文本,可以使用 Range 对象的 Value ...
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
【JAVA】easypoi根据Excel模板导出 循环遍历合并单元格处理
在公式中,当你复制或移动公式时,相对引用会根据目标位置自动调整。例如,假设A1单元格值为5,B1单元格公式为=A1,那么B1显示的结果就是5。如果将B1的公式复制到C1,C1则会显示A2的值,因为相对于C1,A1变成了上一...
excel基本操作,创建,读写,公式设置,判断是否为合并单元格
让我们逐步了解如何修改Excel中的指定单元格: 1. **打开Excel文件**: 使用`SpreadsheetDocument`类,你可以打开一个现有的Excel文件。这通常涉及以下步骤: ```csharp using System.IO.Packaging; using ...