Excel VBA - 生成部件号

时间:2017-09-20 02:37:07

标签: vba excel-vba excel

我尝试使用VBA在Excel中编写自动部件号生成器。部件号采用以下格式:" XXXXX-XX"。前五位是序列号,后两位数表示修订级别。

当提取新的部件号时,修订级别将始终从" 01"开始。例如:" 12345-01"。预先存在的数字列在" A"从" A2"开始。我希望宏观看整个" A"专栏并拆分" XXXXX-XX"格式,只看前5位数。然后,它会确定该列中的最高值,并自动为该值+1,以创建我的下一个部件号。

我对VBA完全陌生,所以我的第一次尝试如下: 我将Range1声明为Range,因此它可以查看整个" A"列,只有前5位数字:

Range1 = Microsoft.VisualBasic.Left("A2:A", 5)

如果我没记错的话,LEFT函数会以文本格式返回数字。所以使用函数" Val"是否正确?将文本转换回数字格式? MaxValue被声明为一个整数,用于在#34; A"列中存储最大值。

MaxValue = Application.WorksheetFunction.Max(Val(Range1))

我似乎在第一行代码中遇到运行时错误424,或者有更好的方法吗?任何帮助将不胜感激!

提前致谢。欢呼声,

2 个答案:

答案 0 :(得分:0)

你不需要vba来解决这个问题,普通的excel公式会做(如果你愿意,可以在vba中使用相同的概念)。

假设您的部件号码在A1:A100中。然后在单元格中输入以下公式,您需要新的产品编号:

=MAX(VAL(LEFT(A1:A100,5))) + 1 & "-01"

- >确保使用CTRL + SHIFT + ENTER输入公式,当excel在公式周围添加{}时,您会看到正确的条目(对于Array-Formulas总是需要)。

(希望我将公式从德语翻译成英语......)

答案 1 :(得分:0)

<强>输入

enter image description here

在Cell B2中,尝试以下公式并按CTRL + SHIFT + ENTER。它将为您提供所需的确切零件编号。

<?php
  $session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
  $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), array('s', 's'), array("Nobody", "Nowhere"));
// or
  $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

希望这就是你要找的。

<强> OP: enter image description here