Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: jx1680000

[技巧] 仓库进销存表[“EXCEL应用技巧班”版块培训教程]

  [复制链接]
 楼主| 发表于 2007-3-8 15:12 | 显示全部楼层

对工作表运作调试各分表汇总和“进销存”表汇总是否一致

<img src="data/attachment/forum/dvbbs/2007-3/2007381512222099.gif" border="0" onclick="zoom(this)" onload="if(this.width>document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" /><br/>
[此贴子已经被作者于2007-3-8 17:07:52编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:13 | 显示全部楼层

关于仓库库存表的一些情况说明!

<ul><li>仓库进销存帐的意义在于能够及时的对入库、出库信息进行<br/>检索,能够准确快速的了解库存情况。早期的手工帐是通过建立台<br/>帐,然后对台帐进行汇总以掌握库存情况。</li></ul><p>&nbsp;</p><ul><li>如果使用者不能对录入的界面加以掌握,或难以达到实际的工<br/>作界面要求,删除界面,直接用“进”“销”“存”三表进行库存管<br/>理也不失为一个好办法,因为这已解决了数据统计问题。但要注意,手<br/>工在录入数据时,数据的一致性问题,否则在存表统计中一定会出错。</li><li></li><li>在运作中,应经常核对统计的正确性,注意在存表中一个产品只出<br/>现一次,如有两次会重复计算,那总数就不能表表核对了。</li><li>可以在这里进行单列唯一性的条件设置。</li></ul><p>&nbsp;</p><ul><li>如有新的产品增加,应先在存表中加入,并拖动建立公式。</li></ul><p>&nbsp;</p><ul><li>我列出的是最基本框架的库存表,此表需要拓展,比如入库很多情况,<br/>有退库、有多个仓库间平行调货、有半成品入库等等,这个可以对进库表增加<br/>属性列,统计也是一样统计的,有必要的话可以加一新表,对这个属性进行单<br/>独统计。同样出库也是这样,如销售退回,返修,半成品加工等。</li></ul><p>&nbsp;</p><ul><li>这里没有统计金额,同样可以求和计算。&nbsp;</li></ul><p>&nbsp;</p>
[此贴子已经被作者于2007-3-14 13:46:46编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:14 | 显示全部楼层

关于录入界面的一些情况说明!

<ul><li>时间是要输入的,如不输入,在后表录入后就会没有虚线格子,<br/>当然可以设定的其它列判断(条件格式里设定)。</li></ul><p>&nbsp;</p><ul><li>界面的控制思路是,通过一个界面完成“入库”“出库”两张表<br/>的输入工作,在界面右边有一个下拉键,通过它确定数据的走向。<br/>(这里在代码的设计方面是一个漏洞,只设了格子中有入库、出<br/>库的两种情况,如果此格子中的字被删除,那数据就不能录入,<br/>因为没有指定数据走向,最好是在代码中加入这一情况。)</li></ul><p>&nbsp;</p><ul><li>有一种情况是不能出现的,界面是根据B列,也就是代码这列计数<br/>的,如果录入时,空一行,其结果是只录入到空格上面的数据。所<br/>以要保证代码列不空(数据最后当然是可以的)。</li></ul><p>&nbsp;</p><ul><li>如果觉的五行不够,可以多插几行,这对界面是没有影响的,但如<br/>果要加列,加其它的属性列,那就要调整录入代码了。</li></ul><p>&nbsp;</p><ul><li>这里界面存在的意义是对输入的数据由代码来控制,保证输入数据<br/>的有效性和一致性;真对有些企业出、入库开单打印的需要。当然<br/>如果你的出、入库单格式有很大差异,用两个界面分别输入也是可<br/>以的。</li></ul><p>&nbsp;</p><ul><li>这里用到的函数是VLOOKUP函数,这也是一个常用函数,大家可能<br/>已经很熟悉了,VLOOKUP(查找的值,查找的数据区域,找到值后的<br/>横向位移数,是否精确匹配),这个也不多说了,有极多的贴子对它<br/>进行了深度挖掘的,这里的主要目的是举一个案例,我想通过“解剖一<br/>只麻雀让大家了解大多数鸟的内部构造”。</li></ul>
[此贴子已经被作者于2007-3-15 13:01:02编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:14 | 显示全部楼层

关于“进销存”统计表的说明!

<ul><li>这里把基本信息表和代码表和进销存表三表做在一个表上了,<br/>您可以分开来每一种单独一张表,当然方便的话合在一起让<br/>表格更简单一些是我们的工作目的。</li></ul><p>&nbsp;</p><ul><li>由于实际工作中这里有很多产品是不常出现或更本就不会出现<br/>的,但又不能删除,(0也是一种状态,有这个产品,只不过没<br/>有进出罢了。)对于这种情况你隐藏就好了。</li></ul><p>&nbsp;</p><ul><li>这个“进销存”表还可以做成报表界面,把前面的的一些基本<br/>信息隐藏对数据检索是不会有影响的。把这个表就做成公司要<br/>求的样子,以后你随时都可以打印你的库存报表了。</li></ul><p>&nbsp;</p><ul><li>这里用到的函数是SUMIF,这个函数是常用的,没有什么可多说<br/>了,SUMIF(查找的区域,查找的目标,统计找到区域对应列的和)<br/>公式简单,好维护的,要让使用者明白它的意义,这样这个表才<br/>会有真正的生命。</li></ul><p>&nbsp;</p>
[此贴子已经被作者于2007-3-9 12:45:22编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:14 | 显示全部楼层

“进”“销”两表的情况说明!

<ul><li>如果你是要手工输入“进”“销”这两张表,可以用一些如下拉键,格式设定,<br/>有效性设定的方法加快你的输入,增加输入的准确性。但如果是界面输入,这<br/>是可以省去的,界面过来的一定是标准数据。</li></ul><p>&nbsp;</p><ul><li>原本这两张表是可以做成一张表的,只在其中一表上多增加一列,注明是进销就<br/>可以了,但这对后面的统计就提高了要求,我想了想,也考虑到实际工作的情况,<br/>分开来更好处理,也可以正确反映数据的性质。如果是在一张表上,就要利用公<br/>式或程序对数据进行筛选,一个简单的进销存没有必要搞成高科技产品吧!</li></ul><p>&nbsp;</p><ul><li>前面提到的,可以有多种情况出现,“入库”,“退厂”(入库退回),“销售”<br/>“销售退回”“移库”“借出”“损耗”“半成品入库”“再加工品入库”,每<br/>个企业都有自己的情况,基本表不变,形式可以千变万化。</li></ul>
[此贴子已经被作者于2007-3-9 13:11:26编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:14 | 显示全部楼层

关于数据清空代码的说明情况!

<ul><li>Sub 清空数据()<br/>&nbsp;&nbsp;&nbsp; If MsgBox("您将清空表单内的数据,请确认您的操作!", 64 + 4) = 6 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Range("C2,E2,B5:B9,E5:E9").ClearContents<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Sub</li></ul><p>&nbsp;</p><ul><li>if......then......是一种条件格式,也是常用的判断格式,和我们在的常用<br/>IF函数意思相同,IF(满足条件)THEN (执行什么操作),这里如果执行的语<br/>句简单,写成一行就可以了,如果多的话要分行写,那就要记住在最后加END IF。<br/>如果条件多,可以写成<br/>IF。。。THEN<br/>。。。<br/>ELSEIF。。。THEN<br/>。。。<br/>ELSEIF<br/>。。。<br/>END IF</li></ul><p>&nbsp;</p><ul><li>关于MSGBOX这是一个给出系统提示用的,我记的在2007VBA培训课上有很详细的说明<br/>可以去看看,这里就不多说了。</li></ul><p>&nbsp;</p><ul><li>Range("C2,E2,B5:B9,E5:E9")是已在界面中解除了锁定的数据输入区域。</li></ul><p>&nbsp;</p><ul><li>ClearContents这个是清除内容,和CLEAR不一样,这里注意一下。<br/></li></ul>
[此贴子已经被作者于2007-3-9 15:16:25编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:14 | 显示全部楼层

<p>依柔 16:56:35<br/>在线吗?我在EXCEL精英培训网上发了个帖,是求助进销存软件的,谢谢你的回复<br/></p><p>依柔 16:59:37<br/>关于你的那个进销存表格,有个问题请教一下。我现在做了一个,不过每个月的出入库在进销存报表中是一起算的,我想每个月分开算怎么做?就是说把进销存表格分段,一个一个段,而不是每个月数字累计在一起的<br/></p><p>早逢春 19:20:39<br/>啊,您好,直接说问题啊,有两种情况可以解决你说的问题,其实,这也是我们在实际工作中一定会碰到的,问的好呀!<br/></p><p>早逢春 19:30:17<br/>如果你不想增加表格的难度,因为我们可能很多情况表格是给别人用的,(要根据使用者EXCEL的应用水平的情况和你工作中的实际情况来定了),一个月做一份这种表,存在的问题就是,期末库存和期初库存的结转问题。其实很容易解决的,在每个月底,把这个月的表另存为一个这个月的新表,把此表的月末库存COPY,然后“值”粘到期初库存上,再删除“进”“销”两表的全部数据,呵呵,新的一个月不就开始了吗?<br/></p><p>早逢春 19:35:34<br/>还有一种方法,数据不断月,从头到尾做,一年分一次吧,在“进”“销”用MONTH()这个取月份,(已输入日期的,再开一列取)在存表中的公式要改一下,用数组公式进行多条件统计,不知你是不是知道,我这里说一下,如不清,再问啊!<br/></p><p>早逢春 19:38:26<br/>={(型号=A1)*(月份=X1)*数量}这里把"X1"做成一个下拉键,里面是1-12月,这样随你拉就可以查询一年每个月的情况了。这里的“X1”是自己随便取的格子,位置是你自己定的。这里的“型号”“月份”“数量”是在数据区定义的区域名,当然注意实际工作的公式和我写的会不一样,这里有两个表,都要取的,分别在两列里建立!</p>
[此贴子已经被作者于2007-3-11 19:53:57编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:15 | 显示全部楼层

关于数据录入的代码说明!

<p><br/>Application.ScreenUpdating = False<br/>'这是关闭屏幕切换的命令<br/>If Range("H4") = "入库" Then<br/>'这里是根据H4的内容决定数据的走向,是进入库还是出库。&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; x = 1<br/>&nbsp;&nbsp;&nbsp; Do While Not (IsEmpty(Sheets("入库").Cells(x, 2).Value))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x = x + 1<br/>&nbsp;&nbsp;&nbsp; Loop<br/>&nbsp;&nbsp;&nbsp; '入库单的行数据统计,这是一个测量的情况,是以“入库”表的第<br/>'二列为探测标准,目的是决定数据插入从那一行开始。要求是不为空值。<br/>'有朋友用“range("b65536").end(xlup).row ”,这个不好啊,不建议使<br/>'用,我在工作中遇过这样的麻烦,理由是会在筛选的情况下,不能正确<br/>'统计已有行数,会覆盖原数据。<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; n = x<br/>&nbsp;&nbsp;&nbsp; z = 5<br/>&nbsp;&nbsp;&nbsp; With Sheets("单据录入")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Do While Not (IsEmpty(.Cells(z, 2).Value))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; z = z + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loop<br/>'这个是探测录入界面中可录入数据的行数,原理和上面的一样<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For k = 5 To z - 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 1) = .Cells(2, 5)&nbsp; '入库单号码<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 2) = .Cells(2, 3) '入库日期<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 3) = .Cells(k, 2)&nbsp; '物品代码<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 4) = .Cells(k, 3)&nbsp; '物品名称<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 5) = .Cells(k, 4)&nbsp; '规格<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("入库").Cells(x, 6) = .Cells(k, 5)&nbsp; '数量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x = x + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next k<br/>&nbsp;&nbsp;&nbsp; End With<br/>'这里是通过一个FOR...NEXT的循环把数据从录入界面向后表传递。<br/>&nbsp;&nbsp;&nbsp; m = x - n<br/>&nbsp;&nbsp;&nbsp; MsgBox "您已向“入库”中加入了" &amp; m &amp; "条记录,请在“入库”中进行确认!"<br/>end if</p><p>后面的代码和前面的内容差不多,只是表名改了,不重复说了。<br/></p>
[此贴子已经被作者于2007-3-12 9:21:17编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:15 | 显示全部楼层

用数组解决月/型号汇总的问题!

<p>解决月汇总问题,</p><p>&nbsp;</p><p>个人的意见还是不加公式,一个月一张表实用,</p><p>但样子还是给大家传上一个!</p><p>&nbsp;</p><br/>
[此贴子已经被作者于2007-3-14 16:26:31编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-3-8 15:15 | 显示全部楼层

单月提取统计说明!

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>jx1680000</i>在2007-3-8 15:15:21的发言:</b><br/><p>解决月汇总问题,</p><p>&nbsp;</p><p>个人的意见还是不加公式,一个月一张表实用,</p><p>但样子还是给大家传上一个!</p><p>&nbsp;</p><br/><br/></div><p>这里有二个情况要和大家说明一下:</p><ul><li>这里给出的区域名是固定的,如果是数据区有数据增加的话,</li></ul><p>统计结果不会把新加的数据统计进去。</p><p>解决的方法有两种,一是每一次加入新数据后需重新批量定义区域名,</p><p>这个可能麻烦一些,但对于不太了解公式的朋友可能是个好的方法。</p><p>二是定义活动的区域:</p><p>data =进销存!$A$1:$F$62 <br/>出库代码 =OFFSET(出库!$C$2,,,COUNTA(出库!$A:$A)-1,) <br/>出库数量 =OFFSET(出库!$F$2,,,COUNTA(出库!$A:$A)-1,) <br/>出库月份 =OFFSET(出库!$G$2,,,COUNTA(出库!$A:$A)-1,) <br/>入库代码 =OFFSET(入库!$C$2,,,COUNTA(入库!$A:$A)-1,) <br/>入库数量 =OFFSET(入库!$F$2,,,COUNTA(入库!$A:$A)-1,) <br/>入库月份 =OFFSET(入库!$G$2,,,COUNTA(入库!$A:$A)-1,) </p><p>这样的话,就解决了不断增加的数据区的统计问题。</p><ul><li>这里的期初库存是一个很大的问题,因为期初库存是一个连续值,</li></ul><p>是一个计算结果,一时没有什么好方法能做到这些期初数的结转和调</p><p>用。</p>
[此贴子已经被作者于2007-4-23 11:44:47编辑过]
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 07:16 , Processed in 0.316725 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表