我需要使用条形码扫描仪将数据输入 Excel,该扫描仪在扫描的代码末尾添加一个“输入”键。我需要扫描设备上的两个代码并将它们链接到数据库中。因此,我想扫描第一个代码,然后移动到第一个代码旁边的单元格,然后扫描第二个代码,之后它应该更改行以扫描下一个设备的代码。
我可以通过仅在每个扫描代码末尾输入回车键来自动将代码移动到两列数据表的正确单元格中吗?
答案1
一旦到达 Excel 表格行的末尾,Excel 将自动前进到下一行。因此:
- 首先创建两列“代码 1”和“代码 2”(分别位于 A1 和 B1)。
- 选择 A1:B2,然后单击“插入”>“表格”
- 将 Excel 选项 > 高级 > “按 Enter 后,移动选择方向”设置为“右”
或者
- 更改全局 Excel 设置的替代方法:查看条形码扫描器手册并扫描设置条形码以将终止字符更改为“Tab”。
另请参阅此旧相关内容问题。
答案2
如上所述ExcelEverything
,如果您将数据范围格式化为正式的 Excel 表格,那么当您在最右侧列的单元格中并按下 Enter 时,Excel 将移动到下一行/新行的第一个单元格。如图所示,将其与告诉 Excel 在按下 Enter 时向右移动一个单元格相结合,这将处理行中所有其他单元格的移动。在这种情况下,只有两个单元格,但原理是一样的。让扫描仪改用 Tab 基本上会以相同的方式工作。
但是,如果您没有、不能或不会将数据范围格式化为正式的 Excel 表格(我从来没有这样做过,除非某些下游用途从中受益,所以也许您也不喜欢它们),那么您需要一种稍微不同的方法。
为此,您应该首先将 Excel 设置为按照ExcelEverything
答案中的方式移动,然后突出显示您认为可能需要的两个单元格的行数或更多行,确保“选定的”单元格(突出显示区域中看起来未突出显示的单元格)是您希望输入的第一个单元格,然后扫描。
如果您只是突出显示一些单元格,而没有确保突出显示的单元格足以处理今天的条目,请密切注意扫描,因为如果您到达最后一个突出显示的单元格,它将回滚到它们的开头并覆盖您的起始工作。当然,按下 Ctrl-Shift-Right Arrow 然后按下 Ctrl-Shift-PageDown 直到突出显示几千行并不像跑马拉松一样,所以这种情况根本不可能发生!
最后,不同的方法是,如果您具备 VBA 技能,无论电子表格是否另存为启用宏的电子表格,您都可以将其用作启用宏的电子表格:只需正常打开它,粘贴宏(保存在 Word 文件中,也许,与其他有用的宏一起,可用于处理大量电子表格),并在工作时使用它。保存工作时,将其另存为开始时的 .XLSX 文件,Excel 将为您删除该宏。因此,无论有关创建启用宏的电子表格的组织规则如何,您都可以始终使用宏。替代但类似的方法:将宏保存在您的 Personal.xlsb 文件中,它将始终可用......但是......无论好坏,它都会始终有效!我提到这一点是因为宏中的技术将是一个Worksheet_SelectionChange
宏。而不是您通过某些有意为之的动作(例如单击为其提供的按钮)来调用的宏。
无论如何,宏的概念很简单。假设您的数据位于 A 列和 B 列。您设置标准移动以在按 Enter 时向右移动,如ExcelEverything
的答案中所示。当您执行第二次扫描时,Excel 会将您移动到 C 列。您将设置为Worksheet_SelectionChange
在任何时候选择 C 列中的某些内容时都采取行动。操作是向下移动一行进入 A 列,因此在这种情况下您进行扫描,它会移动到单元格 C2349,宏会在发生变化时激活,检查是否需要采取行动,注意到它应该采取行动,因为刚刚发生了进入 C 列的移动,然后向下移动一行,移到 A 列,并让您留在单元格 A2350 中以准备下一次扫描。
对于更复杂的情况,请忘记在 Excel 中更改移动File|Options|Advanced
。只需将宏设置为关注两列,本例中为 A 列和 B 列。设置一个Worksheet_Change
事件检查更改是否是 A 列单元格中的扫描,并响应移动到 B 列单元格。如果它注意到 B 列单元格中发生了更改,它会向下移动一行并返回到 A 列。
其中之一必须完成上述操作,或者使用像图片这样的表格ExcelEverything
。(很可能,无论您将这些数据用于什么用途,表格都会使您更容易从电子表格的其他位置访问它,所以为什么不呢?),因为 Excel 实际上并没有提供更多功能。它用于保存数据(作为次要角色),并使用数据(作为主要角色)。它并不太担心您实际上如何获取数据。它提供的唯一真正帮助是 Power Query,从形式上讲,它是一个完全不同的程序,与 VBA 一样,也是一个完全不同的程序,与 Excel 紧密相关。甚至 PQ 在手动输入方面也不太适用。