查看: 1831|回复: 0

硬件工程师使用EXCEL的技巧之BOM篇

[复制链接]

该用户从未签到

发表于 2019-7-21 23:14:52 | 显示全部楼层 |阅读模式
分享到:
实我们经常会用到EXCEL,或者遇到实际上使用EXCEL就可以解决的问题而不知道的时候。

整个硬件设计其实是以一张BOM表来展开的,在前期设计的时候,初步估计系统之后就必须要得到一份初步的BOM LIST,通过这个BOM来取得成本信息,通过这个成本信息来报价。

项目拿下后,BOM则是前期的重点,通常在修改或者升级或者返工的时候都要对这个玩意搞非常多的时间。

BOM表格各个公司的格式不太一样,不过有几个关键元素还是要提一下:
1.jpg
元件号:我们都会对每个元件编号,这个号是通过原理图软件直接生成的,因此这一项信息一般都是对的,除非你在原理图里面不取名字或者怎么样的,一般都可以通过错误检测出来。

元件描述:一般大一点的公司都会对元件进行建库的工作,这是一个无聊而且容易出错的工作,几乎每个公司都会出现库里面的信息出现错误的情况,这是不可避免的。

元件的供应商编号:一般我们选定一个厂家的器件,该器件都会有一个号。一般比较大的公司一类元件都会有几个供应商,因此这一内容一般不会在库信息内出现。

公司元件编号:公司一般会对所使用的器件进行编号,比如电阻1KOHM,0603,1%的电阻给一个编号,这个电阻可以从KOA买,也可以从ROHM买,或者是MURATA买,因此一个公司元件编号可以有若干个元件供应商编号。

好,现在的问题已经很明显了,通过软件生成的BOM表只含有元件号,元件描述,公司元件编号。而且每个项都是分立的,如果有10个电阻都是1KOHM,0603,1%,那么就有10行。我们需要做大量的工作来把相同的项合并,我们需要核对公司的元件数据库里面的公司元件编号和元件描述是否符合。

以上的工作,如果用人的眼睛来做,我想没个几天做不完,而且费时费力。当然你也可以建议公司去买套软件,但是我相信一般来说是不现实的。

第一个事情是把一些重合的片子过滤出来。

这个采取的EXCEL的菜单高级筛选(Advvanced Filter)命令:
2.jpg
接下来要统计元件的数量:

COUNTIF可以用来计算给定区域内满足特定条件的单元格的数目。语法形式为COUNTIF(range,criteria)。其中Range为需要计算其中满足条件的单元格数目的单元格区域。Criteria确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。
3.jpg

采用逻辑判断:=IF(A3=H3,CONCATENATE(C2,",",B3),C2)得到组合标号
4.jpg 4.jpg
其中函数为:CONCATENATE:将若干个文字项合并至一个文字项中。语法形式 为:CONCATENATE(text1,text2……)

下面为描述部分,我们以电阻为例,要检验标号和封装和组织,精度及电压。首先做一个给定的表格,描述器件的。
5.jpg
通过符合函数可得精度,封装和电压:

=INDEX(C:C,MATCH(CONCATENATE(LEFT(I3,5),RIGHT(I3,1)),B:B,0))
=INDEX(C:C,MATCH(MID(I3,6,2),B:B,0))

LEFT函数:LEFT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定要由 LEFT 所提取的字符数。

MID函数:MID(text,start_num,num_chars)其中Text是包含要提取字符的文本串。Start_num是文本中要提取的第一个字符的位置。

RIGHT函数:RIGHT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定希望 RIGHT 提取的字符数。

MATCH函数有两方面的功能,两种操作都返回一个位置值。一是确定区域中的一个值在一列中的准确位置,这种精确的查询与列表是否排序无关。

二是确定一个给定值位于已排序列表中的位置,这不需要准确的匹配.语法结构为:MATCH(lookup_value,lookup_array,match_type) lookup_value为要搜索的值。lookup_array:要查找的区域(必须是一行或一列)。

match_type:匹配形式,有0、1和-1三种选择:"0"表示一个准确的搜索。"1"表示搜索小于或等于查换值的最大值,查找区域必须为升序排列。"-1"表示搜索大于或等于查找值的最小值,查找区域必须降序排开。以上的搜索,如果没有匹配值,则返回#N/A。

INDEX用于返回表格或区域中的数值或对数值的引用。

函数 INDEX() 有两种形式:数组和引用。数组形式通常返回数值或数值数组;引用形式通常返回引用。

INDEX(array,row_num,column_num) 返回数组中指定单元格或单元格数组的数值。

Array为单元格区域或数组常数。Row_num为数组中某行的行序号,函数从该行返回数值。Column_num为数组中某列的列序号,函数从该列返回数值。需注意的是Row_num 和 column_num 必须指向 array 中的某一单元格,否则,函数 INDEX 返回错误值 #REF!。
6.jpg

通过以上的EXCEL的招数,我们可以搞定所有的问题,OK整理到这里了。



3.jpg
4.jpg
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /5 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-24 08:54 , Processed in 0.117151 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.