我正在尝试根据课程、日期和时间生成批次 ID。具有相同
Course+Date+Time
组合的所有行应具有相同的批次 ID。所有后续组合都应该有增量 ID
Batch ID = LEFT(C2,3)&TEXT(<code formula>,"000")
没有 VBA,只有 Excel 2016 公式。
样本数据快照
有点牵强,但尝试一下
F2
:
=IF(COUNTIFS(C$2:C2,C2,D$2:D2,D2,E$2:E2,E2)>1,LOOKUP(2,1/((C$1:C1=C2)*(D$1:D1=D2)*(E$1:E1=E2)),F$1:F1),UPPER(LEFT(C2,3))&TEXT(MAX(IFERROR((LEFT(F$1:F1,3)=LEFT(C2,3))*RIGHT(F$1:F1,3),0))+1,"000"))
通过 CtrlShiftEnter
输入通过三个步骤来满足您的要求,而不是单个公式,会更容易且更具可读性。
根据课程、日期和时间创建唯一 ID。
公式:
=连接(上(左($C3,3)),文本($D3,“ddmmyy”),文本($E3,“hhmm”))
细分:
LEFT($C3,3) - 获取课程的前三个字符
UPPER() = 将课程的前三个字符设为大写
TEXT($D3,"ddmmyy") = 获取日期,将其转换为文本并应用格式
TEXT($E3,"hhmm") = 花点时间,将其转换为文本并应用格式
创建唯一 ID 和批次 ID 的查找表
复制步骤 1 中创建的所有唯一 ID
将它们粘贴到与您的数据分开的新列中
在数据菜单选项卡上,选择数据工具中的删除重复项
添加批次 ID 进行查找。这样,如果使用“从 A 到 Z 排序”对唯一 ID 进行排序,则可以通过公式生成批次 ID。
请参阅附图。
查找唯一ID以获取批次ID
=spl("=(t=E(?).group(Course).(~.group(Date,Time)),t.conj(~.news(~;Course,Date,Time,left(Course,3)/string(t.~.#,""000""):'Batch ID')))",A1:C8)