Excel 2007:如果前一行已填写,则自动插入行

Excel 2007:如果前一行已填写,则自动插入行

我想制作一张可以用作客户打印收据的工作表,这是基本布局:

  • 客户联系方式(姓名、地址等)这些是固定字段,可能为空
  • 标题行:“商品|数量|价格|总计”
  • 包含任意多行的动态表,每行代表客户购买的一篇文章
  • 页脚行包含文章总数和总金额

我正在努力解决的是如何使动态表格工作。目前,我为每篇新文章手动插入一行,但在非常繁忙的情况下,这很麻烦。我希望 excel 默认显示一个空白行,然后每次前一行包含任何数据时插入下一行,自动将页脚行向下移动一行并更新用于计算总数量和金额的公式。

这可能吗?

答案1

对您以及任何试图这样做的人的警告是:

现在你应该思考:

  • 我将如何为每个顾客使用这个功能?
  • 有多少位顾客?
  • 我将如何输入这些项目?
  • 有多少种不同的物品?

这些是最重要的问题。我做了相当多确切地对于一家每月大约有 3 张收据的小公司来说,您想要做什么。

一如既往,请快速、便宜和仅使用 excel。然而,没有人问上述问题。主要是因为便宜和仅使用 excel。现在,很明显,每当搜索、更正收据时,尤其是在添加项目时,会浪费多少时间。更不用说同一项目有多少种不同的形式。然而,使用 excel 来更正这个问题是可能的,但恕我直言,这真的很麻烦。也说服了客户,现在建立了 EPR。

这是一个数据库任务。它是数据库任务的最佳示例之一!

此外,这甚至可能值得一个小型企业 ERP 系统。在德国,我推荐您使用 JTL-Wawi。

但是,如果这个跨越太大,您真的应该考虑使用 Access。

一些优点:

  • 您可以管理您的客户
  • 你可以管理你的物品
  • 你可以移动你的动态行为来访问
  • 您可以轻松管理收据
  • 你仍然可以使用 Excel 作为输出系统

这将如何运作?

您将有一些表格,用于客户、商品和收据。收据表将客户与其商品和其他收据相关属性联系起来。

然后,您可以为基本收据创建设计好的报告,并从 Access 中打印它。或者使用 Excel 选择收据,获取数据并打印它。由于数据是预先确定的,因此您会知道有多少行/列即将到来,以及它们的上下文是什么。

然而 - 这个轮子已经被发明了很多次了,所以你应该研究一下已经存在的轮子;)

编辑

根据您的行为请求的解决方案可以使用此处的尝试:

https://stackoverflow.com/questions/12604274/excel-vba-is-there-a-textchanging-textchanged-or-a-similar-event-or-how-to/12604570#12604570

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = clngColumnRightToLastGrade Then
    Application.EnableEvents = False
    'offset selection, one row down, two cols to left
    Target.EntireRow.Insert (xlShiftDown) 'insert new row
    Target.Offset(1, -2).Select
    Application.EnableEvents = True
  End If
End Sub

当然,您也可以使用Change事件,并且可能必须将此行为限制在动态列表的最大范围内或其工作表中。

或者只需使每个快捷键都可以访问宏即可在此处执行此行:

Target.EntireRow.Insert (xlShiftDown) 'insert new row

您需要确定当前选定的单元格是否具有范围Target

相关内容