如何使用VBA宏从Excel表格中筛选指定记录并按属性调取字段值
实现方案
以下是两种常用开发环境下的落地方法:
1. JavaScript/Node.js 环境
- 第一步:将表格数据结构化存储为对象数组,单条记录的键名对应表格列名:
const tableData = [ { Surname: "Mozart", Given_Name: "Wolfgang", Department: "Marketing", // 其余表格字段、其余记录按格式补全 } ]
- 第二步:封装筛选函数,返回匹配到的记录对象,直接支持属性调用:
// 按指定字段值筛选,返回第一条匹配记录 const filterRecord = (field, value) => tableData.find(item => item[field] === value) || {} // 调用示例 const MyFamily = filterRecord("Surname", "Mozart") // 按属性取值 console.log(MyFamily.Department) // 输出:Marketing console.log(MyFamily.Given_Name) // 输出:Wolfgang
如需匹配多条符合条件的记录,将find方法替换为filter即可,返回结果为对象数组,可按下标取用对应记录的属性。
2. Python 环境
- 第一步:结构化表格数据,手动构造或直接读取表格文件转换:
# 方式一:手动构造字典列表 table_data = [ { "Surname": "Mozart", "Given_Name": "Wolfgang", "Department": "Marketing" # 其余字段、记录补全 } ] # 方式二:读取本地表格文件转换(支持csv、excel等格式) import pandas as pd # 读取csv示例,读取excel替换为read_excel即可 df = pd.read_csv("表格文件路径.csv") table_data = df.to_dict("records")
- 第二步:封装支持属性访问的字典类和筛选函数:
# 自定义支持属性访问的字典类 class AttrDict(dict): def __getattr__(self, key): return self.get(key) def filter_record(field, value): for item in table_data: if item[field] == value: return AttrDict(item) return AttrDict() # 调用示例 MyFamily = filter_record("Surname", "Mozart") # 按属性取值 print(MyFamily.Department) # 输出:Marketing print(MyFamily.Given_Name) # 输出:Wolfgang
如需多条件筛选,只需调整筛选逻辑,传入多个字段和对应值做匹配判断即可。
内容的提问来源于stack exchange,提问作者Chetan Nahar
相关产品推荐
相关产品推荐

