Excel 中的计数器

Excel 中的计数器

我的文件里面有 50 张表,每张都是一个标准表格。我们将其命名为 Form1、Form2、Form3。

我想创建一个打印表,从中选择我想查看的表格,这样我就不需要在各个表之间导航来找到想要的表格。我还想在这个打印表中设置计数器,每次我发送到打印机时它都会计数。

到目前为止我做了什么?我创建了这个公式,其中 M1 是一个带有表单名称的下拉列表。因此,如果我想查看 Form2,我会在下拉列表中选择 Form2,然后公式会显示所有 Form2 工作表。

=IF($M$1="Form1";IF('Form1'!A1="";"";'Form1'!A1);"")&IF($M$1="Form2";IF('Form2'!A1="";"";'Form2'!A1);"")&IF($M$1="Form3";IF('Form3'!A1="";"";'Form3'!A1);"")

一切运行良好,因为所有形式都是标准化的。

选择所选表格后,我需要插入我公司的 ID 号,然后打印。

我想知道是否可以在此工作表中创建一个计数器,计算我打印的次数...或者在我保存或更改任何内容时按时间顺序计数的任何东西......

答案1

您的所有请求都可以满足。但恐怕只能使用 VBA。

保留下拉菜单但也添加一个触发宏的按钮。

在宏中,读取带有下拉菜单的单元格并发送相应的工作表进行打印。然后更新相应的计数器,该计数器可以位于与下拉菜单和按钮位于同一页上的一组单元格中。

要计算保存次数,您需要一个 before_save 函数的宏。您需要搜索它,我认为我的博客上甚至可能有一篇关于它的文章,不记得了,我已经好几年没做过了。原理与上一个宏相同,您只需将 1 添加到相应的单元格即可。

答案2

构建“打印表”以显示其他 50 张表之一的内容的一种更简洁的方法是将单元格设置A1

=INDIRECT($M$1 & "!A1")

它会构建一个文本字符串,该字符串看起来像您想要查看的单元格的限定名称,然后使用该INDIRECT()函数取消引用该字符串(即,将其视为单元格地址并检索已识别单元格的内容)。这样,您在添加时就无需更改公式Form51。警告:

  • 这可能会导致 Excel 在以下情况下做大量工作(即花费大量时间)“重新计算”这些间接单元格:任何事物变化(不仅仅是M1)。我不确定它是否会比你现在的情况更糟糕。
  • 当您想要更新时,请务必避免更改数据或在“打印表”中输入新数据的诱惑Form42。(当然,您现在有这个问题。)您可以通过保护打印表来保护自己免受此类事故的侵害。

还有其他方法可以构造打印表;例如,使用 VBA

  • 创建一个用户定义的函数来代替INDIRECT()调用,但运行起来更顺畅,或者
  • 实际上,当您更改时,会将所有数据复制到打印表中。FormnnM1

您可以通过编写 VBA 例程来计算变化Worksheet_Change

我不知道表格逻辑如何能够计数/检测打印时间。不过,您可能能够通过用 VBA 编写打印例程来实现所需的效果。

PrintOut , , , True

语句将为您打印工作表;添加您想要的任何其他操作(例如,增加计数器)。(您只需记住打印使用此宏)第四个参数PrintOut预览,设置为True 让 Microsoft Excel 在打印工作表之前调用打印预览(从而为您提供取消的选项)或False(或省略)立即、无条件打印工作表。

如何在 MS Office 中添加 VBA? 了解相关信息。

相关内容