在Microsoft Access中创建带格式的键值映射列(查找式)
当然可以不用嵌套IF!你说的键值映射表思路完全踩对了点——这在Access里是个既简洁又好维护的方案,比堆一堆嵌套IF靠谱多了,尤其是以后要加新的键值对应时,改起来超方便。
具体实现步骤
1. 确认你的映射表(查找表)
先确保你的映射表(建议命名为LookupTable)结构和数据正确,就是包含Key和Val两列的表,数据如下:
| Key | Val |
|---|---|
| Key 1 | A |
| Key 2 | B |
| Key 3 | C |
| Key 4 | D |
2. 通过查询实现列拼接
你不需要写复杂的VBA,只用Access的查询功能就能搞定,分两种方式:
方式一:可视化查询设计(适合不熟悉SQL的朋友)
- 打开Access的「查询设计」,添加你的原始参考ID表(比如叫
ReferenceTable)和上面的LookupTable - 拖动
ReferenceTable里的Keys字段到LookupTable的Key字段,建立关联(因为你的Keys列带数据验证,匹配不会出问题) - 在查询设计的「字段」行,新建一个自定义字段,输入:
NewColumn: [Reference ID] & " - " & [LookupTable].[Val] - 运行查询,就能直接得到你要的新列结果了。
方式二:直接写SQL语句(适合熟悉SQL的朋友)
如果你更习惯写SQL,直接创建一个SQL查询,粘贴以下代码(记得替换成你实际的表名和字段名):
SELECT [ReferenceTable].[Reference ID] & " - " & [LookupTable].[Val] AS NewColumn FROM ReferenceTable INNER JOIN LookupTable ON ReferenceTable.Keys = LookupTable.Key;
额外小贴士
- 如果担心有个别
Keys值没在映射表里匹配到,可以把INNER JOIN改成LEFT JOIN,这样即使没有匹配的键,新列会显示[Reference ID] -(后面为空),不会漏掉任何数据 - 这个方案的优势在于可维护性极强:以后要加新的键值对应,直接在映射表里插一行就行,完全不用改查询代码,比嵌套IF那种改起来要动一堆逻辑的方式省心太多
内容的提问来源于stack exchange,提问作者Surobaki
相关产品推荐
相关产品推荐

