首页 > 解决方案 > 尝试在 Excel 中增加 4 个字符的字母数字代码

问题描述

我正在尝试创建一个包含我的客户序列号之一的 CSV 文件。我们将它们打印为条形码供他们使用,通常我会使用我们的条形码软件来生成数字。但是,我们使用了不同的打印方法,它需要一个包含所有要打印数字的 CSV/Excel 文件。条码如下:

MC100VGVA。

最后一位是从字符串的其余部分创建的校验位。

现在,我的问题与“VGVA”位有关。A 列是前缀 (MC),B 列是数字 (100),C 列是递增的 4 个字符 (VGVA),D 列是校验位。

我需要 VGVA 位按字母数字递增。所以,当它到达 VGVZ 时,我需要它去 VGW0。然后当它到达VGZZ时,它需要去VH00等等,直到它们到达ZZZZ,其中下一位将B列增加到101,C列将变为0000。

我尝试使用 CHAR 公式,以及 CONCATENATE 和 MID。但是,因为我对这些公式并不精通,所以我尝试编辑它们以使用 4 位数字一直失败。

如果需要,我不反对使用 VBA,但这不是我曾经使用过的东西,所以你必须原谅我的任何无知。

如果您需要更多信息,请告诉我。谢谢!

标签: excelvbaexcel-formulaincrement

解决方案


看起来您正在尝试创建一个新基,该基基于 27 位数字(0 以及从“A”到“Z”的所有字母)。所以我建议你创建一个从和到 27 位系统的转换。

让我首先解释一下我在八进制编号(8 位,从 0 到 7)中的意思:在那个系统中,我们从以下开始(只是一些示例):

a=0011
b=1237
c=1277

这些数字的含义是:

a equals 0*8^3 + 0*8^2 + 1*8^1 + 1*8^0 = 9, so:
a+1 equals 10, and converting this to octal numbering yields:

0012

b   equals 1*8^3+2*8^2+3*8^1+7*8^0 = 671, so:
b+1 equals 672, and converting this to octal numbering yields:

1240

c   equals 1*8^3 + 2*8^2 + 7*8^1 + 7*8^0 = 703, so:
c+1 equals 704, and converting this to octal numbering yields:

1300

我建议对您的 27 位系统执行完全相同的操作,例如:

VGZZ   equals 22*27^3 + 7*27^2 + 26*27^1 + 26 = 438857
VGZZ+1 equals 438858, and converting this to 27-digit numbering yields:

VH00

您可以使用自己开发所需的 VBA 函数来执行此操作。从字符串到普通数字的转换是显而易见的,反之,您可以使用=MOD(...,27^3)和其他类似的功能。


推荐阅读