关于excel中如何动态生成订单号的问题

比如今天是2012-01-16号,订单号生成规律为"S"+年份(4位)+月份(2位)+日期(2位)+编号(2位)。日期可是使用today()产生,但是订单号中引用month()和day()时可能产生一位数的情况,比如10月以前都是只有个位数,但是订单号需要2位数,那么前面必须补"0",但是需要怎么写函数呢?

1、首先用TODAY()函数生成的订单号会随着系统时间的变化而变化,不适合生成固定的订单号;
2、要补0很简单,可用公式:=RIGHT(0&MONTH(TODAY()),2)来实现;
3、如果非要用TODAY()来生成订单号,每天下班前把订单号全部数值粘贴实现。
完整的公式为:="S"&YEAR(TODAY())&RIGHT(0&MONTH(TODAY()),2)&RIGHT(0&DAY(TODAY()),2)&RIGHT(0&ROW(),2)追问

能否解释下RIGHT的用法

追答

RIGHT
全部显示全部隐藏
也应用于:

RIGHTB

RIGHT 根据所指定的字符数返回文本字符串中最后一个或多个字符。

RIGHTB 根据所指定的字符数返回文本字符串中最后一个或多个字符。此函数用于双字节字符。

语法

RIGHT(text,num_chars)

RIGHTB(text,num_bytes)

Text 是包含要提取字符的文本字符串。

Num_chars 指定希望 RIGHT 提取的字符数。

Num_bytes 指定希望 RIGHTB 根据字节所提取的字符数。

说明

•Num_chars 必须大于或等于 0。
•如果 num_chars 大于文本长度,则 RIGHT 返回所有文本。
•如果忽略 num_chars,则假定其为 1。
示例 (RIGHT)

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法
创建空白工作簿或工作表。请在“帮助”主题中选取示例。不要选取行或列标题。
从帮助中选取示例。按 Ctrl+C。在工作表中,选中单元格 A1,再按 Ctrl+V。若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。

1
2
3
A
数据
销售价格
股票数
公式 说明(结果)
=RIGHT(A2,5) 第一个字符串的最后 5 个字符 (Price)
=RIGHT(A3) 第二个字符串的最后一个字符 (r)

示例 (RIGHTB)

=RIGHTB(" ",2) 等于“ ”

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-13
用宏解决。
在Excel中,同时按Alt和F11进入宏界面,在左上窗口找到本工作簿的名字,里面有个ThisWorkbook,双击它,在右边窗口粘贴如下代码:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("F1") = Range("F1") + 1 '请把F1改为你实际存放单号的单元格
End Sub
回到Excel。这可以实现,只要存盘,单元格F1就在原来的数字上加1。

如果一天要存盘几次,而打印只有一次,建议将代码改为:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Range("F1") = Range("F1") + 1
End Sub
这个可以实现:一点打印,F1自动加1,然后打印。(因此,原来的单号要小1号)。
第2个回答  2012-01-16
如果用公式,编号会随时间变动的,所以要用宏事件:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = Range("A1").Column Then
Application.EnableEvents = False
'手动输入两位数编号,宏修改为S+年+月+日+编号
If Len(Target.Value) = 2 Then Target.Value = "S" & Format(Now(), "YYYYMMDD") & Target.Value
Application.EnableEvents = True
End If
End If
End Sub
第3个回答  2012-01-16
="s"&YEAR(today())&TEXT(MONTH(today()),"00")&TEXT(DAY(today()),"00")&TEXT(A1,"00")

其中A1就看情况了,到时候你的那最后的两位数要如何处理,目前只要在B1处输入1,2,3,4,5,6,7,8,9就行了
第4个回答  2012-01-16
="S"&text(日期,"yyyymmdd")&编号

如日期在A1
="S"&text(A1,"yyyymmdd")&“F4”
相似回答