excel用VBA编程做表格

各位VBA高手们:现想做一个表格,烦请大家帮帮忙做一下
如下图为编码表格

下图为生产计划单(1线)的表格

现要求当在编码表格里的一线编码A列里在A2输入编码后(如第1个编码图)。在生产计划单(1线)将自动插入一行并根据编码规则成为如下图表格里的和种数据。要求只要在编码表格里的每增加一个编码,生产主划单表格里就自动插入行。并按要求生成相关数据。相反在编码表格里删除一个编码时则在生产计划单表格里就删除一行。并去除相关数据。

在编码表格里二线编里输入编码时则在生产计划单(2线)里自动生成相关数据。
http://pan.baidu.com/share/link?shareid=3329948924&uk=3003675138

Sub usa()
Dim BoR, WokeR
Dim WorkLike, Area, Weight, AllArea, AllWeight, AllBo
Dim LikeID(), LikeIDst(), LikeIDwi()
ReDim LikeID(9)
LikeIDst() = Array(1, 3, 5, 9, 13, 17, 19, 20, 21, 24)
LikeIDwi() = Array(2, 2, 2, 4, 4, 2, 1, 1, 3, 3)
For j = 1 To 2
  AllBo = 0: AllArea = 0: AllWeight = 0
  BoR = Sheets("编码").Cells(65536, j).End(3).Row
  WorkLike = Left(Sheets("编码").Cells(1, j), 2)
    If Sheets(WorkLike & "生产计划单").[B65536].End(3).Row > 5 Then
    Sheets(WorkLike & "生产计划单").Rows("6:" & Sheets(WorkLike & "生产计划单").[B65536].End(3).Row).Delete
  End If
  Sheets(WorkLike & "生产计划单").Range("A6:E6") = ""
  For k = 2 To BoR
    WokeR = Sheets(WorkLike & "生产计划单").[B65536].End(3).Row + 1
    With Sheets("编码")
      For i = 0 To UBound(LikeID())
        LikeID(i) = Mid(.Cells(k, j), LikeIDst(i), LikeIDwi(i))
      Next
    End With
    With Sheets(WorkLike & "生产计划单")
      .[C4] = Format(Now(), "日  期:yyyy年mm月dd日   hh时mm分   aaaa")
      .Rows(WokeR).Insert Shift:=xlDown
      .Cells(WokeR, 2) = Application.WorksheetFunction.VLookup(LikeID(1), Sheets("颜色").Range("A:B"), 2, 0) & " " & _
        LikeID(2) * 1 & "-" & LikeID(3) * 1 & "*" & LikeID(4) * 1 & "/" & LikeID(8) * 1 & " " & _
        Application.WorksheetFunction.VLookup(LikeID(5), Sheets("等级").Range("A:B"), 2, 0) & " " & _
        Application.WorksheetFunction.VLookup(LikeID(6), Sheets("包装").Range("A:B"), 2, 0) & _
        "/" & Application.WorksheetFunction.VLookup(LikeID(7), Sheets("隔离层").Range("A:B"), 2, 0)
      .Cells(WokeR, 3) = LikeID(9) * 1
      AllBo = AllBo + LikeID(9) * 1
      Area = LikeID(3) / 1000 * LikeID(4) / 1000
      AllArea = AllArea + Area * LikeID(8) * LikeID(9)
      Weight = LikeID(2) / 1000 * LikeID(3) / 1000 * LikeID(4) / 1000 * 2.5
      AllWeight = AllWeight + Weight * LikeID(8) * LikeID(9)
      .Cells(WokeR + 1, 1) = "合计:"
      .Cells(WokeR + 1, 3) = AllBo
      .Cells(WokeR + 1, 4) = "合计:" & AllArea & "㎡  净重" & Format(AllWeight, "0.00") & "吨"
    End With
  Next
Next
End Sub

等了一天一楼没有回答。一楼搞好了没?手痒。我先交了。

还有,我改了表格格式,看可以不?

再说了,你的厚度的哪个是不是圈错了,还是打错了。600MM的厚度。有生产这么厚的玻璃吗?

对了,考虑一个工厂发展与客户的要求,不只会生产这几个等级和规格等,我把他们分开表了,只要增加上内容就可以自动填写。

还有,能加分不。写得挺辛苦的。


追问

厚度是以4位数为编码的,因为有各种厚度,有10以上,有10以下,有毫米后面两位数的,谢谢了,用了一下就是厚度要修改(如0600时是6可以,就是象0320或0285时要求是3.2或2.85,现在显示不了只显示3或2就是这4位编码除以100就好)。另外还有个小要求,如下图,在下单数量后面加上一个单位,如后面为SBK的就为多少包、其他的就为多少箱。字写不了那么多,还需要改进的在图片里,谢谢了!

追答

已改好了,我假设了编号前2个号码为客户代码。如果不是,请提出。

问题1:编码里有客户代码吗?(其实都准备好客户代码写入的,就是不知道编码里哪个代表客户)


温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-02
你这是数据库的功能 编码是原始数据表 生产计划单是报表 报表根据数据表实时生成 数据库软件最基本的功能 excel也可以做到 不过有些麻烦也有些限制 回答的几位看来确实是excel发烧友啊 好像当年的自己 看到难题就想解决 热烈鼓掌!
相似回答