在Excel中将数据输入多个工作表的最佳方法?

时间:2010-11-16 12:08:07

标签: excel excel-vba vba

基本上我需要有一些表来销售特定类别,例如电脑和笔记本电脑我还需要一个显示所有销售的主表。

对于输入我使用输入框和下拉菜单选择哪个类别(个人电脑或笔记本电脑),然后将此输入与销售信息一起放入一个大表中。我只是想知道将这些数据放入单独的工作表中的最佳方法是什么?我有点松散的结局从哪里开始。我想过可能在VB中使用IF语句,如果输入是例如PC然后也插入到工作表PC中,但这似乎是一种非常低效的方式。

非常感谢您的想法。

2 个答案:

答案 0 :(得分:0)

如果您不确定将VB代码放在何处,最好将代码添加到其中一个工作表后面,而是添加到单独的模块中。另一方面,您需要一个在特定事件中调用的代码的入口点。这可能是工作表事件(例如,更改事件),或者只是用户在希望更新主表时必须激活的按钮或菜单。从那里调用你的模块代码。

如果你能提供一个具体的例子,我们可能会给你一个更好的答案。

使用工作表更改事件:在每个输入表单中添加如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    UpdateMainSheet(ActiveSheet)
    ' or UpdateMainSheet(Target)
End Sub

UpdateMainSheet应该是一个单独模块中的公共Sub,它将输入数据从给定工作表复制到主工作表(还应删除主工作表中已在给定工作表上删除的数据)。 / p>

答案 1 :(得分:0)

将2张相同的记录保存在“必须”中吗?

如果只是一次只能看到PC或笔记本电脑,您可以随时使用过滤器。

如果用户在输入后更新记录,如果用户不是在主表单中,而是在Clone_Laptop表单中进行编辑,该怎么办?这将带来各种混淆,除非你更新两种方式,即

对于任何工作表中的每次更改(Master,Clone_PC,Clone_Laptop),您必须将整个记录复制到另一个工作表以保持工作表同步,这意味着您必须

  • 通过唯一键找到目标表中的记录(你有这样的??)
  • 如果找到,则按源行替换当前目标行
  • 如果未找到,则将源行复制到第一个空目标行

因为这样的例程 - 如果写得正确 - 可以双向操作,你肯定会将它放在一个单独的模块中,并从每个工作表中的Worksheet_Change()事件过程调用它,传递源行的参数({{ 1}})和目标表。

提示:注意正确抽象问题。说 - 如果您创建一个包含类别列表以及工作表名称的额外表格,您可以自由地确定哪个类别应该转到哪个工作表,您可以将2个或更多个类别提供给同一个工作表,等等。验证主表中类别的良好列表。最后,对于稍后可能为新类别创建的每个新工作表,将添加一行代码(调用Sync例程并将“MasterSheet”作为目标参数)