2014-07-15 53 views
0

我是一名交易平面设计师,虽然我知道基本的Excel,但对我而言,这是进入国外领域。将数据从工作表中的行复制到另一个基于数量选择的工作表

因此,我一直负责将我们公司的产品价格清单(包含所有分类为各种类别/标签的+800多种产品)汇总到一个版本中,供用户选择每个产品的数量并在页面上查看运行清单的总数。没问题,我有这个想法。

每个项目都有一个零件号,描述,价格和数量的列......数量默认为零。我需要这样做,以便如果用户需要某个项目,他们可以将数量更改为任何他们想要的数量,然后按添加/更新采购订单按钮,并将该项目行的此值添加到单独的工作表。此外,如果他们将值更改为零并再次按下按钮,则会删除该项目。

所以现在书中的每个工作表是这样的:

enter image description here

理想的情况下,将是巨大的,只是有一个宏/按钮,一旦用户进入项目(S)的任何数量,他们想要,它会将该行(但是作为列顺序GBCFH)复制到名为“采购订单”的该工作表中。如果用户将一定数量的项目更改为0,并重新点击该按钮,则会从另一个工作表中删除所述行。这需要通过30多个其他选项卡,并在用户继续将产品添加到其采购订单(从采购订单工作表上的B22开始)后添加在已输入值下面的行。

我的担忧是添加/未来删除产品/其他员工必须更新此内容,而不需要对宏进行疯狂的更改,假如我需要为选项卡添加5个以上的产品。

我会采取任何帮助,见解,指导或任何人都可以解决这个问题。我非常感谢!

回答

0

好吧我不知道我是否理解你的问题,但这是我的想法:你可以在工作表上创建2个按钮,其中一个带有大的“+”,另一个带有“ - ” “并将它们链接到2个不同的子例程。

这些项目可以位于产品行的末尾或开头。右键点击按钮,进入属性,并确保它们取决于单元格的位置和大小。
“+”可以检查您的“采购订单”当前是否打开(如果不是,可以创建一个新的订单),并将所有内容添加到新工作表中的同一行(可以使用Application.Caller以寻址按钮并且寻址其行/列)。

当然,您需要搜索产品名称是否已经在“采购订单”中,在这种情况下请增加数量,否则请复制所有行。
与“ - ”按钮相同,如果数量为0,则消除产品行。有趣的部分:您可以创建2个按钮和宏,然后复制每行的按钮,因为它们各自在其左/右!

编辑:

Sub Add() 

Dim Button_cell_row As Integer 
Dim ws As Worksheet, Target As Worksheet 
Dim ProductName As String 
Dim i As Integer 

Set ws = ThisWorkbook.ActiveSheet 
Set Target = Workbooks("Purchase_Order.xls").worksheets(1) ' Here you need to choose the file (Workbook) and the Worksheet (Tab) you want 

Button_cell_row = ws.Shapes(Application.Caller).TopLeftCell.Row 

Do Until IsEmpty(Target.Cells(i,4)) ' for example your product name is in the 4th column 
    If Target.Cells(i,4) = ProductName Then 
     Target.Cells(i,7) = cInt(Target.Cells(i,7)) + 1 ' say that the quantity is stored in the 7th cell 
    Exit Do 
    End If 
    i = i+1 
Loop 

If IsEmpty(Target.Cells(i,4)) Then ' meaning that the whole sheet has been searched but there's no product with a similar name on the whole "i" loop-range 
' in this case "i" is now the index of your first empty row 
    ws.Range(Cells(Button_cell_row,3), Cells(Button_cell_row,8)).Copy _ ' For example you need to copy from 3rd column to 8th column... 
    Destination:=Target.Cells(i,1) ' ... on the first empty row, from column 1 
End If 

Set ws = Nothing 
Set Target = Nothing 

End Sub 

这是没有测试,可能无法正常工作。但你有这个想法:)对于“删除”子,它会非常相似。

+0

谢谢!这是有道理的,会解决问题,但我不知道如何实现它!我喜欢能够添加“+”和“ - ”按钮的想法,因为这将消除对任何主要定制的需要。现在说有这个例如 PART#DESC LINK(网站)名单成本您的成本数量 每个标签可能有很多产品。理想情况下,如果按ADD,它会复制该行(列A,B,E,F)并将它们粘贴到PO选项卡上(按F,A,B,E的顺序)......如果按下REMOVE,从PO中删除该行。 – user3183524

+0

修改为包含一些代码 – Noldor130884

相关问题