试图find范围内的string的最大值

好的,我已经用尽了Excel VBA编码方面的微弱知识,一直没能弄清楚这个解决scheme。

作为表的一部分,我有一个单列的值范围。 此列中的值是一组连续的string,例如:

ABC-001 ABC-002 XYZ-001 EFDDGE-001 ABC-003 XYZ-002 ABC-004 

我需要做的是在下一行中分配一个值,它是组中的下一个值。

例:

  1. 如果下一个项目是“ABC”项目,我需要列中的值为ABC-005
  2. 如果下一个项目是“EFDDGE”项目,我需要列中的值为EFDDGE-002等。

列中的值按照组的升序排列(即XYZ-005不会在XYZ-003之前)。

我一直在使用Range.Find方法,但我似乎无法让它正常工作。

下面是表格示例部分的屏幕截图:(编辑:显然我不能发布图片,因为我的声望不是10或更高!)

尝试绘制这一系列的列:

[下一个ID] [项目ID] [描述] [处置] [原始] [最终] [重量]

回答一些问题:是的,我的确在尝试在表中的下一个可用行中添加项目ID。

根据“Disposition”值,“Item ID”的组部分由VLookup确定到与“Original”或“Final”列中的条目相关的“LocationID”表中。

从上面的屏幕截图中可以看到,实际上我设法实现了一个确定“Next ID”的可行方法,然后让我的VBA userform代码复制该值并将其粘贴到相邻的“Item ID”列中。 它的工作,但它是丑陋的。 这是膨胀的公式(深吸一口气):

= IF(NOT(ISERROR(CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE), “ – ”,TEXT(SUMPRODUCT((的ItemID> VLOOKUP(IF(NOT( ISIDLANK(G13)),G13,F13),LocationID,2,FALSE)) (ItemID < 999 “)))+ 1,” 000 “)))),(CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE),” – ”,TEXT(SUMPRODUCT (ItemID> VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE)) (ItemID <= CONCATENATE ,LocationID,2,FALSE),“ – 999”)))+ 1,“000”))),“”)

所以…我强迫这个工作,但我想(希望)在用户表单中的一点VBA代码将避免这样一个混乱的方法的需要。

顺便说一句,感谢你们所有人甚至看到这个问题,并提出相关的问题,并提供可能的解决scheme。 -法案

我需要做的是在下一行中分配一个值

很确定你的意思是下一 。 假设,尝试

 =LEFT(A1,FIND("-",A1))&TEXT(VALUE(MID(A1,FIND("-",A1)+1,3))+1,"000") 

它看起来很凌乱。 让我们稍微分解一下:

 =LEFT(A1,FIND("-",A1)) ; isolates the non-numerical portion =VALUE(MID(A1,FIND("-",A1)+1,3)) ; isolates the numerical portion, converts text to number 

剩余的代码连接两个部分,在我们隔离的数字中加上一个,将其转换回文本,同时确保保留3位数字格式。

如果你真的需要VBA,我们可以去那里。 技术是一样的。